From 569355a3182bc12e50a54249882e3d68a72c2b28 Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Fri, 4 Sep 2020 17:07:57 +0100 Subject: [PATCH] Mobile: Add startup screen to show progress of db migration --- Assets/macOs.iconset/icon_512x512@2x.png | Bin 72992 -> 72988 bytes ReactNativeClient/images/StartUpIcon.png | Bin 0 -> 6245 bytes ReactNativeClient/images/StartUpIcon@2x.png | Bin 0 -> 10605 bytes ReactNativeClient/images/StartUpIcon@3x.png | Bin 0 -> 14723 bytes ReactNativeClient/lib/joplin-database.js | 8 ++ ReactNativeClient/root.js | 85 +++++++++++++------- Tools/generate-images.js | 23 ++++++ joplin.code-workspace | 6 +- 8 files changed, 89 insertions(+), 33 deletions(-) create mode 100644 ReactNativeClient/images/StartUpIcon.png create mode 100644 ReactNativeClient/images/StartUpIcon@2x.png create mode 100644 ReactNativeClient/images/StartUpIcon@3x.png diff --git a/Assets/macOs.iconset/icon_512x512@2x.png b/Assets/macOs.iconset/icon_512x512@2x.png index 91a6977703e6733a28dd5262d7d03da447edeb68..b5df3b305553337e4d95f0096baa04add64015ce 100644 GIT binary patch delta 17344 zcmY*=c|4Tu_y0YMWwK>ti9#a#QYy+aQz}~-tw@YgDiV?G?jh~k3?^BIC#9Z}BuSPT z6)I~bDrLsLW#7gu_x-zP)bsiNp4aR712flk&ilO2`<&}sS2?e-nXj?W;@*Q6&+4>u z^hO;XYrfAkyO>UtT&2D0sP^F{iIKG)nfAf&B9(SmqqZzvx-Iyf{PEE(g;56skC!)> zm3BVeJa4nVbXdUJu!f`*F#fx;IQh3WYoB1aU_K?V8{_k)}U7I-=ZQ;v@M6?Si^pb5>Vf8A>I(dJ5rIQ}f1t-(JJPSDSCSh0h~le318 zt+<3)6P#iY)wRzX*Btx3_!`V4a3o+hqokYR4ZL3kECo~*fQ@%BF!J5f9egV-=EwQ_ z^`BS!Vegdf-?QX2ZQ@Kg&{eiCj?H=Zaz7x-fwcYa4Gz(53d5=$4-wuEuUrGyC+;9S&yYO!Fu%D#~8u^ zSjrAD%8~%l@8Py2SX_&^(36}DdU|11+)Y+Hw|`V-#r(m+I04o@w=#JmXUU|Dw;r^X z=HT-&5N{NHj()@dxb#c!Fl*)0_<|k6c0!O*X01kBJstz8!{QI(N7@vD?s#! z7V!YG!=Yz~Iu`~_7p($WPdG4p+O)5AcW4dGmc(D(oJySAfm5-;Hgd{^vm2 z1PKX5#0tP0E%d1r$G5)<6neEC*$X!7O;@and78 zQViz!74V$_?x@%5>XY-14`-I+_K&ttz~B!wKI;*{|V9Qylk@XU47cq0WYZl>2yx!W4CdfqKY|B?b#of!Dl+@0VI@ zRaNP9Ydn7lMZ+a@ezXjKk+lpdk)b3EvCJHx2;J-epn~Nzblkt&DD6p-uJc!z_1cyp zW!TS;^FnuAv7Tx5UgXI93V1%KV|A6S`8(QLGXGu^joAyT*~E^E_<^jmZgFKavFrjI zwa7x&#R<4<15MJkviT|y?hx@=5wBXd6}`Op9jnxJ1{L`a}>Gkb%6O$S?9ywAscauv9V!T*;O(L|g0Ye;H4k0DB+ntdA~lztB@r)+g?A3A-^`-q?I+GaqGp$e4Ua(Z`{Bk!`!ta+LlMNjj&wh z`jklJ56bYQ4M#-9x(je&m0-)7#wyns!N+%mvsbXS-Ujjd8U9qwrj?+?^>|UxG0^I5 zl>7F1(+TI350rTAIc}}lrElSI;%6jYWiy$NandP{NUfOd8d$VaLji)Jx6R3Ju~#_U zw1XB9*(g5KQ`=Ion`9#R!`ZouFc;;6K}6`*3BXeCSer=gM#bRM@@&k|^O;>kho<)? z=QVb&dQ>ClWEp-hu{O)J`tSz4iu)RHh4(7b=q71M6s6sh@Gla>q3cckdcN{CQ{Q-w zJvrwmhhew1SoQ=5R9wWZ8eGA#z%VaT<(gGUT6G0n;%lR5&&{URMkkBIot!?r#b-xR z6W1KluI{>~V|L;Jhu2%Ln6dFs9vDI(Bp~l8;YLk|fAx@a^4X*5}!b zci~NEW#H*|gpjP+G6qj)ANR#YSXni!M^ttY-8s%zKuFaoP8pFE5v9WzLZnT3B#hEj z-+8-9ihTP;S+leMLXRb)spW}lyiBTh8|vIzYtI*4)efz7iX5l@VHhI;-a09B*AQyh zpb8bHvR_0uHVgKT1yXmnECbCaSr7jx2ZjS5di`W!XGi`4EXQ@TDd@J@G;06n{!wb{ z)xhLE5wt{I^6Kif0Rg5G);h&oU;egSRGfi2NZI>r@dbEOw?=Lk!I{TW6edfAXDnZL zqVtbG=S4!*1GwHj0RS+597$ zvJjZDVGuGE>7>Vc1n&*{-H-bU5(&f2%UPyUp0 zeK8oaz`qu>$V#k8+fz)+Kfi&Eq+mD4;9)O(=49dpn1+XbYAlBIJnV}h4x9=_l9RX^ z&Ae8-*gL>?By)n0?T*#(K1U9DCLaiWI2OX>@469<@_YYXq5u7tXm3zlgvA*?DEK9} z$F;cAdXCKNCD*{G7u8e(R_`X$uM5G;kw>v>I2b^HJS>{hA?fC4;IaSi$-y2 zm*Gt7vYGx%(ytczq7K2_+0u2#nl9{~)VM422Nss|UtR@}u`nAHRst0*N~|e!B>8~g zP0>7Bnyeikuh>1lS93wiVzW~A({F>E9WmMcRABFm91VM%jzg<6XP z+V661>i@x7AIh3X$DI9L3Dn3rTaNqTjujw1SO_Au8*LRM+Fp4)4{LX3Ykflol56D_3G4= z1S{>#*i@{2VJh>MKTcY2gE!7S=0jtx)mz~zaN8BwzI2>sf>~12p6?zrG`*f*SRiO6 zKZ|&LrVIQpgb&^d`y#d@pm#-Q(T8dJg%HOwSWl$fF-KrSkR`p6nhWuYy)xt0DAj;f@BS_&^v{i2iwk(f$tH zuo$@Wa6b;PSSqZPGJu3MpLQq|;De$l_q>DiXYGiimB6qeisb0@Nq}$qrI(ANIhci} zhizd?I}XuIX+Jp>{!9l!{*1!L!Z;GG0T0|*rCcJAtklKV<(vSg3G%3Losd$y}bnJtl zYpRDbboR|Xxd;pJ*}Uf$;r7Jn4IUH?%(k zKk+=T@z=dWOJ8l-+GCo=zI+VtKtC2^(!#QG>!&leKuA7|_E%!U7A#nMgYv2Mtod=z zBfn-CJJ1SGlYPck;*EZ2iF(>F;+tvjPZRJ(F;SZ#l;K7tV9hUAE1{N5{-GcUsa*g| z-O#qTkgD>iTr;>$*3tO8QP;^*#}h~wwxR&#I~arHlmbYP8Cv_)X)Kbz*tME>!+oW; z>s`84#(DFGr6xS9=87T0_-R~I#MZ5fIeU= z7-wwb`V=(_VtcLHI-lEKr*PM@>cOU1C`%@FY>3K#czwF)R_;{1iqtJP$j}7_S z_XklpQl-aM51L~z(oRdKo5l&K@v%#^&o=Gzh?#5*nfcR;^f2M4%4Aw~q|^v&ig0BA zuiJ2fgwDRH6hy9&^%-}m65q8z-=T`B)k78hSVvFp%RJ-HjAg;Ddyd=a>L0u5_-eug z*LTRYdQ#aD(T3TB#G=WA%#-QILV995dM}aVL`|ms_v0Y%VA`P=DkrM{jC8l)9#)pKvDI|k=Nl;1zF&%R9udAdl- zu~|htbw+wMJ6x)tr)o>9stm6H-`JR3>;A$v$|p-PyYqRbXnArLv9PyHyn}?!gXw27afd2wSqVjH!c6)sX;{c?}B*SY^nucQZOuNM9kd z0%_k_os)$Ot-WR421BjBA)|Xi7W+cCMwtuR!_C>}qW#DswLy53J zfa?u_WnLwJc`gadyI@ob#oTGwrXTu944hw0sP_b*a&aR%mLd1C7x!HQiDk>tO-;8Q zQv>?040t1b1;eWw&SydT?Z1k)yQuFuH2;(_+sY!$9hrW_i2X!faOq2fYgaBTdX1Pm z!)d1-R0Ez0I|(Pe6tI~;Dms8vgY{jk(e;!tM|QV`PGEI?^5$@Q-htD!l;lQy6VmBZ zk%sn_l+K;9L+JAZS3zPrr}=}$R%Y+NVN;wY3^k}@#p=5xLFi~cL~=gSKi#$+EL_ih z^dH{+)r{r9QyTSYhYC3EJaC^IfC_Ri6#IRi*)o^2X0?_6*V?Hpi7 z?5vPF+MK(3s(u_s)Qz#L8*Wjv*U9(KIy-#ZI4f$G0-3RA^1jrjijj?_C?|>xT?R{$c7Ikkor5gQEI9-Qa>9oIuX<3}ZGts0-dcHWHLJu?ab@@?|o0pj_v7 z1TGpmAn!=nJF5n16m`zB_QL;j{J;f~gxmurww_w#8iB$@YUni3r%EXYH1_Fw zjP!*6Yv zhTb~o?QPcYwmSZrBi^vybfNx`Vf>_CR59RN@+hj@1);C`YmYRK9f_nRVsq4Hyk@0&|$kzvrQ;p#Sq`zeuOu!e!;l~y> zS~j)&9P-sS^^Zb=k2S)P!|DSb^tler>WXq5_ZQo@_BE?o@H0pP@@%iyf2GiPQ9+9V zGcQ)E=^ybhwEzy+^q=wE}O>S7vk`M&iWC`aSQ%` zQWGhXnrtkv5}I3-bw(JQ1sY@BmBmbKwN7p@%~+M=eZ1JQz4PC(QxB>2vTA!8v#((wFJxZtC=&`g>F(M2Z@O^}~G@&i2-Q#XXwjF6R;P;=I#eo}Opy3lLP@*jMV-*`YIYxMV?qB(=N;L^Y0i+5Y2M}WZ1{U)A+lBf28<-8^_Y^{0@|6jjC{9;sbm;&StpEiN;z;77S00 zXX4Q*&3aay0HWNE+qUehM}O(B)O%DM?(ARl1#c3!?TuKt)kBXjZa2}A=F-oOLoIOF!8RUWks?gm*+caO$2HCKFP zJQ-UF3LY|Kz#c!?zEKMD8*5_+ktf>EPW)AI`XNNcw+fFK8-Zm9Ii?jy{s>;_T7LNj z%KXSy=9_ly5^hdj!}rzt=B3WB&R#on*yqHsF+THb3AWBl4@3!ODY+ZEHTLZfH^`wy zx-oMyBSWgg!t0U#Zw(9Lm?J5-IQDsuOfu8{O?7jam# zsqTPrRZB#cSr_39jTnPc0{=ylzW17}riOJl7e>bC=hIhJp;Ei+@0dbeh7HXNL#5n- zpZ`?!z)2YBBd9Cz@ASuW{>lW&h2JhtF%nG{rvA3IBqx5mabV4*{xneYWPK;~h0eIc z@IMyXVO4R5*>R3*$8Zr&Z)!4h4h5Gch6KHI5j&(EfBSJmIr{U!9XkHE)vuWC?B6SJ znKq8KsYbMG8-E%`%Q0|Jhd#srp)rk+f&S4wMZZHf>EFwlI|=58E-CPZxIDp+@!SSv z{uO-%yT)5L{^u^dQ3Nr;T-~j6@+JV^E&Y$K=6p4j<~3yc;_&is!|!+#40Don_rFA0 zo&1`u=$JMCPhLYCSuWxw^oWuv)8>U5aMldHuyA!Rk!v(LZ~9mn^O@WK@%@l;z7nrB|LIX}dKab(xBRtquX_s(8 z&Jj7^FKl9bw4rAAD1%AD39Yfl;>`-1vA>J_J%qQO0{Js{n`4dQ_U;L2XvZ|{MV0Gp zXRLpA^jf0SY&rUL0eqEt`B?t|c2uP$-$Xnynv`biQJmM$SL+?Jxzv|+6MC|01{Q}4 zR={-rtl{^n`C~ofBg@luRJposxp1Zya<^n*I{SqV&fRo3hSn-OYmTVmdVij(Vi97C z6P>bCTx(pAk+RiXXq-4#@xQPKl?o@8VZwP*4~7`OVR04|#NfEi$Kx?b#A|{w^3nd@ zB_=Yh<4eAsjB#q=Coq52*2L%j4!GWoYrBRz->Tx%xjcug8F2`Hlni>69emn3bNRO| z=OUlq!C-=h)r`32x7X)wSM4_}Ofk1lyE{0(*250W4$Bpe6PoZWw(9h+IKdu*U?V6v z3671<-ds={pC7mAA`AY#2(_o?3uOOiaJy&*WQ_yXK=V%3ebIl}P+kM{?IYd=&zxkB zAffMj?S?f7cX0ZC0M{JxYOadXk{6(D>3to=4L}zcSYiB5xEejHT4VOza;4b`r;^Dk z&MZ=0?CfvUs$iL5C>zcg2iIj!6~3DBTki47;q^>?0a!t{2MKBdsdt1^WgL5dkX7ep z5Pzk;&1={~AU}N)UR%eX1?PFJ%d-Df|50_(RLKIx4pD${|8@JtoSSD2m z1sZ+do7LzF>&K-c+}|u5kZvJ~53coTh-}M3Ng;Dq5+7rDog~#pSZU_*nY;6LXOH3i zhy7ZsB`aoXcQ16bvl3ur;t=8*s3%V4J$-YCXBp@yVK;*l-q?l7hWaev2vqKf43@oz?rqG6c|Eg$lV6BSxH zKb3vn0lcG3o3L>4qh713igBlk=dVJV<{NRVX!R-!SXk=Vw&$ zj?DY(gI+(w2<^WcYa4cH?)Vr+ZaRNJMz94>m(vEbZ=GTRY-MziIQ zLV?YY=Mk@73%3|MrK{kpi_q=?4-$9745{kFHn949zdZaoUuWNB=E7;Pg2ekv0;H@W zGY8E_XwmEv8T~r*?JuKhA5p>^d1$4oRga`vRVFGHbmG?unke=`M*}>>RYr` z8syMr&1_9yZ9}^Ic5xJ$ab)tV6q;Jo?wfq(5|f!3x##)O$|vPq*~q~U1APdc(=_51 zWcc>g@Ffu1^Kx{vp4-oqy+opc%1#D*^Rs@r`*_U}Zae=K_?4|MzD=?3?jhh)34{$0Jw|rFrT)B626H{)U9j zI9+f1Y_4kRDg}?3p$aJ-I@^w&b8_l)0eb?_`uA^U6fSAamVLD)L7{M60@3FM^qT23 zDd%YfMQzF1cK+n;uuDYmQGJxnlCvw@t6~dx9d+w5kJzr4D6m);(kSKA#(*J*GY$ zR9N{m@&#c8x$Fu`A&#xV^=FLFsMYZTJ~8Z(>ymBMj=?o%zP`jCS|d#qu|fy`S?A=< z17ail!z*YfOlB=GSdooYQ~TW zcpJOs(5iUH_6*X(^w@g(lycy0pAQ>xsRYB^^m2dtO!US7KM_uR1bli3@bk*QCkUHr z@P$zDZoM2V@O6>MYw9%Y`qvBp^qa}yp0Idh{N1M#C_y4K5Z~}!Z;K!`9!GQb$rNw> zG@zP~^}h!)+5YBBq%%*(M76}k`n(P~$dtwO2ViRlMw&h*KgB$7Dm-JZQyg5>>qa-- zFyLjX>>XY@*~_nu)}Tdeu=Gj4tu@QNV}5bAR!3{V+ac~(Rv!|rG!0OY&!1|B{g*)? z(q1ia%Qbp?7%}=mRq&$<&ajpEaOo+Q?))k6`zp1uxSef56(pr>@cgm^WKG{|G$+;* z1EdHOF;K(^2ii8BY%B1K6YSe&I-Lm-y2Mh>8*bArtN zjJ^pR5&##`WgQ+xdhO|FXz717b-X(Jn&`E(g(PXcCikC9I{PB%i4T6A%*Ma}&c2N1 zdZ7cf&5o2Ua4B)sIk5+soMB?wLa!&hEO(_u)Ihr!nwO1QjlWZ<#7T0^p=-ZS>){Q2 z_+YoBui^H6@N+bOC#GAV+nBs%Q>c#3@oedOPtA0(Ye)Cg7<|YsI~a1j(0t>gBlmYc zJ+!*VDXo5juev~RgT^E44tDZMnESFEIZvFH-cx}f@~R33J8s~S#SG0NdPA_0)RU{H-wU~ z4fy6O{pY9$?(JdOi07F^lJ+Pw9`Azxp~P)wU&do)J+}DJ^Y)FVO*E{;gHI!Nyx}T~ z&+J8?Th>Be*+N>fv&=E!d%Nd6?$CpHHyMnfw%MsiSB}`o4(5xW)$52S!uT!l9z*=H zj9emE$-FFf!OzId+x)#b{dvbHqNi@y=GI^R{GKE*@ae+9x{Zzec}x5F%6Q(9=|V?2 z6>fkW=5a&*!p5oD`Po@#E;tiDXWo9NMI$sf(vC5C6y7Yx3-@On_)+MVJ2$e?jyL<| z<_zs5BU{l*=ah9;&*Kdw2kR7oHKNJBED-(A-+C$m?@9ziA33w!&b4N$ zW0UlJL^-II{G7etF&%!M*AV?EZrQ`1k21k!5r^KGZ_Fr^TlO;`Tj|+bN?ai`FF@x` z*nN44gdUT&oS689&GG7z>)afDI3cU?*ck<^-3E8LM{92vXk=NqC^Qr$Y)M@%^I|!@ z?#tn)B>N~kbLd-on}Kml^E&wF=HXe;6f?IW>{a{Q3#gdU!ZW=G&HV?@`2LKNSwNHk z?EdP)&z8_R#ifSlX!TN4e4p8Qzd=OzIgUja*37HEhi?L`L}=3`Uz zTno0vdqit*2V;o@W6%{!QWVd=HIZbmvoG)Ps|l33Y%j|=x56rkxO5%5T3q2%ly=LO zf=g(b_AN5s`;R3m`%l=C(f69ZzHGWI4&8p-*xa++QwNeaEGP*6?lgU~2zKv*y?mjv znfy5}-4mW~xj8iQtes>wNSi$76{!BbxvDxQnb7Bl8!nw30cq3A-!sU(=9ycOiR4RF zVM&BTFMq{6Cxn(>6jZL6JKpiF9c-K-TM6 z;ZrO|yq;^c6Y&aqgZ+z>IbIWY6~$yT^2PcG53|J#r3ZDzpIGM5RrT6)4uP*5rLi@h z!&=odm!7x=Ga}`?*4roz=HpIVoR5!_h?hMRyU8M*)HypuY`04o+1MsnTdPqBkIWG2 zjMog75K6Cb%Z3$B>35WFpb@_^%%+VVNChLHZt72Zy_djP>nXb z@|s|o46knxMGhe$A zuVX^x?#BBx#r4fFr`vD|122XOm8}gAul&(Ra(=Z_PF%Ihx%BQ*)5xuM3q5V?Ge_p} zgBe}xX2H|^qMI3{5t)`Cb5mCF?x44w5ebEYuzlb#X>tR*`FT8pwfS`+m@xhfB}j=Z zbZ-G06QJ9h2R*-8%)5-fk@@ou2C{|-X_%{%V1KW{Sb8wJ zBMDOy&z3P?s**3Uew!QP)ah*XC9?WOMDTeWF=LLr&5z+)>cM+53SPJF$%^K|LGa`p z-432!`OFn;Nvxclfu5E5tIZc41hbST0&c9B-o}#Qp8g-#J*A)#2}*$QNt4{)<_@{f zy$IhcszDvscIUiYXNa`4$m#0rQO3z!p3Jer_8Ls|bXN5K^jX4VLA!oV>2C5pYp^W* zP24A|FwZ;R{$6n)_qK_kIdCYzXq#}LU<+9PRU3v^7vYT(L-~yUHP-b&gBF>*a;D92 z=k>t9y+Ac+Rn4fnB^q!FFU=!A6#tK`_O)QbHO1*k*+2S>Oo{9{IN{hCIlM&Ts6}(i z(v6Fc6*_=tP$YFNPf^zK?=!1so$tUW)bTlG$?0yoQ0nKXpXQbDjD<_D8d*kF z5qPk1DYb>KgfEqbt^;P-!p|KA?)Y~R4pKjHm84i9i-#pypq%3{XQ&QYX1;)Qht#a97dH3(X&TrRd0al&Az`MZ{raex0Ha zb!s7Zg-lSVB7=zVCSo~oE`b_9tw{A+z+tkE$O+M+k`Yu-R4qoXX7Rb7GGOve|GV;U z>|ZM-#c{xQCCH1~f;g&Fw>TvgMqXl%=qPrA+A^<94VsZauiqt#Dt+JIs9Fhel>1*y zWz)}AZ4zQG^I>u7OhuYk)(En{vZR_QjUCkx%atWWf7R4Swp7A_K_V^E_7W~GJ#Moo zu^8sN9YW~kb}cf13go;6yCeG-cl>X#6?qPbP!hT-jTg~$LJzPuM5xMFT(UU*qA1A- zDWZtWkPy-8nvhmX(v6GueF1JM`U>}zXI1PdCW_aa@SO z(m$a=CV&SO;Onv?B#>}pDI3-QFi2DUAPG>RIUqZ#N!$R;n%;mvk>D#)vu0Pw!TlXc zvBC;(kMe2!BFY-s|AvZ`3-BE@_0yb^q~9WGDukqwzP30~HUg4L{tz1v)NWiR+)lbw zPZ(TE1cu3eCG=N%k#1}+z&#MbV@`4DR2QKZFuQ{Y$z^rmKsi#K&R$GZW#naW&>Ns79k{gum9w`POWBW1OGUz>h_|T&FQwstEJ>h%03@|;Y@1$8 zCdUa49mK;VdnEPVDFHh?g-NX-jL~l(_(%du(;437+YLMV3gt;v9!)%e?7a<59FYdR zd?f+F3z?)9K=w{+VJy{xLilyd0dCDw;58mN7zA+c;Q=Vc6>wkBrlKHq1r8PY*#S6V zg<`+3#4wK{7b(K%E<-}$g=Y35zd9+Dzd%4mF+j*11>_O1&=folc$*Frt0daTnvr>Srf)LF?{3_t=O+0YX0OeBwW%zwd;MsniB<$%J8mK~4azWAd%0yw| zUTAL#O4DrWpXLI<%(fP2vDpd?ZWS>I8~E!9BR$^$m1Ca*nEl{3uG9BzE0C~1h+;np z3lfR$ZY|*`c)SRK;Z)<6Um0!0u-%65BGZFDo-aW$=~WZE?E#g;9;RM6 zpi&D$>;@Xqn_>_c;M7eTM-_JaAVR;IBfeX(k?Ud2T!6BS9&CGH#pgD_EnF7x?UDS6jGN z-9g65kR3*y{OR|79ol<4J`BW33zyvII5EyaGfA(zjOwqKoU-`&yi>D2Zopm1+8GDr zyZgPsFwfw`DTJlKT~i=21#xr9v&U09l)Wh=)W4`4`mBw^ap3*ujhiZm(=h4vrB|!6 z0}wA~lw7bJi%z&XHg62g%zZ37c(K@MKpMap^B$p?5H@Ee;POKHqzJQBXkrK!7@z^& zGJufUhhx>>K+AHVj5Xy0c{=UiP@2Adp-AQ`?FHc4N%%@>YbDGo=ctY-P&|;(8qk3k z7~;4jihXk}7GQL{qKW1bl#8}v5t*}N7d-*XFWj+v(|alYKugf|2HBP2A)hWEy9ozb zq0d^4n+pR%GERbTd537mF zS&k-NvP2V=?SWw4GM}KjeBjb%g4n}Ar`pV2_QT$o2r*$2SW9)YtRXn~*CgCEa%1pZ z=mM7QTBi#{+jFovs=(`a^1x-?;E&&UT=hm0sDJtKR-dSN5s-PMCe+vg zTePi&30CluK7^>YCM`!`SKE3KqGWv92^|1zZQbZ;fhhbZ}{j6>f7T4qq1Kk@<6 zK3lPGEi~ZbCNu?-bsXEYplpNCDM_(em|4rV2ch_CB)ItWzcK(6Kdt_`@xdX$@<18V zZJGk>`xPiyijpKS8H3aOyq#jVQW>Q>43e81Mp=Mnm+=7C=UY%dgy>I@(PArg=G1hqTOB% zLG$Y}B{;ren(#HyZ@F<=4}7Hp))e4dBB+h)4!i^RTDF_CvJ!iSw3va0$; zl-#mw@&iFI2)FDn98@aa=|_gzzxBXHRj|gi7{Zc$qgby%HyN(ryH=vumD68 zr^SF-b;^lCROS&uqZ>oKrDLt5vU1s>^U*?~jzH*v`S*V)-}A_>9fx)L!i=r5!UH_yW6|z*b+Llk+;@ zdn@6aJfXE;Bq%550ZTGwuzyOGXh%bBCZT!{_Bj&b_QV_+FB-YnYCS`@+rU@zEUs6oYE4u<a;2) zYI#oVlAOZ*Nx$oXujRmRQ*^I;oy(FZzIr-d(E1Y|J7!}E!<^FgfSS0Ws7|^NY99^0 z{lQP_lLJ3JHQ;+~@VBCX!eg&Xj6xON#p}=fe=Ask7chp(u^y26ycJg|YX%?0%^9Cg$nA82($J@Ba8 zJ;STb&GR$@|Ob)98ydbd`FewtOtRq%*5-nlZ3gC@LX0FSbkc+ zeqYTEPdN0D38Z$|V^`$@;dVa!NS1Fg%pst1A~8fG8mcyA2@}#{5+CbrGR5vAiv?c? zyr7h-C}LkAeS}lkp|t!}@5xOzPLkBa(+Y>-mlr_{Lg17aQz7~T#9rXEl73?}WE z#lVkx$iJ91q>mnka*m~88mU`Q%fO7cVBJvpI~wm9cFieEafoXSS9yOK|J2x<06UBe z9^1pC*I;q?b0edZU*JR$fNOwv)2hTL`M_%{7nG$b_AJkU`OaO7LWudvFAi;v^_xhz z1lzd31uKnzY6)nkXyymh)2MAL7XNM7e;1{~kqQhRxQ2*o$Mtz0Mj>dEl7L%#Xfg<< zZ0fMWe(tZk3}2ByEeQAK=i3U#v)O+ln5+pr6oHwO(X)(#I7*_qp;`;k?-WoUOB!1b zC=UJ%+j2SW%mr6P(8RnJO@qXQ&$V^Un zC$~^tF#c$Tz>N-tUz?gC3ufpYeIOzrOMs#Z@uegB!0a`ksA@@0oTAU2S+$^)Fw_N4 z?6Yy~ox`zJ|1{hHe)xqAemmLu2()uPJ>(hn_EVBr25esg*1oa7>9wo(zD99lztXE9 z*B6bY^A4lp8($1_)m+Oj-3!VtgLcom3K}=Gn`Spgx^mY%vn|ew)*NmsvUr^PiyTxr zy1%B%yLQan?fXR2xsILD^E(caO80O3VN)Bm&9jWxwAnAbot(~VN;-Bwd}T3ce#Fc1 z7j*P@6X(FGr_t|z$w!)x-TKngIa*>>pjVXTAN0Cv*O}2}VHa+n%NTJv_f&H(YhUnV z-jr{L#_BPpg`O7|+Y560%0~NtWT}ii*wKlbJ-7F5z0El<-yhd!E$%}%f_{hm4ovB( z_||*ch}|cc2%jG;>jz< zDq-!ff>!vBM)($T>CBe>_OZwPSW}l|v-*dW_Dql;#0)pb4X|WjU*qWOuAMx$Ai>SP zLD0wowvXm&ObdnTix{Og8-2NNKQQ2i`n-~c-f>;B z-~HtxjrINU#OJpdKi2F$aR|onJ>~d30BJhlatdK0Xkdb&Z@@1{gKXBD2{{Z{n|u=1 zHJj?z5DZtE%x7()vy61PT?Iu^wnEvW(gWYdJ_EGb!;(QoO zLH@nMVp&-_x|InMw!f0o?36TX>`MiB>xuXGGyC0P*TLUhuvicd&D#xk%qTaF)3m^f|} zNgtM|I|PlhA3De3qzUsRkaJY1#x%8CpTQKdI2JaDL`aS$& z2b&c+0@^9VHB&Qmpyeu>Xf4lvr9u`PT<$C6@cZXgyB~p%*SVD`6K!O2keBaD=zj~q zV5Jj}KfQGA&o0srM z!v$Z#d}xjbm8E6V4SS>-0A(JqNhuny`0+Ec0&PvG+Ge&9HEFwo2FFt}Xv z*BM==L!B;qR?_VIq!Tf|=QMC!^5NB`7{rEWzcqdAQ5&Qmo?({h?0%WDRGm zHvidsl;FZuyHm7%_C#?1GEN5x*?%=mHMV+0=c)}w3=q7^CK)%6nd?HnHe6O7NmyBx z0sJO0_8h{XSfI%n#oK0yVjgARqyKb%uX-^5%yJ2`Eh* zhG>@${4~KP^*shAcTjTMEc9o64eq5zqkg(zUR|IZ>3hx$p{e*t#DBk`XVxw+k$GG5 zNBL;Q(`d8@Qk`Y%*_n0{}}!INvjNmMJ}@XbSaI&JrF*tj*2` z5kew8r*}5m;rgU4<;xQ(olJRRr2-L_z5p42T;+syC1JiPV|Oe;&8aXIvWLO%kc)uJFAVpj4qET`HFmW$O>H%s}MSWJHwR44qsg^%q0ZtH<@vIA)4Up?wjZu z9Rp6N;>=?buXu&Mz~1TxPcF=QHawcexMa@>`uz!(Ejp44v^+=U>Z z4G@@BnUNMuA2XT)$`{$~IkH>k7Um7~IhEjAl+{v8xA%WSd!y|8Dwfzn}D>LztGUiyJmo=hsbjA{73B0E%=t<#L(_v6e-&Hwvgd8s^5K zWnJ()@d;K-G`veBD~L(@T1-deb;8~Pn)x!+F0n^x)h_c*jBSFB|kOMctUTrPf5FP?ZE`}R-*Y7vyAO#^~vKRMSjb+VVw5{F^T3X98uVSmt5m z7H+voZq8b@H;DHjg0?d^a*`$Zwe$8ES`dGgl*t}{{A$N`u-TG59@9?vyccfO zKr|6A0hq3)aKk9B7TuHjRpE z(qt#0{Z(9hD51v}7eqAnTJKeJ+6QHn2?Rx#pYpEGhC{0lXrKyLdsj#Kd zr*|`rWi2uB9WKZJ2$ga}`Dm-;`|!6_3VfFtI-BODg3^^ey!h85tn!EDx@ELv6_mMx zZ(=ZWkr@H3Yc;Z``z_bfzNw&s<#B&Le6IY&fy;hLJzAw6%TcA6r3#yEqXFbU$L%iL Jo^JI?_YX{5y7T{KVwb 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

96^BBk6&P1gV%ItKn|b)e-J&4r2q+_89-D1 zzaTtV1>|;F_+|5w$VzzJ^9Ls2<=wXv;CD*^Eq0pc{y#lDSo!CGg)a(-xCD=Re9r{D z^uz50_-X{K%ohaULO1aLDZI2-cuBADcKrx%>6Z=WzFE9ocm+J>zKaPMy-P6G_Z!s?u%)C)R2nv`bV**~-p(7ymrZ5ATfW%xu02Vh7;+dD? zGw&2z0cF)qApG3u1>cKK4ILUfp+nsQk3{8yc~Ak^^fA1JPX-D|$Kt3I2D^RB1PuRL zN5DB=m;r-Oz{nLS083kEjez?Z-T}i)VlT62Jguw&ZrtEO+13s%>JCuhC!uU5)X>~Q zv_X@q4H}iLpv2!V*EPf7h#W8vBmsR3Z{eK|W?pH$&HNG=H1iuKVAysY0cSdT3&;@! zU}^gxR(r|9Dilx-nU`n=bU|x-C$y>CLEYW~ZSC#s_g1wUTH6Fvt!+#M{av*}g#vI@ z51`TSTX=Is?3s!saWM>X-N6Jr|D}$Alj>UnUQEc5Q&ZC|;J$8kv6Uc+sRW0ZGRP{e z##ya`8y&6Cb@K*>?hfCs6~4Wr9XfI9t5pq9Q(Fsz!ZJ~SX7u|I-rOq<%sfy);6)fX z{c9#*=oZ~lxK$AF5DFL(pDhSTWR1;z-{&Q)$SH?6m!5`?5{|>f#AA?o@iN@J$wN!4 z5WGbbUX7z(T2%vXtB$~Xiw?rOiw=WrU>1&iexJjed!~Ze<2-K_Py{a1zG4EN*{mbr zm`W&x2a54J&fAKuL49Ejb|@>YHY zFks3yCg7>{Isy(h+!FAQWtnn1%%EQ0`2pAV_EDu^h|i|`*JVtAl7(*tRZA;0G`HXy z*$#1g%7B}j1$OiAZrTgsk-6uc;3drkMcpQBcaE7&OV|T3~+Ipy}g9(20a2)Eud&p;kuxP z*q>0qoD8rF%I#Np@tiYYI{P$lF)tq+Cv0H?9$%v)U~jb`U;qjDG)+!tcuw)P{DAn{ z`xd_UNltf5D~-4a2Dmtp03HQ2sZaujC+al<7Va)#0&D|w`W0S0`!tx&I>np&;(%S9J$7|ceBMcbH1bwgCk-zG16-VD zZ7T-8y`@J$lTw8Olvo|NLClXRV0Jp#2ITZFJYwR80=#p<{*%p2z>p-}Gr>whfD;OM zeo?BNPH!P7J>v9gAq=75p{JTMIa3;0)5{LFzd^U z(1`*Xl|p!;u2B#W{X;Quv(muUKf7Pyar9BZN!}cH66v^2Ou)k{bOh`w7X&zxfVlH= zI=XgTR>M2pWq5n+!zW48dl6&Cz(5jeM0u<_68S9nvmlVCD4g*Wre2FcisOu(Q79RV_&Wn7RT z;JMgyayqxCW9z#OZ@T~s931rt+pfZ~i%P8O+Iu=V=;~m_4*hdiXDf`3FJN7rAudjC zTZ^#MQ{mQ!;hU9=+JdT6qJ-yt+gSw$#jstStbq|aySARrjy~!69=$vtySfWtFfR|>wiH2o zn;@V8!#8vb=xl+gT}6Tb-;92R$I(XtCzt@+kJd8*1DAGb3)qg;CO02M_9)=lm@{&E zW8=7lURd-Ye2g&ibcA)FpqcgZEv&V@)zMLH&ni6J;#irB0Y@#%12gRE4197?Kp_fH zvaPQHhyB_Dob2Gta%;!vi^OBp|0=DJ}0;DM5 zndsAUdR;|tZ2Gd`kpPS~d^k z6wt0j0T+Oqh621&`xV}J+EFl?dXzW8TEg<*YncH17`3*5RcCGqcq$@APOqpnZ)yLu zymdeU#=)g9^Xp3Nq$4HF<; z(55XQ@#GEmcGwmL{4M;1oZio4aQ;rUJ-xKh4=jf8pQ_j%-}^9wN?O|UL+SbT&I9|< z3+xEXIxrWkv81&P6xv#AtnN5moLo2NL96PPfLcYPAV95zFcL83B#J!Oukc1wkAUHn z!@RNEc`$!(H4`9-YS9+3{CFo5V1ojl3_C8T%L&rhO8!n=9lf!k7Zy>;msoK_`+JL~ zpJxKFi1GavD=e>Ep_jkS86H)494=1NH{?N!s*!Dd6uwr`0M}|8usUppuy1gSnw$cb z9%uU-UJx)7*N=a$VghUKMx9;F&(DTY>y}adZ4l}H=x}!$Nbwe(+C`o`2{(5}_T&-2$|7z$fxH?Z;p93mo18#kdEIbo%T>%|T zKrV2TPJo5`nf`_cgGmQb0M4LyRx$zBp-tKXVt!R}TsVlVNI>urIo-*jD=E@D9A?nX z46CqWa0<!vX%}xcAUBf23}cU?wgG*t!DH!U7f981}k$tw&r6U zKr6oxzNTIQS5QDZ{#o#LTqq|VM**k%72a_2K|z2k3Vb_>39t%j)D{rAuZan;L;;V@ zKP;yUNs{Pt{;%H8OTsT=EuRZXdkfg2N9TCm{XC(-%8p)VZ8~~ISn%d#fY>{OURI)j zbTD*J1A{r|L7sL6*8p1i6(~RfHTX%7Kyza~xUNlQkAV5?Q+Ge|Bw!K>n0SCU#A3?i ztwbikBDg_YKTz$UPVaP49ZcO^3@*Vq12k>zBcYkF`EVsPH`C}V*vM1(>biRNd8PU~3=KX8dakEH z?3QxZ;c?`_aN+@t0GvT@3Ifc76xssj@2+D4%t=7NK{;JTquW@Lzr2}I01}j-k5fEy zM;gElH9N}cZfQvX)%DcbwYDg+*ik~s6$Kp5t$`!C)lgZZU?X3{p8Hz@u3oQ0iOsP8 zOd%LfJA@;D>R!Tw{)FFo!)d3$_{|l9fWUff0si0D;Bx>XGZgTM{{cDO!(-Rb`fx3U zy`>Gt0>|?->^`2ydIAbe9bH3rbAz*>R%yk*Dxg)pek5Q^D4~ z=Rt4c@50J|FX5Sh-*|(mC&B1-L4c{hjsVXcmpLv9L}C;$*!MR%-N2+vh<9@*#|EoA zv0pw&JPyJ)zolXst74rXZEZC2b&AHGBBy(+yWZ=WzgknrR(>_E7yD0SfX(#1U^oL8 zzM1zH-eCN1p#RCQy#ACFFnleZ2{7@k(H1ag`z0p86a@^L_p6+)p9(iH`+g_KQd8QB z{qn$Q<`M8&dk{*>E1_Es#CS{Q2FBB=?guD%Mtrewg!(R+X!zYj;&4PNlu4Mr0%{G?;}%-{F$f`CaRU>Or& zV;D7Ao z-+{ybSZ@3wcHm(;>kO{;C+~T|(+>YD=#zl4B;Yvczaj`Q^t!4oV8Ysh9s$lCayeZ& zXSc5V8(#PHcJ4W_@HmGpEw-eZe>QU`&Vo6$xU9%Iac^7QpM=*RyB`JY=S5gf>%Y8| z2{7=yqAg(Tsyu86Kx9Y)=I)i#eS5lce!s%&p5%zBtkt}e1I+sy{^NaJ2rrt@OMr)tfcN9GdIUJl z*(0ZKT3FA|=h=Px|K#vA{d)u)MFC50FW{}1;~ck0cmy10@7YIRGqDcJ<1u^}-M6PJ z=l448wZo^}Z9jjRO1F`mxt>F64RGw2A*aLOT`PI9Q1H<)yQr;g45 zn;L3tSZRx}3J;-ePBadm^RWUn;tUL~p!0^%fULN3>%+Pu$o_jJwP#723`cq0HO#i{0qU{uK>(_ zFM#>Hd@%Dtyz>w&k-c(oE5s_%BO6TTW+9nCZ)!~DAhXkvG@w&kW4BZ=!tK&%<~g7v zEJN3`$Qhtsp4wRh?C1=p5+}i6%1NN|mMT0da%i6y;Z{ehJuP_j%+s`|k!RuG-C8Y@ z{QVvJlAO`30`2g6^z_r;3>=O-A?IZM`0LZ{K3pNQ9kVjo_JhP^n-5kbTfdL|J0aQX zUqpPe)qBg6Es1|FOSX8ISek79&XQ#Fx0fWFz5Qvj*;~k)i<8B~8;cmGug4{u5U<51 zo4gvEZ2aoNWaC$27)CD>(aA%XXBM7S2B z5n%!^bQ6l;pAQT8N@Vlc$Mh9RJ?XQCxBc4O;0?kTCk>^KV@1qK5Eo_GSz!xvaz1?%j~%~@T%rS17H8&7sdbgqxtzieKn+S literal 0 HcmV?d00001 diff --git a/ReactNativeClient/images/StartUpIcon@2x.png b/ReactNativeClient/images/StartUpIcon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fc1df0176dfa2c98c2be221ea5f7d9338477c0ce GIT binary patch literal 10605 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

R#kbCJ|% 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 literal 0 HcmV?d00001 diff --git a/ReactNativeClient/lib/joplin-database.js b/ReactNativeClient/lib/joplin-database.js index ab0a2897a..0609c2c1c 100644 --- a/ReactNativeClient/lib/joplin-database.js +++ b/ReactNativeClient/lib/joplin-database.js @@ -3,6 +3,7 @@ const { Database } = require('lib/database.js'); const { sprintf } = require('sprintf-js'); const Resource = require('lib/models/Resource'); const { shim } = require('lib/shim.js'); +const EventEmitter = require('events'); const structureSql = ` CREATE TABLE folders ( @@ -125,6 +126,11 @@ class JoplinDatabase extends Database { this.tableFields_ = null; this.version_ = null; this.tableFieldNames_ = {}; + this.eventEmitter_ = new EventEmitter(); + } + + eventEmitter() { + return this.eventEmitter_; } initialized() { @@ -350,6 +356,8 @@ class JoplinDatabase extends Database { let queries = []; + this.eventEmitter_.emit('startMigration', { version: targetVersion }); + if (targetVersion == 1) { queries = this.wrapQueries(this.sqlStringToLines(structureSql)); } diff --git a/ReactNativeClient/root.js b/ReactNativeClient/root.js index 478e6a278..6b6555393 100644 --- a/ReactNativeClient/root.js +++ b/ReactNativeClient/root.js @@ -2,7 +2,7 @@ import setUpQuickActions from './setUpQuickActions'; import PluginAssetsLoader from './PluginAssetsLoader'; const React = require('react'); -const { AppState, Keyboard, NativeModules, BackHandler, Animated, View, StatusBar } = require('react-native'); +const { AppState, Keyboard, NativeModules, BackHandler, Animated, View, StatusBar, Text, Image } = require('react-native'); const SafeAreaView = require('lib/components/SafeAreaView'); const { connect, Provider } = require('react-redux'); const { BackButtonService } = require('lib/services/back-button.js'); @@ -376,7 +376,7 @@ function decryptionWorker_resourceMetadataButNotBlobDecrypted() { ResourceFetcher.instance().scheduleAutoAddResources(); } -async function initialize(dispatch) { +async function initialize(dispatch, messageHandler) { shimInit(); Setting.setConstant('env', __DEV__ ? 'dev' : 'prod'); @@ -414,8 +414,13 @@ async function initialize(dispatch) { dbLogger.setLevel(Logger.LEVEL_INFO); } + const db_startUpgrade = (event) => { + messageHandler(`Upgrading database to v${event.version}...`); + }; + const db = new JoplinDatabase(new DatabaseDriverReactNative()); db.setLogger(dbLogger); + db.eventEmitter().on('startMigration', db_startUpgrade); reg.setDb(db); reg.dispatch = dispatch; @@ -452,9 +457,13 @@ async function initialize(dispatch) { // await db.clearForTesting(); } + db.eventEmitter().removeListener('startMigration', db_startUpgrade); + reg.logger().info('Database is ready.'); reg.logger().info('Loading settings...'); + messageHandler('Initialising application...'); + await loadKeychainServiceAndSettings(KeychainServiceDriverMobile); if (!Setting.value('clientId')) Setting.setValue('clientId', uuid.create()); @@ -601,6 +610,7 @@ class AppComponent extends React.Component { this.state = { sideMenuContentOpacity: new Animated.Value(0), + initMessage: '', }; this.lastSyncStarted_ = defaultState.syncStarted; @@ -614,47 +624,52 @@ class AppComponent extends React.Component { }; } - async componentDidMount() { - if (this.props.appState == 'starting') { + componentDidMount() { + setTimeout(async () => { + // We run initialization code with a small delay to give time + // to the view to render "please wait" messages. + this.props.dispatch({ type: 'APP_STATE_SET', state: 'initializing', }); - await initialize(this.props.dispatch); + await initialize(this.props.dispatch, (message) => { + this.setState({ initMessage: message }); + }); + + BackButtonService.initialize(this.backButtonHandler_); + + AlarmService.setInAppNotificationHandler(async (alarmId) => { + const alarm = await Alarm.load(alarmId); + const notification = await Alarm.makeNotification(alarm); + this.dropdownAlert_.alertWithType('info', notification.title, notification.body ? notification.body : ''); + }); + + AppState.addEventListener('change', this.onAppStateChange_); + + const sharedData = await ShareExtension.data(); + if (sharedData) { + reg.logger().info('Received shared data'); + if (this.props.selectedFolderId) { + handleShared(sharedData, this.props.selectedFolderId, this.props.dispatch); + } else { + reg.logger.info('Cannot handle share - default folder id is not set'); + } + } this.props.dispatch({ type: 'APP_STATE_SET', state: 'ready', }); - } - - BackButtonService.initialize(this.backButtonHandler_); - - AlarmService.setInAppNotificationHandler(async (alarmId) => { - const alarm = await Alarm.load(alarmId); - const notification = await Alarm.makeNotification(alarm); - this.dropdownAlert_.alertWithType('info', notification.title, notification.body ? notification.body : ''); - }); - - AppState.addEventListener('change', this.onAppStateChange_); - - const sharedData = await ShareExtension.data(); - if (sharedData) { - reg.logger().info('Received shared data'); - if (this.props.selectedFolderId) { - handleShared(sharedData, this.props.selectedFolderId, this.props.dispatch); - } else { - reg.logger.info('Cannot handle share - default folder id is not set'); - } - } + }, 100); } componentWillUnmount() { AppState.removeEventListener('change', this.onAppStateChange_); } - componentDidUpdate(prevProps) { + async componentDidUpdate(prevProps) { if (this.props.showSideMenu !== prevProps.showSideMenu) { Animated.timing(this.state.sideMenuContentOpacity, { toValue: this.props.showSideMenu ? 0.5 : 0, @@ -699,8 +714,22 @@ class AppComponent extends React.Component { }); } + renderStartupScreen() { + return ( + + + + {this.state.initMessage} + + + ); + } + render() { - if (this.props.appState != 'ready') return null; + if (this.props.appState != 'ready') { + return this.renderStartupScreen(); + } + const theme = themeStyle(this.props.theme); let sideMenuContent = null; diff --git a/Tools/generate-images.js b/Tools/generate-images.js index 93f13ea3b..e7e871b53 100644 --- a/Tools/generate-images.js +++ b/Tools/generate-images.js @@ -281,6 +281,29 @@ const operations = [ iconWidth: 46, iconHeight: 46, }, + + // ============================================================================ + // Mobile startup icon + // ============================================================================ + + { + source: 7, + dest: 'ReactNativeClient/images/StartUpIcon.png', + width: 64, + height: 64, + }, + { + source: 7, + dest: 'ReactNativeClient/images/StartUpIcon@2x.png', + width: 128, + height: 128, + }, + { + source: 7, + dest: 'ReactNativeClient/images/StartUpIcon@3x.png', + width: 192, + height: 192, + }, ]; async function main() { diff --git a/joplin.code-workspace b/joplin.code-workspace index a432d5a33..800b05c55 100644 --- a/joplin.code-workspace +++ b/joplin.code-workspace @@ -3,11 +3,7 @@ { "name": ".", "path": "." - }, - { - "name": "D:/Web/www/nextcloud/apps/joplin", - "path": "D:/Web/www/nextcloud/apps/joplin" - }, + } ], "settings": { "files.exclude": {