From b4dde1db283a81d1b53faa00e050497cfcb85dfd Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Mon, 18 May 2020 19:05:45 +0200 Subject: [PATCH] electron app --- app/icon.ico | Bin 0 -> 186605 bytes app/package.json | 12 +++- app/src/electron.js | 95 +++++++++++++++++++++++++++- app/yarn.lock | 62 ++++++++++++++++++ packages/api/.env | 10 ++- packages/web/src/widgets/Toolbar.js | 6 ++ 6 files changed, 180 insertions(+), 5 deletions(-) create mode 100644 app/icon.ico diff --git a/app/icon.ico b/app/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..dd0ba64871b8315946bd10af20a5846686e75cb9 GIT binary patch literal 186605 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 z z%>4pC0LLG<{Zm_mm{Q*(KjV*szia&ycKn&V`+t+L{-N%}R)cLUuR+{5qdV{B9@?=N z|8Dr>44`ll@c$Js-yI9?<}*R~8}6-g4^8Zs&Anyb5!?Pv?41*P8e;!g{{-2;XZ-{F zhaS1qM(!iG{d4~H+CS%9GY9J#fS>=<_W!u;pJR`XKb(Kbfews6oPRIk?5{`?@Mm6^ zY=dnqufF*E*uN8d=NEe#g1;GmpmU<@AC5n^_W2ZQ|NG+~b^HPLzW(P}@y9c_)<4^m zg?|Y5A=)!A=Z)(BG4>xP{>Zf!&^~drH$2*(A^4wE`zO!EtbhFQ_u9Yj`rr2dhqr&6 zztjE={u7gi|Bb*qFB<0VzX#(VhWpIeQz!N-puKSyxD`DA@~%HE?HS?^`=|CfwLcC1 zCien#wrYcy5HJ3|_8%30*Z70J2MwHL+5auTHfGIvK8J|-Q+JrWTkO5=>^@YAfa5@Z zLaBFf&WdyJir^xod^Ag{3|%1AhAoz=BbQ3mQJGTn%hghQ>^iA4VUyIJv{mX%-60Lr zc1y#V`*0R@NSZFfSz*R0c_1@S+C#hN1rNuL>mPEwh_xB}W7&VX?cex+bp2z-f7-v| zzav@r7l{vl@Jg`e=UF4q*vTQGEtkL;QU>RC_YPk!DTte>IChg%p14h_LAx{c>pfCq z+Fq&7GJT&^o3;XM7`dXC06Rv%$xmdr0n|e^?$| zbVMFa&yn`aj?43zCzS8=>V`AYXUjR&n;U@h_W?UD>e^KE9~u9HkNpSZ?;3xAf67GS zzxA%f&%dwU3;ZwAuKfzv`ox-Rc*Y9xe3)Yc^l+3H!o3l5vs_7~(${;X3N*8;;ThJR zc|aPX|1@8aEv=z@)jsp2Jiqp=ytE-txp02=PaVM;F&+Hf6e_=dGiv8o|N9C%d0SPN6|#jzq}r_J${GSV(5$RJ$n^*FYfv?#{XS|Fis?ef5K;g`Q?Wd zr|d3P`Rl!(pzOtSxN!AZ?7avKHeu{?I!X(agmZoj*0H?e{@0@1iv8q+czq9LK6t5oCjTz|;}Y6(0A&G6 zUzB<%-z(iAx9)${BYkxGCsQl9U0lzkXxWu=G z3RU1A^dp4|UB~zH_1D(7t+#~=;n!l`cXz$N>DzDZ%jg}>o6q2G&U;++dwGxM+s)Dz zUs3OYiBq3&@2`;h?>5gA^-1=72NQSOfsb=v_j^x$=DX_opZ4Ct$Ag>GH_=Z`zh+-H z9TFcmKU|}4qyO(8fVl?ByC~Nbx*7j3RH#*BeYyI-s|fr{Apm`h>!7D_1J0_7fKyow z@zD<=U&3?Ht>_7@lD^Og7>u*=Pl^qg_DS&%W_<#^ijR;d>mBe{d!~%v`drnCSuLB) z+F!lpoPBq+JaLT|YjL zILpgLkPnQS9``WD2Al!a^MHN@bv(!|QeAuS2e21YO?#d-wppEbxx?DCd7amu&h4`D z*bZoR&3ke2{`X#3yubBJ>HF_`B{Sz2-B%yKBKOBQKmISoP?iT*qVFwFyuKFvlyj;_ zVB#UE1;JPhoG)t}Dm6G1pK(%@_%QeTz*&~|st-PO!1<)E5cM_~yU1Mc}1mwxccXP0E(@?2(a(sG5k%pu}i;PMBQZYbn8UvhYxHfPX@S2Xx^ z3<6hw+KPC&YeuW(|GJx*mMq^58>^j4l;5sb1N5?p*t2M;EtVoc-j(={diR*oY+j z5m@{Jr58#Lio?4xyfUNbtN7S??3K$+e4qiNIpmD}KsUm%A8>O_|I)Yx;sebJFFs!T zapS|kQ8S8KUCfjCSmx=Rrt=Q>Lr$PSB>{?%O9GFQC|lgPnD+)Bqc^SbHV!`MUur+W z_}pXTqxR#%2WL*2Q=S@X@!?}>Y8iYOyTN$0=F3hWPn~tBQ>}SNlc^C}0aygtjKPMl z0emb@Xgv66?x{%lpq=5ypJ4m($A`S~TF^16GW*D!Dzmcx5c1#)_zSfE29&*SJiPBQ zHd~rhwqC6pALWX>`GF2l>$D@561b+>R+yLAqGB-9}mKZy4B=RK|6xu zPki`?WgtXVEZ9H$d|}?$=eIqt(>m|iy2-#ygx_6hxS8!OdO2i zpflfWC_d1APJsOc@Uh}rg6s$UDsT=Sa2i;^H^3spi--4TM=!%|KX#r{V?P!?R*WM1 zS2%p2hoCtz*}v)|S1a>z#XJ54@Cn#Y4U9jQ{UGP)xUFpp2#bClI55UGs=l?a{g^zi zZu_xg$eBMhDn8IpY2d}jjukZPXO7P%Mu9og&H5*RPpJLaIa!}f5I)R(zR_zh-k$^Z zW99m!rXu#HR-Q4$dN}W>{1w0_jQxz=(mp}>Fh+HU z7Z2~xq4+?H&y5dsIPQdwuF-%9v7Z?6p|+|QpZwX+)2VSxqgQBY z^|BetT-q#c5sd{Q0!ROX6y zk3W9)6AmAK&*WaG?h*CnsWV{b97+^EzX29UgYgLLyY%-iO(V|jg%Lwuyw?b+^!`+7 zFfv_QO9)%fiR%U#bh`#%Ju74hiaCe*^|6!r}vLxE5rNc*aInLmW-3 zWvAqsbr*EbVGJI1-PkACmQSGZOWBE5cc9Lz^jon{`e*Kw0V`2f?U(mZ z2Ch9MgE!{Lr&%ZDvz=#TiC)8{Oz%-r zWxyni=^8&i$#5KS{s` z{)(c&<|6kE^o3GaG)UJP`JItpM`KT@eN9be>g?-&9=d9h{s$(>C6xbh) ze^vMI&~Db)WyWqIZ+Z&ywsH?v6ERTDXYP>})1bFIVU09`Ms+H5dCNm9yA<+KlzVrw z)Ed569{75zv|V~so?4fu`wC*iSWgodejoHOYXTp}plF>e9 z>?!q!sf$$@&s_012s#y{xf5eJ0GX|o>h;4d1wQ9 zknTV{D)Y(TMGYD||5VX_Q>@%m)Ltb%%zH|F&~J$kpEdEJUbz<^Y720@XEF18pR5bg zY4r(tXy#6-K4Pg<9F`#sXMN+?5OHFT>soVjsPWk+5%?5&V{{|6duTS6LLcB>^RI1! z^M{AxV`;tz;iH=5upera#E6fvpIGprKB0I1YP0gJG?=ziQpazS`IKoxqhy~ITrgmJ{N2knK6}R>zy4+HhvSaoW9Ij1-<(6< zn!hCiADsPl_2S|EIU+t-*Eskf?l-FaP!|bn25ORXd?r3z&qTwA>+@*#!?i1~3ER1h zbz9wp;M1mOUoRfspPjQoKl=&62O1WU`j_H^`72I*VznO|ANJvX3BuYA0(?G9 z5I!TlczAyf;A83W87+Eu9t<}=m=go|814Ts_;B6p?O%$Iz4kHdpM2O)qVSpE#l!ov z!N)mUhNgqg?>u{V^)G5<``HikAZd;U&R^7pG2;*HCsusovma7X%wuZQB=(z1iwZrF0Y1)tKhKJ%qy>|EboFDt4E=6@`d_KfI-scJGUrW4r zcz+I@EqnTx+7G!c1;ht?@`U08%~s?L9+e<`qUs|$XBU3l7V1E|@j+f9E8kIIe5UqW z=^+`G?mT<}+`Css&K>4=V-67NJyWyXtbhFMCtUwBdwA6~QTxI8oLGFK`sPFI$IXp$ z;{$Hg-8@^y*-o*3lcgm5&!v$Uw(KVh<=)ShNrh3XC1vbpsf3(F$OnNOS*PTF?3ZG} zC))TN=wAuP=diawd4D$fgt)i39es+v=ad1HrS_-u<^Hjm^7!=4^4x;m^768S^5&YO z@FAX%53^3o(4A*x`0n#EYHyy5+IK+ZBi@{&;U*Pvd`PUQgqHW==$YmpLj8CbSv)p1E$OkDK@EY5Nj+{^j0Z1l!MH`kyBj zbo{}dl(`{KI`#rg=pVcrxueMSf-VkxtKZo9Agx@44KPnU4!<4!ob=g{lfwG<&B~L0 zn@`ER8;;9>^*Qn`{Lk;LJ}CWH?uY+*ua*zj9+W}r=zBgQL$(~3VcSm1@Lgxs|IA#Q z%=KvUY|>unE2D3lX8_DGNRAM5+|l=}K31OZ*gnMI@kjBQT2OqzRrxKjIm>)S^!t`AYY?)W<6WA9S@(7fQnk>*c|D2jnsM z#r$&fHOE+AC;hagNtXb8Ft+@yXuqie-zxCo8jkr5sV~QUJNq8}W4edu{uDX*Lby>c zle-$=9$LQniSYM-jof|IcAYP!hhlyo30+s@wPa3nKI3Ybzj#(en|K-hhvSRp5<`D| z2YK7xScjZ?OAbiew5`(gt4ygp7&#I9fpdkk*_0s*RVT3d($m5IRoGI4#V29^+X`$y z@YNJyKK8O$_tXE(^9%awo$<)#uLjQEL%C7P9V0%58>RUkd3IspquS?T@i`s92mQy4 z^?vIgGrxD+a8}x9WJ{ANTaagPp_Cl(wc23wrKc1p`ky%#VJw(c(DCQ)w%NU4`RrXpX(8_T!Hab53!skY9Yv{(|cc^&eu-0`B2KoIPG&P<((*bMIIa^0Tk~ zxVS&szg*l*jz6>?a(gkJsrGF+`$7J>WZ{c)6zb za({yC2i#TSV~sz4_-wZOSGMNoOFTZObZjd>e%q1)frBptn~u@(agEO|eB9izP<)_Y z?X@4~twi1euC2&E!?kZh#viPot?`HUlQ4XupIx}}A+c{6d;<0p2A?4N zAwF0$+xWQchxl->SgFYF85B;marwXo({rgs&lN3mA2-wVtj!*E}yBU8%xly6qXM>M5 zJ{$YNz6s+q+dvKMR){Z27(TZB*!W~60H3J2qe9N!?fFadL^<3sV?V*M7Y3hz{h)ur zx5S)`iVy6E`FN9rPa^Cm>e)poKH<1OpMg8}xpG^I;%u2Y+BvtE!P>dprx|kZ$V@5! z<$6g$><+j~$eEpk@#ie?vFzs+>`!CuUp(vR;MczrXg}yzKSE(_a)>{}{X6d6=>tQI zyXFus3g2ry-(`T+%L7$_DLP?sqIo9 zT)0NaGu{w61ezd+zZtG6V8=KC_JMh_>90KnB zsT-fiZ2zize75>mR)P8#_Fjy;*yF~6@6{&{E*N8P$Qd+zLFiWnUl+W(#_1;!$8pZ`Kil&c_^W#nBlolX&hf~*_uuf( zALIIszW8|Sccp!vTHw`Z9fl_RaUI);51w_t@qzE~2KZJ_U1{x1M1ANZ12zT12XpSv za8|J;5%sx3udxT`0Qnw&*e|ihybXJy47Bh2)HzK?-=^mEJNX@Z+~31>uB$wCPaSBH zQg`(D6>1ByVo1H-^_Xj0L9hFV?sgXRJ+4W8-QS`#KpBAfVHsYJp~PCZ@9T5a*QJ(h zKa>=d??kH`_n|iQ^(gnCJcKpx8?dplc+EuFgWu(%P|udnEScEw`n(Tqo0_j&7I^~P%_lr|_0QOcv-hCSA9}w zz2c9azGMA}-&2P)1*Hdy(IG8V2|rx@cNKvoBLHs4FTvF;4nK2q#K3jIInF@D5KMr+ z#(d}>tpZ0Z3qG`6h!5OVV$i(Z;D=?E9g(>PzLJHNrtF^BXx2A_Tg^Yvqurtdt)5!A z|K1Mi2Y#RADi`ST@FV{(c-{}g=kqCeDx08>m1o7@41zX|&EKImjUBsHjIl}N#^G$Z z40SK5OT)NG#%9J{+D~0Z_n93z-0wmc zqv!h5xz8=j8P_&FyII?%$9`U*2N=hf(O&Xyc{c8Flbsj{@FN3fP_ecjxY>{A0#MkXzd>^HfgDMLGT8Q@<&Wro{bGwD~@ikeu}nhoAgV6F;r- zdFJ`s=WmYvyPto-+fR;LTb$RnSbp|&y}8+M)t-Cg7jZW($`{b?4k*6)g54a)p!P%i z*3zcRU;B-wqSyYt&)>A4d6b(VW(IMZn-MQ?N0cVT{AaW~1tn~*aHsv?fCSo)JnW|Z zs;y+5pYg1~;s%2ogS^$M%SHPKH=VILw11wvzvR-C3~4{&9o+WsZGR1L$)OK-2)@|D zF*h>82hsNNC}Gdag4%E5;~5|3X}>f6E4MY!e$@>y?Z>(5qu^b#|HtzD89U}}zsAae zi-`D$6)4w6Xj)8vLfbdzul>+wGyE3S-Ux8!l^bP0|AMxk94hvIWB-PW32h?Aa+i*& zkr6(Gw(m<$`=P4}UAly~U(fpR{E^of{i;cXrbYb|+D#3^h&s!v9IJ$l)&1*^uSqC4r5<=#C4`X zSFqB!%~A!tnrh&!rGhu&w*Ppae^bo=)>%LMKkYxOp!Wa2VcU*A;c)cPesW_OzggwO z>C$-gQh9XRX6dkKpS-#%N8|54+HnrLfEVOTYUA0OffEl|af)LQk2ngNg2Pld(2BKV zETYj_GBKOl|6TLHvHy1V`0s9iWt_#L{})Kh6>YyQT>BX_Pu_1S=x34x(qtLpZ%_~J zU8uWev;kT7A&9MHY$n^z*h|J?x??l>GxY*hKM|kdXQ>Ium`q~8F`zHvG5=}DWE$)dg<)xp+I%~V3FOl= zPLbMXjLRt1ccPSdYmD55d?F>@{6eY>oUYn+4^Q1FPiGvG&WNex`jG2B>bDuaI<9}H zNn!dw;&ck!e(Y!KP&>=SAyY#|V<^F8r~l$k=w?vgPvZpX13(-BV+1+>S^V9h${kZ} z4b|;q?2@gUZtJd5SA*Oka<@_uf7NC!wA6I|zaX!zKP_FB9hRr(Y?lYeuaa6r=SrFW zQ>4--^Pr=+Ssq??LSsqUcJjqpnq}rm>LPG;(SF1V6zKWmxiu?3AWh?|RHF~Eq~w3` zxza8i{jeu(eF(<)zhJawsg31rzu_)JS3juzyR7zSoRhY8`;8`_cm8KQTemg2^2m&B zk~%y?Dt@|H>Zk2>+D{A~fNogz+1XrIb&lG}BYdF98(%z1Z9K+6miTZk#`yluSYWl^ zaB!{mt2R91g`MYb+OOIVwr-=*&DZu@x+)w?^!dloe&RvBYK{dQ|DFclttoUKYm8Yh zO&1(-aA>gf9Qc@f3eIlca{eQqyU`-(qR&67+TR=ppcPl3_G8TZUEz)&ob|Tb{Or|_p*ADq#ogL)s;z_P z&%8)ZUWpIqK=%W>a2QYB?XRiN--@Sq>>u;J(QYv7e`-;i=kK&1elu!@u-(*$XMsi6o`evN-|p8u!T_-A78H184eBB1@$#p8UU?MK`u?Z1|7|D4~P_QT#o z+V8S|cl!h5ziM%wuTsE#8qi^Q*RS2?cX790V>kTT4_^7~#I~RQB=oBXBMfg*|Acl9 zHEs2Kz2yme{Iheba1E^S8R4FPNc&gX&!6qj(dXX|<9{NaKiiM}{~J*o8Q}wH^H+ZD zHor5zZ<9O4wBN0LX!4>_httYSWS)Pz&MT@5z_<&vzc%du3Tyu~(^kJ%(|#v6iv9e< zwLdWaQ5VzIe#TX>{m2Q&vE2Rq2jsK=ThD)cL7)EuzjmA7`L-V#^4fl*{lwTU9sjJn z6Tv@5bOL;eG&T85VKU!_D9Sw;n#kB{?r!4Uatt&jm3I@ zDW#xYa_>R7Ya8l5S1#;%jPlb{8U*qM5WIP zwja;<2Pk3luF(dl3(WP-J$Sy<2ygIZrnH)#CC@BAAjn%O|J;05KG=~5eW{C1UW5to zb4-HY$M`?^o?2D(i_kwp-v{-mm=D3^kMKT!YQ+#AxBsJ+YyD@%YV!GSeLt#^hxq{7 zN8fL7eh9=obAQLVjB(5K`%tU5Cf1xhx24`8ZCB53Fm@SjF8XplN4u!G<=1}W|Dhj@ zIU$TDm&tj+Js6kL8(n|;$>|5s^?ykFvpN0^3)8%)zsB0`*J!`$AMt_l+FuwO3xLCq|e6F@=wHr z^+pUYab-L>{R7X#2STl_w$PHI4}?B|`yKy>9jiMoE8p$^M~D8ugMTxRxd~Li$oM`~ zV{4nP+o*p-O)~a%p8e|{(e{ZGGd&N$nt=PE!te*HUVv)#Lu;LS6VUr(E(7)d&@Y0s z!7>;tn4jPto|$0$ppUUQG@~lK_qEhUzJg|xH%jY;2j$7t=bU^6H{(QP{!A#+J-Le8s>$=_blE08PJ7- z?xU>>#kkUnQ!)O}IjZ{a^r4d1&0S=*!~d_c8_;oNAzRQS`! zN%_HZrS^nP(kwmKX+LqG_C(!mY7)W3hyZoknq3b+30ide}<=OfPYtJP9=;7lnGt;oiRtu%H( zU7E_%59C{`5O)1j_$YSM_eUS5X|wZc+c`0?{G4|DtaJ7aU#DODsT*saKXo6R_8&ve z#Jte<$2k8t&&ZYP<2Fk5@tdVC*3qg7KQnuH)PXL-2e6Lo>*x0&2F}@sX}|OQ?Yzg` z!q~slep@%i)&Ba+tmn^pE!y+qqSeTe>V5c;eNTF zzv}u>R|C&q+i&IU2XSBE|%{prwBn-jsr zBmN0({nXuF@B66jr#6`H^S5f3+Y-EH#qP=6hZFc|6wXm*# zP5<|O{@A~m@lUl=IRBgWLw5%{xjZ}9oY{E(Y(MvO#{Rv}Ki>9ZZCQ}^Pj|Q1`##Wq z*V(7xKDoF*%qtq)|HHLER~lVe?O*6^v-@YK{dTTCoD<5O;5*#|UoW+K%MF|Xf7g7e z@>zyd{d~F9_;Qt0#~E$v_>EF~(pITGWxLdc{%Qm0#WcdcrOBdW@*p(MpILKOx^6fx zy|(1ZJMekXhhn%uaXo+d(+l|gSGwEF_dM?+zwJ)!$(5@CA2xXbDHFEA7leF|0J=HN7aW$>={eGVd9FOa>XdX`e@;4Wv@`_i|Ka>^#=mMD|JeR< zTUSNs;t~IZ_Nqn@{TTG$^Sly#8mv{48q*!u^{Y(Vhdhr5r6JC|n`WGp`&XQoRD1qs z`zwswns2Q(@VoXGgRh$0^ed^&k?NvaEi(^E4UDB$`?K=hesH{wM!MIP{x@>d@a*#4 ze#GTWywckkt$yIYXGZMg5&np^(@$}J-V68mSJe(V3O(%92u+OXPv8*!8k!&v0|%p{ zawTidP!nStN)Mb(+z?X(*sYTu8M#@b-#-wRIf2$NNex2DUHW?*D;j1$7YL$glD$Fnb+V-^{K$D;d_At-jY;H7o zd7E$soeQ7zMRJ*W_RKsq#lgj5jvmHgk%z;aS~b(pAkSFdGI#ftJE`ea7>u5Q+=xL`h!aqRDZ-g z)=EFCKExj22{3+&{sa0?={p3E;9{p$xhvW)JN6Rx(tk=wrEw9|nQ?OTms(tD`)r83 zz|i_5*QmkY)E~SG#UFc?NcCqN4E@67KeStO{_OpWkA2#3e$M|Dq#da9pHSAL1kQM4 zu78?^e+>1f@1`G~hp9hfSLm~-zvOIg)!9c{=cf&*^ED{5g6i%%n+?Vv@%ZphDIc9$ z1hjwb@9B#suZ8E(+%wkBIIBL$5c`1*x$!skr~WYbFPCuM+CJVkpx%E#35l&YXG<1` z1TiIQ|B>o%#U(|oKk>Kihy2o@`XlZZXT~S7o{TGZ4eHMLxXUO3+X=#-92nLgoJi_{ zKtI{wU(~@LIso96M8n^0KcV$Mt9e7A+gm=KXMlPa^VXd|o3ot&{;v9y&kFlto*2u1 zT=mDfdmV6?$pfSPnEZ?!f3*H#@kjm1R~^5tdYtvAHbW5hA@!$Uo}5&Jf2{Sl`L|~L zjII7z@z%e#Z~g7u5Q;zQPfdT-Q=t9eJe{#58cT~f3Tm)dz&S!C_+YC7LvlY9f4}}XB-%IWOo?auRDstB~8@F1Xn6p!$;Un*CIwga5o(CWBq7w_sI9SHS zehKa$^Gz~d)XRO0j{jluz2eGUkGi*Z*Pr}-j*IkZ(|=eOd>s0gIp2_v)erHf?`55p zfm@J=b>mSPyaD+#H?ic%&@IPg`1X@Ba`!oH8##|`1MP?NFvopr+VE_fF|xtq59}X& zRp8$sF8go$>eH-0#}}>xc$UOi!bzt=XYFS1kQY}TS6)7I9+0C&&Y{L! zar{Tzc7E!QwOJSP%9x{)agcmv4o3D>%^i%hwSSOT&G8fYyfha#a}hvGfUyMR(v*T8 zKY8?QJI9cE;E<6M%6zT8Hk^@{mm_|1_BMF{`E;3!vi9he(rosAX|?ja!xd``-Vt-m zB3`gjJow`r${A;xOXQBRw1NHamzdR4@zVWO) zI&Z(!#W_;F>AR$5rqzyy>EQfK+4Dd=^#>o}%@PCWgvK={vHt7_X8d_*#aXF8H(Q!6 zJtH*{KaFP)SN*Y`Z$$kicOT|^#os=cWuGSgwD(~9nXG5AjOEt+fjHZt4cCYLkW<3G z%K3}qj+wuRzq|fizcGI+`M>0ER+(|QVm$cc4E+;t-6Pi@xklCg8B1u_AMy9BKgK?- ze*?Sz~(!`tL>X5N?U5{;2Czzxr!jfE$0DjcPnJbEV=um|SYDKXlNjACQ>( zBi?t?&WGcyzi)g`*!q*tY3h$W<jlXk`xuLF=>knSI+7C1XEd29df5t3m z|F!Fn^WCT8v>#t>B-MnoW8!uEQTzW`=i9qjf5rm4>kl3%V)fO2$N}LTOZ#De4QD^Z z->E-z1IYKvNBxia_Fr;(;d>~IakIqhBc<~Dh+p_@fwUZ#Deb0jln!&ZOV{+h(sTI% z>9sOjUPo^F*Vdho9++=?ZnP~Pu_%l+aqEywvNcE;qr$&){l@qcwt?d)^-Rb) zrv3)?C%pA1-w5lsmtwUa=t}$o^*_(J3GSu1_F-%ZIJ>%zAs#i-_Df^r#%}!iVrejB zrqp?V5@JWjNVT`2i_vGKR6?oPd!$sy?^64ZlX`=uO4Fe;rR5ik<*^AX<*6B4Voy|M|p$nCfhXZ;5ISIrRS{bl_pZ0i(j{cr31;s1c+c!_H-u9vxf17BX(W{mfs zK8&v6$d3Ux*4o3^bFlV-amXb#RZ0w;ZN&mIhcA2(HKy#8`@hbT7L(V@{bN>0gAt3R z+D9{_{QF-^#ldsH_g^K==3xDXXKT3r_h&-$V%{;SIB7@B^~X4Vqls@|Os1RTue>hQ zTlFl-X<|Gx;`#3E0X`qrtBijlm$Sq`=-811gZz7Zc6?@y(SMmkkMZm7{ySj%1*}I; z%aaTFOxH;z=vGu2g|(<1yU}Dt9^w_g=^88kcl93gBVf0l_44*%jY;sUKlpgmB4M6R zgT2-t`$uYUanHkgP+R6Ttkc}}_v^n8EeA{&&FE+TVHzr=dh2^ z@!$B~==auI$pccpJS~* zbsU}guT4z-C+>JFX8haq^z}U${2kvpVzo3Lxf}6^@1I&6;G(Mzr`A71$6h!7+@E{< zZ#etm_^Gir7XJT?qyGN!1qOfPJNMKdnlyp>Lq~;iWSl!vCPG69dyxBJKi^UPed7ZH zzT05mzs3W2@uv<7>;Hwj{+9kR=h|rF5BqNb|Dzm(V~%%+t^4x(Lw%pt*^AbnXD{Fa zI`-q#9~?+(I01jgAQS(%>yPi2AD{I>9QO03U;lM@*&2UoeCP1@(Eg*=|JZj~{{jB> zhwl*MKK-4{J6Q~Cqf*#sl|y`A#o^1O$``Ap8hEtT5a*UUF-uaX?2y{Xy;yhVH|k5c zAMQmBv!&&LG<-GLA-1{EZqoM0hm;EUI+hWJR?W;psf3xmn94qG{OV49h zLb*W9*~hhDeehtLQR6A&xIDc4G<;Zjs(Gg459*Kg=g?T~2Wy+J=<6&$7J0e9d+w6n z)6Lhc%KA@;z5dvDlUww?)!ln<`dq;mj2VCE9#sIpi9Dw(rVZc=c8Jw}__>Occm1OB z*LxpF8)l-Ai}roAh1|PEz_JPWp84j!;Tp_MbuY@(C?A8nwg5b~-FVM)!3!t_Z5yv~ z0%beObdC;U(OOx+6=vS?%W>rGeQ z>v@8UdR-~6iWlmmG_7y(ieLPaulmo*=W{cvoPy%;w0?yj{>A=bZFU_rV^W}%&=F@6 zBd~X01b_ZEtS1lSEbBNlRgPi~-&b$`(Y4QJo|xWk_3`(?J!;c=+2JD3XB_%Lew&MR z%B?6vaR1}<%cv$R_N3$^s5Uds5~#^UKQQ{YG=`Q5&ndZHV(c+}VDRl7cq;S6`^dEs zS6%_!_c;{Rkk+*+@6R)B-oN{&VeWrkW8mEPr~V1o)vZ_OU8=J%_hb00eijW6+_x-> z!_RQvpL;^<{-gCQqNKKeHQK*Vnm~t$F?d1uhyRcFXMP5r3*-LNW4OPb&!P_MqtTc# zZGS)AlREduS%Tgle&De8NBik_bnXwmzzP$0{v}c!aNo}6-hAc#bzh7#N#&Cfe`puc z7hQ7DJoTG07PYCX{XF~P^C$kn_h)=n7U`2=|KXmmN4!7IQy3dtoVqW}tB!qOWvrv_ zv+qy7j^F*MlRraAr#Fjbtw?nR)5TDX*g^i{I$@u z`CyXNgkQHd-q-zPmNXi%P+EMsR9cVElqcwGhyS+A`m<_#Zqr2RNY;Qb#!`*~*Lef}Q&+5c-q zxqs04miooX$-w;?qkk8*rO5XgG+QbSUn*6Ri=YO4*)6fJj&}d5(EY;w!^T&k-OL@L zd{}CTbFMA^!7Ql(jh@FB9hC0tPRV=lOHk{K+HXb=jym|G!God(+#rlU)IXx`Jw6lhy~Id#eXU-YxT)~n7-?b$f*n0Nd#J{z|GVa)qK+}BxqunvLygM;P0KX?%4{yf(T zcmKz*{-CxM#-9t=?-mV*KkirDv|C@zxr(;m+#lR8(|+Ecd@;12T5`NUb@$Bt%kh`} z&)lE-(l~Eu5#jz7Bi^6qY0%H-Svb$%;Low|e>k4|w~TQAU~VPbuY59`MS@Spb2Do5 z^8Snipsi~Aac&$_`w?Rd`wz=ELED4RC*1c3pVPYkNLTxL|BcE4Ag?Ye{_}D%{%i}& z8^`^f^97DSobNc-v#q7s*G8<6N?)#*Dj4&sPTVHdaqe1U+Fq%Jc=E>ckI2L6N99Sx z+P}2=q;y-4bpY}%aQxBdkN#g3_lLhOEMEnCoM-4OF9VHl*l9t1C;I&=)B~7xSZd8b zZpNQ>;hulVj~6iyctY;$dmXHk;V)|&?*8B-{s5W?55xDe7~fBX|H$1I`r3v8*WZM@ zzx((2>@QI&qArZh9Dw%|@VW%ASty55PNUF|#`swl#$ht$w9#D9N&sN;3G_7Idyy1&HwiW*?tTaYKg zGh$x9I@T-9Ysfi;J_Yh|p5Jic(tQ~x$5x$r==b4ng6qD3V(p)~e&GD&y*}2B)xrOu z9&F(Hmz4W+Kjw0*l{Ue*@gu)`;MxQIuaC7k>yP~+`7N05J=bUbFN$^j?l4-lb**dFFxoTi2(iALm-s!FR8ZYmevkxu+_MeN=7mf}dS- zSpK=`w0yknw0yqvw0yDaw2a(yUe}bI&$+JQ`6TPF*T=mvUeSC*{$bBJgL>s<;hP}e zx+wIVi*`pG5$8|L-$mb^sJ?>~tSwu9y;<7N%91C*7k_xpUTMAJw6s9|Ys|-7F@D>v zAs5FlpfR$L>j1>;>Hd&=RPrTwR?l-*`lYxoN?nkvykUb+@2m^*ct(!g2i+X{tFRWl z!|(doZ#wZ&Tz^^D$KDrfKj!14--YvjP0#gdpXBjSQwDS0Wt{K$+9SjvT?oz-a+l#OE5w%oF2E1rC&_l>!~9O%yHb~!ygm92%0t7x_M($oXD|NE zGEQ>ry9oOUiBtS@tImHh*XFC`n{izqF%HZ#Mc+}K#i!IK>AijntQC>-mTS>_z4+kz z)G)R8KV1Lz)_4S`{^72VXKd_WuaEp@xPH};>p$F?{#EPxy1vEr!MEq$hCFrpy|n(| z_0^43e_Y>hFO6$gb6=l*mobb*F>jTAKTXOFK_0eIs|7K~(r{6(ytwY1YGuE-)8c#5 z{!RU1|24h!hsJ9|_EYZt^c);|=2+WAEj*8}Im6-`)L)3Ts5QRT^IpHiNAt_#dR$9I zy=LUk?Biamiud~b8Tu?Y;=4S{qejLi6t3l{4HD^|{5#JzxwadOQqAw$e!nX-G~0!&R_4_`5_bvWAj{~UPg|0)nHl{KkpNm#_ zJt-k^KKdg$$mATSEs)5oQfWSMojjAaL0+D_S$ZtmAw8B@IV{QRW^Rg_$Sqg6SU&b5s^Nn}B z@+mmKeU#_RzE7P)#-y}IKA*QXpOH?>v*jV|DH|_2BX@ND_(u2l;VaQR8yx>QcI)?1 zf21{k;DjFMs@7_xI8EquPFqZ(JKPMuT$##w_3Oqy9l_DSY=l#sVpdvygh= zxwo0RPC72!C0$n@)4Yr1{&74c{?wL-ef-Vb|F;zzT!;2wrVop8bR}OOAtm1&rEzqX zz*lND6LZ~yJ@N#6X!p-QB#qF1#NRn;P=9>?PV@a6DmCKSAin>q z&Ye6L;J)4Z{w{eI-*N8G??WE}^SQHD`9sYX#cqdhv)F(%*v~R4|J4Sm1b;&1DZ8X9 z^y%u(I*4||r?NOls8L>X;Ys!n$8QCj{{zMj>L^7Uv&?w5AJ6xHP5sR)_8Zs3uTcRu y-xAk)4&`N(S5P{mJPE!{V?3ifVEfKFYVI!!6`GGxYCd*U;Yttu&9Cgn_x?YeVM!+d literal 0 HcmV?d00001 diff --git a/app/package.json b/app/package.json index 7fa2b37c9..df8293b4a 100644 --- a/app/package.json +++ b/app/package.json @@ -4,7 +4,8 @@ "private": true, "author": "Jan Prochazka ", "dependencies": { - "electron-store": "^5.1.1" + "electron-store": "^5.1.1", + "electron-updater": "^4.3.1" }, "build": { "appId": "com.jenasoft.dbgate", @@ -13,11 +14,16 @@ }, "linux": { "target": [ - "AppImage" + "AppImage", + "deb" ] }, "win": { - "target": "nsis" + "target": [ + "nsis", + "portable" + ], + "icon": "icon.ico" }, "files": [ "packages", diff --git a/app/src/electron.js b/app/src/electron.js index 0a5741ce1..6fc1bef55 100644 --- a/app/src/electron.js +++ b/app/src/electron.js @@ -1,5 +1,7 @@ const electron = require('electron'); +const { Menu } = require('electron'); const { fork } = require('child_process'); +var { autoUpdater } = require('electron-updater'); const Store = require('electron-store'); // Module to control application life. const app = electron.app; @@ -24,11 +26,95 @@ function hideSplash() { mainWindow.show(); } +function buildMenu() { + const template = [ + { + label: 'File', + submenu: [ + { + label: 'Connect to database', + click() { + mainWindow.webContents.executeJavaScript(`dbgate_createNewConnection()`); + }, + }, + { + label: 'New query', + click() { + mainWindow.webContents.executeJavaScript(`dbgate_newQuery()`); + }, + }, + ], + }, + { + label: 'Edit', + submenu: [ + { role: 'copy' }, + { role: 'paste' }, + ], + }, + { + label: 'View', + submenu: [ + { role: 'reload' }, + { role: 'forcereload' }, + { role: 'toggledevtools' }, + { type: 'separator' }, + { role: 'resetzoom' }, + { role: 'zoomin' }, + { role: 'zoomout' }, + { type: 'separator' }, + { role: 'togglefullscreen' }, + ], + }, + { + role: 'window', + submenu: [ + { + label: 'Close all tabs', + click() { + mainWindow.webContents.executeJavaScript('dbgate_closeAll()'); + }, + }, + { type: 'separator' }, + { role: 'minimize' }, + { role: 'close' }, + ], + }, + { + role: 'help', + submenu: [ + { + label: 'dbgate.org', + click() { + require('electron').shell.openExternal('https://dbgate.org'); + }, + }, + { + label: 'DbGate on GitHub', + click() { + require('electron').shell.openExternal('https://github.com/dbshell/dbgate'); + }, + }, + { + label: 'DbGate on docker hub', + click() { + require('electron').shell.openExternal('https://hub.docker.com/r/dbgate/dbgate'); + }, + }, + ], + }, + ]; + + return Menu.buildFromTemplate(template); +} + function createWindow() { const bounds = store.get('winBounds'); mainWindow = new BrowserWindow({ width: 1200, height: 800, + title: 'DbGate', + icon: 'icon.ico', ...bounds, show: false, webPreferences: { @@ -36,6 +122,8 @@ function createWindow() { }, }); + mainWindow.setMenu(buildMenu()); + function loadMainWindow() { const startUrl = process.env.ELECTRON_START_URL || @@ -95,10 +183,15 @@ function createWindow() { }); } +function onAppReady() { + autoUpdater.checkForUpdatesAndNotify(); + createWindow(); +} + // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. -app.on('ready', createWindow); +app.on('ready', onAppReady); // Quit when all windows are closed. app.on('window-all-closed', function () { diff --git a/app/yarn.lock b/app/yarn.lock index 46bc7b20f..adb96cbfa 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -70,6 +70,13 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.30.tgz#3501e6f09b954de9c404671cefdbcc5d9d7c45f6" integrity sha512-sz9MF/zk6qVr3pAnM0BSQvYIBK44tS75QC5N+VbWSE4DjCV/pJ+UzCW/F+vVnl7TkOPcuwQureKNtSSwjBTaMg== +"@types/semver@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.2.0.tgz#0d72066965e910531e1db4621c15d0ca36b8d83b" + integrity sha512-TbB0A8ACUWZt3Y6bQPstW9QNbhNeebdgLX4T/ZfkrswAfUzRiXrgd9seol+X379Wa589Pu4UEx9Uok0D4RjRCQ== + dependencies: + "@types/node" "*" + "@types/yargs-parser@*": version "15.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" @@ -174,6 +181,11 @@ async-exit-hook@^2.0.1: resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -231,6 +243,14 @@ builder-util-runtime@8.6.2: debug "^4.1.1" sax "^1.2.4" +builder-util-runtime@8.7.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.7.0.tgz#e48ad004835c8284662e8eaf47a53468c66e8e8d" + integrity sha512-G1AqqVM2vYTrSFR982c1NNzwXKrGLQjVjaZaWQdn4O6Z3YKjdMDofw88aD9jpyK9ZXkrCxR0tI3Qe9wNbyTlXg== + dependencies: + debug "^4.1.1" + sax "^1.2.4" + builder-util@22.4.1, builder-util@~22.4.1: version "22.4.1" resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.4.1.tgz#49cce9f06a62cdccda66d5efa82077040fa1f462" @@ -572,6 +592,19 @@ electron-store@^5.1.1: conf "^6.2.1" type-fest "^0.7.1" +electron-updater@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.3.1.tgz#9d485b6262bc56fcf7ee62b1dc1b3b105a3e96a7" + integrity sha512-UDC5AHCgeiHJYDYWZG/rsl1vdAFKqI/Lm7whN57LKAk8EfhTewhcEHzheRcncLgikMcQL8gFo1KeX51tf5a5Wg== + dependencies: + "@types/semver" "^7.1.0" + builder-util-runtime "8.7.0" + fs-extra "^9.0.0" + js-yaml "^3.13.1" + lazy-val "^1.0.4" + lodash.isequal "^4.5.0" + semver "^7.1.3" + electron@8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/electron/-/electron-8.1.1.tgz#737a5af03c7b4af60b49dff7bfe1203fcbd5bf89" @@ -679,6 +712,16 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" + integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -948,6 +991,15 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" + integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + dependencies: + universalify "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -982,6 +1034,11 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + lodash@^4.17.10: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" @@ -1602,6 +1659,11 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + update-notifier@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.0.tgz#4866b98c3bc5b5473c020b1250583628f9a328f3" diff --git a/packages/api/.env b/packages/api/.env index 8d6ae5376..26afcf6a0 100644 --- a/packages/api/.env +++ b/packages/api/.env @@ -1,4 +1,5 @@ -CONNECTIONS=mysql +CONNECTIONS=mysql,postgres + LABEL_mysql=MySql localhost SERVER_mysql=localhost USER_mysql=root @@ -6,6 +7,13 @@ PASSWORD_mysql=test PORT_mysql=3307 ENGINE_mysql=mysql +LABEL_postgres=Postgres localhost +SERVER_postgres=localhost +USER_postgres=postgres +PASSWORD_postgres=test +PORT_postgres=5433 +ENGINE_postgres=postgres + TOOLBAR=home ICON_home=fas fa-home TITLE_home=Home diff --git a/packages/web/src/widgets/Toolbar.js b/packages/web/src/widgets/Toolbar.js index 23979c808..5be65cd54 100644 --- a/packages/web/src/widgets/Toolbar.js +++ b/packages/web/src/widgets/Toolbar.js @@ -21,6 +21,12 @@ export default function ToolBar({ toolbarPortalRef }) { const setOpenedTabs = useSetOpenedTabs(); const openedTabs = useOpenedTabs(); + React.useEffect(() => { + window['dbgate_createNewConnection'] = modalState.open; + window['dbgate_newQuery'] = newQuery; + window['dbgate_closeAll'] = () => setOpenedTabs([]); + }); + function openTabFromButton(button) { if (openedTabs.find((x) => x.tabComponent == 'InfoPageTab' && x.props && x.props.page == button.page)) { setOpenedTabs((tabs) =>