From bf346147e9a3687df9991646526dcd1822d479de Mon Sep 17 00:00:00 2001 From: yqrashawn Date: Mon, 5 Sep 2022 15:58:35 +0800 Subject: [PATCH] feat: add messages gap component (#13860) --- .prettierrc.js | 5 +- ios/Podfile.lock | 2 +- .../images/icons/message-gap-info12@2x.png | Bin 0 -> 842 bytes .../images/icons/message-gap-info12@3x.png | Bin 0 -> 1282 bytes .../ui/message-gap-circle-bg-dark@2x.png | Bin 0 -> 3051 bytes .../ui/message-gap-circle-bg-dark@3x.png | Bin 0 -> 3358 bytes .../ui/message-gap-circle-bg-light@2x.png | Bin 0 -> 3086 bytes .../ui/message-gap-circle-bg-light@3x.png | Bin 0 -> 3415 bytes .../images/ui/message-gap-hborder-dark@2x.png | Bin 0 -> 3076 bytes .../images/ui/message-gap-hborder-dark@3x.png | Bin 0 -> 3222 bytes .../ui/message-gap-hborder-light@2x.png | Bin 0 -> 3285 bytes .../ui/message-gap-hborder-light@3x.png | Bin 0 -> 3581 bytes .../ui/message-gap-vborder-light@2x.png | Bin 0 -> 2816 bytes .../ui/message-gap-vborder-light@3x.png | Bin 0 -> 2834 bytes src/quo2/components/messages_gap.cljs | 148 ++++++++++++++++++ src/quo2/screens/main.cljs | 38 +++-- src/quo2/screens/messages_gap.cljs | 29 ++++ translations/en.json | 37 ++--- 18 files changed, 221 insertions(+), 38 deletions(-) create mode 100644 resources/images/icons/message-gap-info12@2x.png create mode 100644 resources/images/icons/message-gap-info12@3x.png create mode 100644 resources/images/ui/message-gap-circle-bg-dark@2x.png create mode 100644 resources/images/ui/message-gap-circle-bg-dark@3x.png create mode 100644 resources/images/ui/message-gap-circle-bg-light@2x.png create mode 100644 resources/images/ui/message-gap-circle-bg-light@3x.png create mode 100644 resources/images/ui/message-gap-hborder-dark@2x.png create mode 100644 resources/images/ui/message-gap-hborder-dark@3x.png create mode 100644 resources/images/ui/message-gap-hborder-light@2x.png create mode 100644 resources/images/ui/message-gap-hborder-light@3x.png create mode 100644 resources/images/ui/message-gap-vborder-light@2x.png create mode 100644 resources/images/ui/message-gap-vborder-light@3x.png create mode 100644 src/quo2/components/messages_gap.cljs create mode 100644 src/quo2/screens/messages_gap.cljs diff --git a/.prettierrc.js b/.prettierrc.js index 23fee66cf1..701869e460 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -1,6 +1,7 @@ module.exports = { bracketSpacing: false, - jsxBracketSameLine: true, + bracketSameLine: true, singleQuote: true, trailingComma: 'all', - }; \ No newline at end of file + tabWidth: 4, +}; diff --git a/ios/Podfile.lock b/ios/Podfile.lock index fa134b6ecc..df45d1dc77 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -640,7 +640,7 @@ SPEC CHECKSUMS: FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e Folly: b73c3869541e86821df3c387eb0af5f65addfab4 - glog: 36ce0530c6d2c3a5a4326885ef4069564887a1db + glog: 64a900d72fb14cd1b2cdf3b717a5555ceb889d49 HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352 Keycard: ac6df4d91525c3c82635ac24d4ddd9a80aca5fc8 libwebp: 60305b2e989864154bd9be3d772730f08fc6a59c diff --git a/resources/images/icons/message-gap-info12@2x.png b/resources/images/icons/message-gap-info12@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..21bb6d544fa83f5a90665a38aa9bc2a507fc96e0 GIT binary patch literal 842 zcmV-Q1GW5#P)^?m3}tEu6a;FQj+s)R zttu!C2`X|W$VcPYzQ?^w9hH6%H;wum?6ZA$KmYFD`@I7=C9pW1CT4zRT3#c|Ib=`> zM-Fn-2hKftbCM0k%c(mysR6kVqx||B^J@GsZVAmc_s%8 zhv^v^v>*uAO^{}-0jwpM5E8P zY`tEcK;UU2&@n81-CAGSc=y1AE*O8jkqbe~sfk1324|hZ(u<3=14N`Gn@Z$~grTVI z=>Ed;?%&77h*X&jj6A6$va;7)AZ2`SCt9wPkPv7LjiotI$ozC=a>~{?JwsE79lXSnK}u z=9(|lL@Dw$mZrOA+H25na8${w6d{W9^ozBhZmrw6xO)_#Dib^rTA&nBWYB$i{$!DM z7^1-9a7y627sWaqJF2Xo-~bHmW1Ng6f)9 zuRo$TnQAAzNtJ=DM5>H>Jx?8>N6=WBgW4E|D^%M5$s=cHu*g8TB)3|&`wE$^6}Yv%hm$|TN>f@e!?>;ppuJqAWbZkn%W+Ev2o=O*9k;NkqIe(v0%am> UVY7S@JOBUy07*qoM6N<$g3SPYW&i*H literal 0 HcmV?d00001 diff --git a/resources/images/icons/message-gap-info12@3x.png b/resources/images/icons/message-gap-info12@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..88373e558e77ae0b05648b85cbe2ebe5fe39fadd GIT binary patch literal 1282 zcmV+d1^xPoP)QiU3l2%Y{RTkjjCc_+#L}p)wY?+=v7% zifM`jz0{|Kri3K8=$3OZ#M7t~R?kDf&eHoP^aBvV-aZzNQwnE&p;}4862Z5vW1-ut-@jG#`+3`d7Z>lx z1<^ie1||UZ7-I$7G>aP3Fl3Y+c-~RdPnY~v%Sqp`hn?aIJ;Dl|j|NhhIzn};Dmy@o?wOHJnR+4v4T$9J-#{N6ok z0L0bmT@V~9t4Arce!^#CcGLyJ$3H@bW`LMlBIsH7oB_?QrlxbyXJK}9K~%ZX0A{e} z9vs)DJujVeQ;VzhxAbHdI#6=)f$*MZQj=}h*=y<8t&0oyCvkPlAQ@4)A>0ATstC@{ z3q!)i+;aisHVjx;zT9JrSaFP^0(^Y@znHt4FnXEvsZAKLoP{V0_dWwP#zVn(>nXPE zDfh73=yj6PRwC5e7J@p9RB&xVMNkMn<{noxv*#tHU6pAq=N=1cjX8kHg^h?ey?^@b zt^E|f8w>V63pJb+>oho8J6M05kX`6fM_I*(C1l+tPBn2NXaQIIE!f=GqxD-%P?bRk zkP6LkFSvegn37pkj+?@3E(eekOA(_Jh9Qdzp)%?K3O!IyD{HjpgO*L|Yhpje)jj1_ z7?21IU3CTrFq57xcs<$qOLs?MNJ2+d_oCcXi-d5h>fgu-JqAM(tC`A+5~A(a0p%X( z9^)PeLlQM>s!svi-c*2ZmQMZSrWsxB?AQOFgaIpg`Qel|y*uS{P5~}05mOVka<#l# zOu&HUjUEN+j7Sdcm1tTEq1+d)aR8>TWv)hV!2tBJY(wcm8;XXdtksqej6+=*MGBR= z&9`guL8Lk%+fVB0k!ASSTu0Tg)vcta*IZYNs+rGblUFwSRvTx(eR_fsdZ7+S^DCZt zP1C)&qLpuAnDH1rnJ5`^_+LV=;beBKCr{?wffT;8LdrM2ziH{$aNsjy>2uy03YTr@ zjUOjE>hxMExsdx%5~=>z``tl1fUO|W?Q)@KGwEnoO%+BBE5yqKsb+A#fG%Xv8o7YA z(RMdeZMt;h-T~&mGa?b< ziIywe6e#fQ%25ZHUO6e}ff;P@Rjuq$2!)yL+YEFOlOJE{;W&$iW sh3%>ztTQ1abQdSGTlw{W+W~X+0w$s@{B_1uxBvhE07*qoM6N<$g8da?CIA2c literal 0 HcmV?d00001 diff --git a/resources/images/ui/message-gap-circle-bg-dark@2x.png b/resources/images/ui/message-gap-circle-bg-dark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5912ef9bfcad5480e698876bece6086aeff67290 GIT binary patch literal 3051 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 literal 0 HcmV?d00001 diff --git a/resources/images/ui/message-gap-circle-bg-dark@3x.png b/resources/images/ui/message-gap-circle-bg-dark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..fef2d8f0f025b7345422f72d6ba6d11ff6a8b99b GIT binary patch literal 3358 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 literal 0 HcmV?d00001 diff --git a/resources/images/ui/message-gap-circle-bg-light@2x.png b/resources/images/ui/message-gap-circle-bg-light@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1d0e919437fbf10f43c27f248f60ff71cadfd51e GIT binary patch literal 3086 zcmV+p4Ds`cP)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaet>Ndc5*Lm~hG0WV2JK~yM_eUl+hL@^Xa&+WWX7*+rVJ!bZRfdq#d!46Oe1O|mb zumcj35tAS=kYHE=At7iI5G(*RzZcQp$^U;cR5dT{>FYhMYy*&J$3K&}xqbS?D1a>l zVc4Ou0(kE)#)7=8sGS%>@*ShXIUpcx_AB`wd&n^)+~okF#5tfqJ}do*6E&m&E^SDt zaPesmFl{6wWKDaNcN8SWNh>i~GA84J)uw zIX^^+B|!;%lcrR@2Z2k_tcWv&@H1l+m?@(Y__PN8GT_h^XZqr1ReRmH9v% zU2*O|0FFtd0ADeNz+B)G_-T*R?o#(9bj0lNR;vUE-414Ruz1^@s6ZStO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaet>Ndc5*Lm~hG0(eP8K~y-6t(8xRPGK0uf9JXHC)tqyTNX@)lD(u+78X7>77F3xy2}jHHwuiAa|et7u&#m5;TdB3wz%X#REzn{Drnqr}E9U0@d!+ zv|bZMpTg&W{-p42V5thX1DJ<_V0KtK0v>UxW65wq=E5Y}8l}5HWmk4MH^4aBxB`MX z$ZcS5l6(uXTH&XGSYByc7M6x2LIsxv?`d&0kT=+%!s`QcAAqdk$gqvdjD>vMuv}|XLt8DhoO&_3h7ySF zlD`t(9SRRRYnEC*8^E`U_&qFb!ancJret`DIZ#y_ccG{O>~8#3YIHHmn5dvW>iRaO zZB2yl5)34TZ`dqUE3b-18xhXh0eR?=;lrJ(t2V>Cl;73c_U^{Qo&8c tS`~g0;FTCCSP_;k3gc2&^k4s3KLLSA5wW_}_bdPa002ovPDHLkV1g5@b3On7 literal 0 HcmV?d00001 diff --git a/resources/images/ui/message-gap-hborder-dark@2x.png b/resources/images/ui/message-gap-hborder-dark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..987875372f4f2c13e82cd9fc095dc50a83ba6511 GIT binary patch literal 3076 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 T*M<&300000NkvXXu0mjfebYRi literal 0 HcmV?d00001 diff --git a/resources/images/ui/message-gap-hborder-light@3x.png b/resources/images/ui/message-gap-hborder-light@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..4f02fa4092f15b6d08d87f5309e5f0ffd147e4c3 GIT binary patch literal 3581 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 DlBwE6 literal 0 HcmV?d00001 diff --git a/resources/images/ui/message-gap-vborder-light@2x.png b/resources/images/ui/message-gap-vborder-light@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c564acbbbc4d70e02c1d1123441b59077ac258ea GIT binary patch literal 2816 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 literal 0 HcmV?d00001 diff --git a/src/quo2/components/messages_gap.cljs b/src/quo2/components/messages_gap.cljs new file mode 100644 index 0000000000..03b5d77d5f --- /dev/null +++ b/src/quo2/components/messages_gap.cljs @@ -0,0 +1,148 @@ +(ns quo2.components.messages-gap + (:require + [oops.core :refer [oget]] + [quo.react-native :as rn] + [quo.theme :as theme] + [quo2.components.icon :as icon] + [quo2.components.text :as text] + [quo2.foundations.colors :as colors] + [reagent.core :as reagent] + [status-im.i18n.i18n :as i18n] + [status-im.ui.components.react :refer [pressable-class]] + [status-im.utils.handlers :refer [>evt]])) + +;;; helpers +(def themes + {:light {:icon colors/neutral-40 + :time colors/neutral-50 + :background colors/neutral-5} + :dark {:icon colors/neutral-60 + :time colors/neutral-40 + :background colors/neutral-95}}) + +(defn get-color [key] + (get-in themes [(theme/get-theme) key])) + +(def ui-images + {:light {:horizontal (js/require "../resources/images/ui/message-gap-hborder-light.png") + :vertical (js/require "../resources/images/ui/message-gap-vborder-light.png") + :circles (js/require "../resources/images/ui/message-gap-circle-bg-light.png")} + :dark {:horizontal (js/require "../resources/images/ui/message-gap-hborder-dark.png") + :circles (js/require "../resources/images/ui/message-gap-circle-bg-dark.png")}}) + +(defn get-image [key] + (get-in ui-images [(theme/get-theme) key])) + +;;; components +;;;; borders +(defn hborder [{:keys [type style]}] + [rn/image {:source (get-image :horizontal) + :resize-mode :repeat + :style (merge {:position :absolute + :left 0 + :padding-horizontal 4 + :overflow :hidden + :width "110%" + :height 8 + :margin-left -4} + (if (= type :top) + {:top 0} + {:transform [{:rotateZ "180deg"}] + :bottom 0}) + style)}]) + +(defn vborder [type body-height] + (let [height @body-height + img (get-image :vertical)] + (when (and img height) + [rn/image {:source img + :resize-mode :repeat + :style (merge + {:position :absolute + :top 4 + :height (- height 8) + :width 4} + (if (= type :left) + {:left 0} + {:transform [{:rotate "180deg"}] + :right 0}))}]))) + +;;;; others +(defn circle [] + [rn/view + {:width 8 + :height 8 + :border-width 1 + :margin 4 + :flex 0 + :border-color (get-color :icon) + :border-radius 50}]) + +(defn timestamp [str] + [text/text {:size :label + :style {:text-transform :none + :color (get-color :time)}} str]) + +(defn info-button [on-press] + [pressable-class + {:on-press on-press} + [icon/icon "message-gap-info" {:size 12 :no-color true :container-style {:padding 4}}]]) + +;;;; left/right +(defn left [] + [rn/view {:flex 0 + :padding-left 11.5 + :margin-right 20.5 + :align-items :center + :justify-content :space-between} + [circle] + [rn/image {:style {:flex 1} :source (get-image :circles) :resize-mode :repeat}] + [circle]]) + +(defn right [timestamp-far timestamp-near chat-id gap-ids on-info-button-pressed] + [rn/view {:flex 1} + [rn/view + {:flex-direction :row + :align-items :center + :justify-content :space-between + :margin-right 2} + [timestamp timestamp-far] + (when on-info-button-pressed [info-button on-info-button-pressed])] + + [pressable-class + {:style {:flex 1 :margin-top 16 :margin-bottom 20} + :on-press #(when (and chat-id gap-ids) + (>evt [:chat.ui/fill-gaps chat-id gap-ids]))} + [text/text + (i18n/label :messages-gap-warning)]] + + [timestamp timestamp-near]]) + +;;; main +(defn messages-gap + "if `gap-ids` and `chat-id` are provided, press the main text area to fetch messages + if `on-info-button-pressed` fn is provided, the info button will show up and is pressable" + [{:keys [timestamp-far + timestamp-near + gap-ids + chat-id + on-info-button-pressed + style]}] + (let [body-height (reagent/atom nil)] + (fn [] + [rn/view + {:on-layout #(reset! body-height (oget % "nativeEvent.layout.height")) + :overflow :hidden} + [hborder {:type :top}] + [hborder {:type :bottom}] + [rn/view (merge {:width "100%" + :background-color (get-color :background) + :flex-direction :row + :padding 20 + :margin-vertical 4} + style) + + [left] + [right timestamp-far timestamp-near chat-id gap-ids on-info-button-pressed]] + [vborder :left body-height] + [vborder :right body-height]]))) diff --git a/src/quo2/screens/main.cljs b/src/quo2/screens/main.cljs index 7468eb7f45..e729b33565 100644 --- a/src/quo2/screens/main.cljs +++ b/src/quo2/screens/main.cljs @@ -1,28 +1,29 @@ (ns quo2.screens.main - (:require [quo.react-native :as rn] - [quo.theme :as theme] + (:require [quo.components.safe-area :as safe-area] + [quo.core :as quo] [quo.design-system.colors :as colors] - [re-frame.core :as re-frame] - [quo2.screens.button :as button] - [quo2.screens.token-overview :as token-overview] - [quo2.screens.text :as text] - [quo2.screens.tabs :as tabs] - [quo2.screens.status-tags :as status-tags] - [quo2.screens.context-tags :as context-tags] - [quo2.screens.group-avatar :as group-avatar] + [quo.react-native :as rn] + [quo.theme :as theme] [quo2.screens.activity-logs :as activity-logs] - [quo2.screens.token-tag :as token-tag] + [quo2.screens.button :as button] + [quo2.screens.community-card-view :as community-card] + [quo2.screens.context-tags :as context-tags] [quo2.screens.counter :as counter] - [quo2.screens.wallet-user-avatar :as wallet-user-avatar] + [quo2.screens.filter-tags :as filter-tags] + [quo2.screens.group-avatar :as group-avatar] [quo2.screens.icon-avatar :as icon-avatar] - [quo2.screens.segmented :as segmented] [quo2.screens.info-message :as info-message] [quo2.screens.information-box :as information-box] - [quo.components.safe-area :as safe-area] + [quo2.screens.messages-gap :as messages-gap] [quo2.screens.permission-tag :as permission-tag] - [quo2.screens.community-card-view :as community-card] - [quo2.screens.filter-tags :as filter-tags] - [quo.core :as quo])) + [quo2.screens.segmented :as segmented] + [quo2.screens.status-tags :as status-tags] + [quo2.screens.tabs :as tabs] + [quo2.screens.text :as text] + [quo2.screens.token-overview :as token-overview] + [quo2.screens.token-tag :as token-tag] + [quo2.screens.wallet-user-avatar :as wallet-user-avatar] + [re-frame.core :as re-frame])) (def screens [{:name :quo2-texts :insets {:top false} @@ -42,6 +43,9 @@ {:name :quo2-status-tags :insets {:top false} :component status-tags/preview-status-tags} + {:name :quo2-messages-gap + :insets {:top false} + :component messages-gap/preview-messages-gap} {:name :quo2-context-tags :insets {:top false} :component context-tags/preview-context-tags} diff --git a/src/quo2/screens/messages_gap.cljs b/src/quo2/screens/messages_gap.cljs new file mode 100644 index 0000000000..9f87c7ad38 --- /dev/null +++ b/src/quo2/screens/messages_gap.cljs @@ -0,0 +1,29 @@ +(ns quo2.screens.messages-gap + (:require + [quo.previews.preview :as preview] + [quo.react-native :as rn] + [quo2.components.messages-gap :as quo2] + [reagent.core :as reagent])) + +(def descriptor [{:label "Timestamp Far" + :key :timestamp-far + :type :text} + {:label "Timestamp Near" + :key :timestamp-near + :type :text}]) + +(defn preview [] + (let [state (reagent/atom {:timestamp-far "Jan 8 · 09:12" :timestamp-near "Mar 8 · 22:42" :on-info-button-pressed identity})] + (fn [] + [rn/view {:margin-bottom 50} + [rn/view {:padding 16} + [preview/customizer state descriptor]] + [rn/view {:padding-vertical 60 + :align-items :center} + [quo2/messages-gap @state]]]))) + +(defn preview-messages-gap [] + [rn/view {:flex 1} + [rn/flat-list {:flex 1 + :header [preview] + :key-fn str}]]) diff --git a/translations/en.json b/translations/en.json index 9ab5558121..6ff9d2ed98 100644 --- a/translations/en.json +++ b/translations/en.json @@ -11,6 +11,7 @@ "account-color": "Account color", "anyone": "Anyone", "messages-from-contacts-only-subtitle": "Only people you added as contacts can start a new chat with you or invite you to a group", + "messages-gap-warning": "Some messages might be missing", "accept-new-chats-from": "Accept new chats from", "account-name": "Account name", "account-settings": "Account settings", @@ -547,7 +548,7 @@ "migration-successful": "Migration successful", "migration-successful-text": "Account succesfully migrated to Keycard", "skip": "Skip", - "password-placeholder":"Password...", + "password-placeholder": "Password...", "confirm-password-placeholder": "Confirm your password...", "enter-pin": "Enter 6-digit passcode", "enter-puk-code": "Enter PUK code", @@ -613,7 +614,7 @@ "group-chat-members-count": "{{selected}}/{{max}} members", "group-chat-name-changed": "**{{member}}** changed the group's name to **{{name}}**", "group-chat-no-contacts": "You don't have any contacts yet.\nInvite your friends to start chatting", - "leave-chat":"Leave chat", + "leave-chat": "Leave chat", "leave-confirmation": "Leave {{chat-name}}", "leave-chat-confirmation": "Chat history will be removed from your device. After rejoining you won't be able to retrieve any of your history.", "group-chat-all-contacts-invited": "All your contacts are already in the group", @@ -1005,7 +1006,7 @@ "paired-devices": "Paired devices", "pairing": "Pairing", "pairing-card": "Pairing card", - "pairing-code-placeholder":"Pairing code...", + "pairing-code-placeholder": "Pairing code...", "pairing-code_error1": "Pairing codes don't match.", "confirm-pairing-code-placeholder": "Confirm your pairing code...", "pairing-go-to-installation": "Go to pairing settings", @@ -1434,10 +1435,10 @@ "give-permissions-camera": "Give permission\nto access camera", "photos": "Photos", "image": "Image", - "sign-anyway" : "Sign anyway", - "tx-fail-description1" : "This transaction is likely to fail. Sign at your own risk using custom network fee.", - "tx-fail-description2" : "This transaction is likely to fail. Set a custom network fee to sign at your own risk.", - "set-custom-fee" : "Set custom fee", + "sign-anyway": "Sign anyway", + "tx-fail-description1": "This transaction is likely to fail. Sign at your own risk using custom network fee.", + "tx-fail-description2": "This transaction is likely to fail. Set a custom network fee to sign at your own risk.", + "set-custom-fee": "Set custom fee", "not-enough-snt": "Not enough SNT", "add-new-contact": "Add new contact", "you-dont-have-contacts": "You don’t have any contacts yet.", @@ -1457,10 +1458,10 @@ "update-to-see-image": "Update to latest version to see a nice image here!", "update-to-listen-audio": "Update to latest version to listen to an audio message here!", "update-to-see-sticker": "Update to latest version to see a nice sticker here!", - "webview-camera-permission-requests" : "Webview camera permission requests", - "webview-camera-permission-requests-subtitle" : "When enabled, websites and dapps can ask to use your camera", - "page-would-like-to-use-camera" : "would like to use your camera", - "page-camera-request-blocked" : "camera requests blocked. To enable camera requests go to Settings", + "webview-camera-permission-requests": "Webview camera permission requests", + "webview-camera-permission-requests-subtitle": "When enabled, websites and dapps can ask to use your camera", + "page-would-like-to-use-camera": "would like to use your camera", + "page-camera-request-blocked": "camera requests blocked. To enable camera requests go to Settings", "nickname": "Nickname", "add-nickname": "Add a nickname (optional)", "nickname-description": "Nicknames help you identify others in Status.\nOnly you can see the nicknames you’ve added", @@ -1505,11 +1506,11 @@ "statuses-descr": "Share what’s on your mind and stay updated with your contacts", "new-status": "New status", "chat-link-previews": "Chat link previews", - "you-can-choose-preview-websites" : "You can choose which of the following websites can preview link of descriptions and pictures in chats", - "previewing-may-share-metadata" : "Previewing links from these websites may share your metadata with their owners", - "websites" : "Websites", - "enable-all" : "Enable all", - "disable-all" : "Disable all", + "you-can-choose-preview-websites": "You can choose which of the following websites can preview link of descriptions and pictures in chats", + "previewing-may-share-metadata": "Previewing links from these websites may share your metadata with their owners", + "websites": "Websites", + "enable-all": "Enable all", + "disable-all": "Disable all", "warning-sending-to-contract-descr": "The address you entered is a smart contract, sending funds to this address may result in loss of funds. To interact with a DApp, open the DApp in the Status DApp Browser.", "dont-ask": "Don't ask me again", "enable-link-previews": "Enable link previews in chat?", @@ -1517,7 +1518,7 @@ "external-storage-denied": "Access to external storage is denied", "timeline": "Timeline", "main-account": "Main account", - "ethereum-address":"Ethereum address", + "ethereum-address": "Ethereum address", "default-assets": "Default ERC20 and ERC721", "increase-gas": "Increase Gas", "cancelling": "Cancelling", @@ -1719,7 +1720,7 @@ "minimum-received": "Minimum received", "powered-by-paraswap": "Powered by Paraswap", "priority": "Priority", - "switch-to-simple-interface":"Switch to simple interface", + "switch-to-simple-interface": "Switch to simple interface", "transaction-fee": "Transaction fee", "swap-details": "Swap details", "slippage": "Slippage",