From af5db6242eb0f5c496dac27ff76b7fd87c369c20 Mon Sep 17 00:00:00 2001 From: lukas Date: Sat, 11 Dec 2021 17:17:38 +0100 Subject: [PATCH] add loginpage, load videos, load preview --- android/app/src/main/AndroidManifest.xml | 1 + assets/images/logo_circle.png | Bin 0 -> 25699 bytes lib/api/api.dart | 31 +++++ lib/api/token.dart | 37 +++--- lib/app.dart | 13 +- lib/login/login_screen.dart | 159 +++++++++++++++++++++-- lib/login/logincontext.dart | 4 +- lib/preview_tile.dart | 46 +++++-- lib/video_feed.dart | 34 ++++- pubspec.lock | 14 ++ pubspec.yaml | 4 + 11 files changed, 293 insertions(+), 50 deletions(-) create mode 100644 assets/images/logo_circle.png create mode 100644 lib/api/api.dart diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index fb9821d..7979f47 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ + L7cV@tG>ForAl=>IgMf5*OAHOt9U`Elw7^gjN=bJOA>G{!-6@^t9-j9- z=ihUEe|_I~&L!N}c(eEF^;>K0*K9N=i~YIXhZf+gX4>46%N(qVGE-$p09N=e~X!;*R&RM@3i{@8!n{rWe`& z{CcV9#!-KUnaV@U$QJ#{wyiDZPhoIGj6@Ft73lgdXWAvT`Kein?46d$!PJ5w*D9T=Q&x!HbJxHsgrZvXC z(G3wfBZ#?Vt&}$?MR|;jg4G=v%MOWXnnH02iOnN0o8FL%Rt96_j3@$nOX8eJL%+gKYgTy=Ykz!U8p&5#{#3%CXKgS^Z;&?Ed` zR`btzxTBoj>$(6QoQD4*{KJsu3A{vel~t5N+dwA3!^Bl1Cjnec4U&ELR>N~{f6?Q+ z=4A8Z$t6!{HkKs2qzvbmFWAL15}e`9Qf3pLQKaXashwv&0bdKIJJUMXWk;>-bUu`R z#mAR_VaLOWIA;0_35lD-Z|Eq-?*hV&jQ1@?5S)3r=e7B{ov+nSONJSHSor88*89%ce0Sx8v|ZEPfLZp0ev%6fS!6*yiyH-L~T;)W=2&dPYyD!r&?%t>fvt#gIT zC{2z{3W?b1mgC;vE=v)$sVkoto%YPe1iG+9P1q@+pwT&h(Pi42CN^-axQ zxz10v=7=_C5E!EFh0mP(S_LYW24eoMBVE_`uCuY&RiYI0-*r^^K4 zWePnF%O0u74M`6vtPvKRwr78&==DBqd+g2-vzmLO&OUK_;sjWY_CVqpR^q*@F&R-{3#pyw15kuiwOT87X<$N&q8y7 z`2V%A_lePe7yL`_KMVe)_n!s-()-_F_X za@p4Am)I_YTz}v8cq!G{9vTv=#Bxj9$w>AR6%c_tKM-UJ-pKA0V0dPgedDfi$lJQR zCeaVOTQIO8VwpL|J=;e3^QSWuD|_>_zgPUx*OBr-beThLuo%%&A4OIzl?m3AycQ27 zY9II^i)w_37*8Ch)f+)~1=n#F@p6&K_k0&6*#I%w5Vf0pZ4mIAo&{8hb`nYt zJz6skUVU}I1^ad!mc$aYd>_3OBZBC$fS_$?v62Ae2G5xl1ucVe0)qpo5Gu3&o+_hT zg7!@0^QRp#?`R)Bu*$~$aAZ7oF?lBfStP`D1lcV-(>BJY&v^ECQY8N6sFJy|QG6U7N6Sbv7!|OH3PHXj6(EO|)WW{dz#5lB zsP23IVI)TWicr2rP58H;{Yx`exw?sZ+EsITe5o3Y4fY}{zEv8C0v{H#x@cI(LD!|W zWGJ4`#>)@o-;Gl)+*U$513l8Ge$h?gD@2MReMd~UP4)L7Ys<0R0yPKi1yi~7{h*Z{ zGqM65qJ|<3htU(Uhn}phKwKCYJ+2cY6%U?+l<^e4_!sZ&c*8Vdg`U)n%0B=+ zGkfJ=2A^BID;VTN(YpO8s?N&(+ zVS-;}LQe}kkeLN5tO2TaGViVxST1 zdM`Rs)Rx?MW{dYVVRoy369A(m)L0^Ughr(~hK8atu|}*YFzzNp2i{dCm{4&CSOW`w ztb{?I2X6GQ%-Npoa03KJonhUI%8Q70Wn6#|vE>wXoOU8t)JXZtwG5%$d62X(j-T+q zBZ}B*0v3I}m5IF9s%oq}rO2;~2kh<(R=HREp^NT|@f@X7ldp)wMaIi9O+8q5y@ z>T|IQtvHnY7bB}GLIqoe7 zAa#i&lauj}SqYBx@~J+cL`yC4nBYUhUml>r7#M)3M|W@LJj$GIBL0?^;U^?D)VjpJ1hgBv#G@s7YcW#(|kt9NF|U z(_K{nfT=$@jrMYYeB(=mVyDm2S;GJsV1GJIMP>g+!Oi+{g#{I0{z4ZASUi)NmCH5i zi>+e|w+Yu6#wQtrnVP8m0(I6eD+;W;AGZ@GT;*~A2`tkVzfWlCU;NUyF~t%w}8 zP8=in;H)}|?L>5}IkCVtoVfp(ikkmP3qb2D2GogL8E~=`P{&NeIEYVG*1>-&fWW(a ztuoTnxKx)X-MVaj#|FSd!0xxU)cghYec^zaESfYslgB;QfwhEHuQ;7+uxIR~;369F z0zF&@YJ{nPdV~(<1T7)b#|e0^ll>A@PRycb4wu5c$bCKmkQr4UeWXP+AxRIA`l%JN zVSTBqJ25pSR6XiM_f(4Y)a_ZMjTEsbruBhEsf)Xde1MUFUTNaBO(5Th$x}xJkd%@S z4kR>cJkWXv@Zy3LoKNb&`=|f^HA(-oKLoVvnnv{3~zZy|K9AW7&%a= zE#6&!4YYi6*z4^f;gYuv#Jo&bKgUVORYWKBPyl@nI{AfNVYL03O{CW97dvLR?n?-AX`d_IprTWB8;SoA6+MkHGa%nZuG~zz6+6!3 zm$q>@kZ3r>OC2jdyw0+vRHz`gPAmk241+w1Ljl{p__49}RSr$?1dk7cnBtKXVf~==QNrhRTgj)Q_XBq#C_!D4 z0-JTTmG`8q#wiR``{JjL9DFRw)tV4z{2YZEjV!c((3&fJur1dZ`n#&=NXFC%cWyl0 z{p<(QqLuM{P?K`#h{X(bxY+r!rVLV^Mnx3q?$`1}8&Kb`AE6C{FDK03YN@`d)=-sU z#U22!O-Uux=t}F(=h@}E9|arPi)68aED_@atx@@&rnd=lA^MOqC-dU1pZD1p>mLQ0 z1>=^^eiAHND+6rPa9m>^xhGk26HpQ=0;5=RtIC^`!ke$B6OhycwO38;vunRSsXRx7 zh6tuZDMu1Nz+L}FA^iDJH;2&@Ps(M;eESuRxM*u$A})jJt2_m>$#87Dqt?K&8AQIW z8uhe$#sF7ck=$m)CRDpq!uY4@v5^a}4!Q1y!0NcaCr3JoB4^HahgG;>&;yBnou=J} z8Q-Z;|M$-4V!5BaKQ!K)c*BBo%Qj!Uf70ijF>KY7nyk5~m8fAnT2=O~9oGHMjJcH0 zo1*;aE!`ew7R%=mx=VF)k4hox)E!Uz;KM1`J4e{-PpTDbfdOf8(}{>|Cd5CvzU1um zXRvf-8|q6i#_J3KdolWdWm$TNw}?=VJxFt)a9N_ffn#%c^dU3^na14gSyHp(4;uSj z_Ei|5P zjzHQV`?yxl&BYL;g5^0&N`uFdI0{sM=F;e|1b_)j;DaGv~x7nfw?& zj&_!vlQ>3sOX4_KA8#FIXLVzsM{%qT3xnzvJsq5=wbw%(gMxbL8^@y`SBd?h#LT&V zT8b3QTf7fY9}V@)yAo$uGSo59Uh4@w5_-dfmXWsTGxud)Ew2kaMC6owyGYARI6iX03Mf z`F`eQoaU1&EI#2Q-zrm(W%SUbIXbaC_6ro{5dLM7zoIMUNOKeRw`Fo-K92r(t&}Q4 z+po^cK)#jUj&02c4kA~P?}u9NOIFc0KVq^^C#WpZ?YLrja{0Hi)yTz7+&QxZ(N=%? zh^+pH?U}JpgjGMTp!Lc-w(ars3t*R}z~VJs_hy1xy^|PO!xVB%x&=Z<&|VPgCsiK) z@}ykL^_~=3-qJ(pBZ9G@_ zWR-CuA}Ed?>kA%OrF&39;qCoNh3J6HRQwH|zl<+85cv_rgF7Y7X?A)SA%j-oCEv!z z5asG2Kfe#9u8+$HF*`}g$j&($;Ju5xh{*{Iz*DfWLsF4&=wKIQ-9s445hzbgNpNo% zjouTCv!CGNJ?YWiy1F-#EIVt72zd_=CA~#W=(t4Yai=bMkGg@-fnDfDrAT=AI7$06 z@4FadMYuTCXXP6j1w0fIdX{C$HRCOFxP~%EI%EZ7HWzasE3#+~+VaN%UrQ+P(@ zO`ymh)*`XJA%5$R{i|9nuF8X4Fg~~0gQ0C33Onv}Bj1sW?0ZjD8Qbp_PExEW)*J{6 zj@Z$9A9n$v0RyXtP>qni5!T~7*oiMs*oo%{#~27uB0|We&^MSZD{9nPM6jnjm%&Y6 z0hPxnpCnS?J2r#euGoV4=O)F5ExfwNrgz^%`+eJAil}S%T`c5|$3M##cBuIWjsm&E zg?OIC&;Js}QkaN!}IC4Xn+|eRelq19f z(rsp!CnQphBS1ie5eo;CgFm)wwLzKq#sUT3?&f~h(K;G@2$Gidfk{qrM5EdE|LTj# zECjJpdlD+fCD6`4f3HShAA}b8h#fqeeYQ^VJH?VC{$eTiY*X>Kf55Z!4t0t^qQHpa zXjojeGvZ_ z_PbaV-}tq{$M)I!BzY;-KM|~JT268VkR&Bs4+$)LwTc#(=gE8fQ`dsuxY^}| zqJ986$@`smjzVL}{|Jp)ZgMnGx#JnKI;GY{@n7MWh7A%s@g8R-#=_I-%*XGR#!1q1 zl_+wfvF&w~9KQU_fWp)%YQJ`giTtu|u?3^W;KMTO57s}fxm4-f5=J|1XWM!TGU1H5 zR3YSY%Ir$vb*W&lKwZPDc_CxLrQ&d>M_F)tFV z5dvi=w$;=dk!LXwO*{YdmRP@^-tI@nOvb|rHnjLE?N}}g;}G=mV&7 zdawX~e#(&>`jFa|leGt^sYJKo{mRAqWR#iHp)A&dSjMXZocu<932uEkl5S_*y&1v` zZz6#=lmkz_C1XDK@hgsJFb!1B6y_2+ZtwUFks*VO4`Q|jGm9|}U(rg}srmRrmUXre zbArlGO3h{mjr5y$paQ7eNo{}u{TRv zf}Hwqrb`^Rvk@%oB9!tObUtXutp7TzbuV89GT z-~HUoC9pfF6<u7QFQ^T>aS8pbx);UpQs(Dyohzz*7qLh z&eisWQNF+P4GPP2>Pvmx>|9FPs7x6YqFkY&1RowI)jkSPc2S~jS~%6C(xFtN?;khm z={wgatSk&zMgNH5pZ0gc9=30YNikd<^oAjR8r6e$a%#*wC<^pCDKRdBU%=O&G_SFi z%qAm+zk6TB56n;Ag!cz+1=0rw=#~eJ@WAg&dL9`qN{QPsSJ`UT zjjvFj2E`fv<(8jyV=291Jghn&zB9Are2_*{7eP{tomTWrYmTLw3yz}`6^Eb}^pR+h z{Ew_O+oqZqWAt{b-A!#BzAtR4lkP76dE>->jCY)oc%y)dz>hc$GK_1DmEj}eh)g4i z8kRk5e%>b->Z8*;bv$8)Oq2YCw}j4OZCrD@pi37@ZO*a6{g9V-EA&mh_XD}VcjVT2 zp`t*0IH_gRYJ+B=#F2X8$iI(&w#gs4^$u01p!rzr4S9ES@8yZq$u!!NDY=C~SD=56?WI3t0DKDv*EBLONz} zA}i~WtFHS1Lxp)~`FK`v+g}Ts)d%Gik5CH5HKq)umR*xOWoSO3*rp46n~U&^(InjZ z=r-3Hrp#6MrA?xyKZJ$x%H4ss?Lx%E;HUh+NADueUh!==U!B-Evi0LV zFKtqTdQl;&QM7Sd2fFlxjwH$@XE3(i)(h0%12jM5^XBS}T(dGzm);NbiH4XII)qHd zCg1?QR05kcX#5$W#(y!*-3&3t&hx9(qKAO!SCia*L*|6Bil946J7$e{_SCJC6%StaYFp-rBYdasR-#M?C53z4j8?p(U+W=%SaC>w3%zQ+t-r zs<!eh@-~Xs==|?pfLT-#Oa)YF1W|+})viU~ z9%-g)5j34VinClKUFeIXke^C)Go`~jQE)lWNX`&}VcNUP53<+(Ot>7v3K`6~OC;gJ z!&EK>4WS%{hwjA8Y5cw+41c5UQp6-k_TxmO(M3q>+w+;!F&}LSo1X z|M`76hu~Vbdt{pFjbISMLVu)_%WgK5>l5SHQ^GX6inQ5$(iJrS1GEsjqSlU@aRwbO z3teeanqU3;nF31@m(dD~RcP%|DAAVCq7fQ8srNEj@;^Hd;ZP2~7)f_uj~iU?j9gNG zmLWQC<3^kJng}^Iq0l)HHz*clygp($3B>QC_F~u|K zu_49Wn4r60_BiF=lV8btGx>)t4eMU5(wd0SZa&JX753C1$Ei(Vn{w>E_3`h&+DM{x zqCavL2~fnb!>(2RU(-6s!!^D2De~_KN5E{1KBL!JvrsxJ-t|#*hzK(y3?y;8LNi=Dz3ggqk|Wg%{dbvO@9VRh-UmD5+qK0YU6Z<+?>*ucoMBzN_8+He?FYHp!X@<#}85OzqR*nHz**?0p-hX)h-R-vLrrbwlm97 zcG^m3pciFcl*f?Tuenp3V&FKnwjgLgXw))?7(gSP7t-U`+h#}M6xXJZIXZt5$VZhG zE;O{Ex=BZv(krmMUbnuf?5F%RXaxzQC)I3zz}a*SH8;o4FApyl>FMhHd0m8lVRqA_ z|L(Sp9{LrE_^bweB|@P4l7%(%V@t=$8M>vaWSM85)Y5A>OmHoFA>*#AOR%-BS4Fb4 z>ld4d5HQNKsFl5@91y!89QCilCq^s&Y{ENoqL7=~5XsV2n;M;QkKA)k2(JPO1r^V< z;*nrJk)|f7Y-$`SZ(f2=IrIx~;FDgZa+A~qmKFl|ISW^Z2%i%duDSUuhZW)*HDbOn z#AGiYco)*Au@)4JaHH1q==7oMC5&@(Kqx|HUR#AABUSm>ZbZ!ymp4Zc8iKdrIj-}k zK%|U~0P_T?i8x(zXi9Bx+E~yReWU9|auMf>fm;?{ zvJz&_9aN4yj4aD)fuo|t5k5#hm6@kjp!7HEvXH>r< z7kCb1l6GkP7CdjRw$(b|au@%{)P=k4HTIh&LK~FvKpec{XwHzlvmAo3abYtICxK?K zFSER91$_uY2)03&&AhbLJizgS4fbLn`#)u`d!_~Ga`^NcB5><7Q%t#04Ukw)YE+nS z_>hY}bq4Nv27$TlvPX_S-sR_R;s&}e5k9%J4O;>Mnt~NYAs6#DW$YxScw?^#;=B73 zTDkPx#)1>Z3>8P%{rXW*`9!H~)nB?UiN=TGpGzkuv!koM1USq~=^34-W#|jgB{5Qz z=12d%CQJM(nrDRK@Ha^%{1*xvYCe*NTDO--*K0lt1%#H4@9RVUxX&9kiz{Z@ zeV}?X#naYN{`TNfXANmr&o}zlh{|fpYdLNKNd8A9Sv(y0o~T)&-oG($xZ4vW6&xBE ztAXh=w}%8-0n|euM#e=8G3<)BGx3=*02yon8=MJFcA~g-`X5hABhkTv<{^WaPNsP9 zp$gvx^Caqs9gN((jdzU`5JJ?qti&Q^gdY%JJE{NH+8q1%yzGR=2+YL1{Kflc#7<8E z&*AYXPF;`wTewX%ULb0RMLqTfhDc;=tljv0&$zR`t%iy?qU2?x1to(D3%2x(h*Qwh zTf#e1`QQT%hx;l#tq#Uvmm-5GKKno8b9g55@m#M+?OFn^d}Ak!`|uF@>8P~`I& zk>FaxOMgO5%L_{L_DajgLED5k6*C$zbVmfKo+vyl%+`LJ2lmzZ^Qdfb$!&5zG$gYo z6u7JMiV$Huf#ele&g072G+V$I7DQrLX`G)1^Uan}!@oU;>6@;hDOggHyQ5uGAwgq43CcrVd;cW1$hzk4yk>TEHlOxT)N3oK~PD;9)vZ6 z_71KRZF;)Emy1fvc%63fD_T1(#O2FV=62xD19(|O>mxh&>-kXx*AH0t9hPV?1NK%p zD_38?lyA?#XmCF3nZ1L{Am%2N7pBZXj$u*r*V?(ldl_JOdX6nxWf4I^;Y>KW^5(+c zXzJR2oi}Cmly!^!rC3h5WyB`K5;lL zaKw+Kd!OvX>RdD^JAtSZ>Y&m&I7 zEzM|!y;%ILWsGJ-o?9K|CBx&aZ|DzIi zd-O$Em=~1O$QvI01^fG*Z6iIXl~H!MX-9~a&HK-535@Z!URjpE_QYa!Rx+1x9xr%m zu+_9EIVeBz<`0Kk2{gu}D5k|x&wRVF4%8#9tK5;xkLB!gqJt-*B1GYMfFy?@|9f=o z9*n7mORzjy{mn5yd*j6R7M@777ZH^TrAR0tqZ!FNGUxWqatSi_MtDGJytrnJ3a~&u z|C%R}0qSeoSIbF(7J=q}ZSX4q764$=Q%9nVO_Iiy~G6E9%m5g}m^!X3!-9Uq$+s4qiRZVHrcu zS0m>qLu?)&!zQS6q=t-BVi%gI;%bHB6V_LbVIj{#E5}I`_;gMGdM+!&=Tte~Fglzc z{5D#$2jSr7w+j4t%j2?RO3mK{bcpMRHsbr88o~x&!|>Sa0j+2|bTO~7)op9l$@m`8 zi;v^v8>^7NP*Xn{xx#89`2YeV)<$yApA9`R}tt+;Q$iZ zrCOQoTJlA2>(IUdujkzt*iggR1OLmJXJua$DUvJSsHN{IqTQ$xw-BBo;sCP2wL_t4 z4>om;F%a;H6zo;}$s^~JPkALXb0r+{db(}&1%2z1p!bubtJ`N^xw6Nob&Hu2*joEO zRzLf`v5|B!6Y({8yJXH25h<=CWjOuGV(3xhq%l8~bK7TyixnJN4)T&N`uZiXq2@{N ze!G~F0C5WsUFTAo4usR5P2?LYg1jL`3r%O2)MWiRX8oXAIO5lTv41c6iL#?nMTN)_ z2Vu^q_YI(Ab$*)!T43-tVf~Pzy^u5CWIyXcbuM-R5kT3Gu~^RL;?fzemyKfVlCL)# zS$l`G$?s(S8YKhVjV7skZqQ4>IR`Gtxo z)v>c@cF3YaZ+IyL;RctKaI;UEY;*T5uJD&@A=0&^P%IT+M34dd zQ;DB)a`JR~->GE->0|0hnNV1hc7+J%k(C}ub-`p2lybe zx065K$<5F3$x)C=sE!vueT`g_#qbfY;8JhEOtOynz2J#xDy<(KW_z&m40!=jB!w6R z@Wa#30efjhm5}w{9gmNHt*ryBAX9Zbb1MT_DUTBS6ef&rzB%QCGr$NU*?Uj;u|AUWmWJbx}9eo2I0~|7s z{ZxST^zkLwX3H7eY`7D3Wd{|FEUjC0zY8!#Dg3-q*NL5Q)ysjCBTPne1u@XJzLKMu zf0wwTV6*8|L;cT+9Z0JA^todJU;wxc3|@Uh8HweK)#ETDnCFDZ4w4NKN-;nX&hj`! z_Cc-}YEQ8yEA`dm^>y_q23W~9AypW{8mS}T@<$pDG$jQmW~;!ltrRmv(^Mcnl^??T zMMq%XR5drl$OgWEwZP?do|NsnT^Pz+KA(cT`~1%)W*$lJ_O+R7cl4Q-jo~J=QB99) z*Ugn4>U)m)$quQod1B0;AOekN*DCAtsddsjxU6E0Ki&!05){N%GLcqV79{K1Bn1*u zcCm!PjqK;1{+zLdnoE8spgmtuRxy(wxJ?gmXDnr4gh*L3-ecPh1M0E9>5t`xGn~UE zl^GHm=i^GBgI?GHxb~FS^iee6MTRc}w!P9dKwean1Hc0$hqbsBx!~SEZyhv*H0APu zBjP7CN`&M(B@rbmX{x0qRvD|NB9{bWT6e{<0{nlB@9bc)?*6H=tUW(-aK&W(*!u@ggOh z|Ev@@1McT6?@_R|qt-e)Pk`r=-fO{<6Nv^&`zNe|!mxfwb6zU|7q+4AK{LPc|#p@xwf zYxS`QEX#Bds@jW!=t0HIdE=)DPmJT+5FptJHd}dV8};RN}=T zKCgl&DRXbG((nMM9TWt&2Qw(z8Yl`@^L%Dj{(a2#6v)^Xpz3$FC_6({yg;ne#Ep|` z(^9qppW!jc8+G(vtHMoHL#Vo=s>=bMS3L-*NH4w-?a7#G0N|hYwCrV6#3uls{4|8z zK!)*Qh`3J~4Wgzp;gC94-JLn@lsEl036GnCmpuLk29()O?x>QdmFQGdE5ydkKvti4 zRU++>7C3EIJ*7}V*2&sxiAF5|2S870e^>VG3X-gMGZ1$nu=jl9zpF}q@Q5&Ezvc%3 zO7Wwj+Fu>^>MHRL-CBmQ%EW&&t;E#G^B8{*Kzy@pZ3`e5=^+#^%B`dN308_Jb$}uT z_dBU2J(cJ$SyS??aG`m9kvl<_QY?_DESZn=rya_d zVJrUNF|aD=3}stk{wBI=hd42M(A3X)d~5K@YpEC}j8HlzU8PxomIG~b%^%##z)>Ry z>r4vLmMvgfPX+2kJu|NyU}d>iQR-yNW^TEJC?ryur@8s+WO;u4uTCN+JbV&_Hs${9 z&3a{4+OVdoqSU&he?Dpfv0@CNpoDanojwcW{!cR?Es)j``pK#}jeL%tzMSNIR3aKE zuD18j@_ENX5WBdnOcI1@Mama*fP9758lZMvapuL&eGy9DSL)co=feyN2Fi_5n#Az} z9nko$3vKer3JE}QrM z&70L*4O_*|k3-GiA&=jC4~FADYCcgDz4y7cO3f7;wIhaFi~DcTK69Jc>$g;$6#phI zh>o%xf?b~W*fbZS)vAwcFLVe#Z<+a%7ER{g(U1KM41MP`6rSKd_?~xgrkQoFVWW2J zKy`7tAKPR0J-f9?Nq?84(xW0fKQ#n_0BH1uKdcn*795EBdqR@Q4o|_6IibO-cBszM z+8E$KCsYLiaLF^U_Aq&MypIuDB$ZfY>c*R}!J*Yu|Um#@sga9?s&9 zv*9cJws&|E0!UN8Hx%EtOuwY@a8}-HNsb{Cn+N0;g@|U0%CJHFD&@5)5#btQfx#Z< zJ?RUXZX*_ZHFxd}GTQUry(>5eDhKM-QhOd6jp8O}?X&EkxdEbd#V%SR#P!B;wf1Bb z*H;(hIAFfIODvu0?x`%t2h{_yIC{@1lQ$ldtdlWK>u{ZE`^6!Uxi>UkpN6d;PbB5Z zR-#2Mu1sDu^7z+B=vAx|Rvt}!S+v3gM9K9~a`T!DF}EchGjgL++p<+S`xQe}8^l`RC)owEG}sJ;9xH zvip3v{(w@c!`}*|b`lPJR$@#mR(oCJ-JfuwrihWXEN*vqG`Ul!`en|N6j;yTf-8uL z`*IY@lVwh}*w1-)tOOSsHt&xx7rGTjTOYaG{>8@zAMzss(RwP-qNnEefhcNUmU7%L z6!)hl`*8*LAA40%$1B{`Qty$TjP2S+yDKNzV7?m=z~9tR{0_=hD&?1rDdYT@x#bSM zT8Xgz6J^DLa_?1bIw?74z4Tzu9Y=p1{Chu%5GM?*$?vrTmub7p!yY0SPJb1+c`s$9cVYUR>%-c-nYr?r-@Vn{?aXaao{>L1WFs~%)BUP5?L`ae1uJ)& z%a8*24o6xw$vm%95c4(Jsc;^Y(Ts)q=x_h9k+K{Jo(R^uOYtBu@s>*cI(6cC;}Ix#lWg+}~Smyn^%kXH9=M=IpCjd9(LB zVcak>?Z@p6@aOwW9SPgz&9gX4jtY8ji&|H;er>j8J-@zwTp(G@&o*{z3e|7CiGM$cXjl4j~J4!?mu6Uz5?#y+g~RgR(BiN99?*P8$FnFiZ@p0?Q-NO*6_+6kp2=0J=nhrF_ zLm!%eipK?-xia03m5!qBI%MKkj@JABeSWFqwm#eMGxu>DDyTdToIIu6;{LPG%#6xL zsIll4@cK@C`uzSpzl^73$$MLlucE)p{q9ivNvQZw>3th#A8`4sT#*6m#ZUd%J?Lml zyE*L1Jht_*a!C^wTm`ut>gwWH2r><&E>jzt%tAhQSq=nyHNS$n8o+nPtj#C$MGm#O6yWkVA<2kEV(F1 zT@>=GqE}3be{?1~FJU9YaV&foe}hmg%bfty=^*6a26=c+o)2c8M_%X#FhQ>Nrw*Vs zdmZWHV@aBeKO6FHqWeFgo78P|sA^WGE`fdYaP>IXgijxSJsyNRkl;M#35{AH6z}kV z2;@B|!Jbq1_(0@%^Vgr(Lg_Ahv1r~NcH6Mq#)eK8$gj~oVIp+7DEgab&Y}-;cY8Zp zzq}W|a(vUp+J*|mzN)*$d2eAJYZ{-X5I;_H1=@M%1t|_#E7NKu5MgS`LYJKa=b@SA zX6+(f4drTDiL6!ju2qx2kp*slrljTmlix!SXZpw9XzOV{Dx571D%%kT?U7M3LB6@ z=YHtZl<^tPn8;3A^1JJ&Rr>>L88rigQyVAw>|K|>8dja_pmiS<$!I?64|;qpOI>Ib zsz%GcYpl`_559?_C&3Kje+N7Ps1+`dFzOa=F$7r0Xvxnmv#<+?`Dc)u zS@l{=&jxB7*BEsp14tGwgwA53>`xGYs8^q?KxJ)8*0@&|w^=ZfRPXC((C)rGJ3+9& zMCG;;Zd9m4vs3pgK`kNXx6-0_wezXjNMPyGzx7|c&}sU06DW_2Hw4-Zn`|sfswpNq z4`I~*66Rj2v>yY{>@asqOsmF5g)7m0eZNv~lgWYn%aaU|jl&c2Be!%u|EoEh@_sl0 zR3pvcBx|s%=Fy&vdJSG!jU@efxBb#hhoo>MN>#HV-2!$@sZx=9aa-hUx3{y5@=DWV zrr*zg?S0PswcQ*x0stp;Rzgu*n}6??3Kx_ghNzDP*-!KPxX;%#c`fl_UxWzvQyIe>?aB+rsL;q<%l+xZ>FwRmbK*#nSkhU3c*AM&RIm9T~@4RLHuaH$ZKf?XA(%$YScGy;Ah&GS}F!v;l zfTb+i_l`SfLwj?KhTlZzey9uoPMM;--0fu}I)rLrlLnCUiyW^Xj>p`LyBmC@ zP?QC5tJL_~sIqmim;`XnLbfBH`(yWN(nVYg&jx0NZQA8|#^M4WrGs4a$MfD@!^u!K zlCFBk;4Z2#O~s;zs$1i;-e}d7UF92J{%R9}J1w`SLLjrC={{cAhg0J9nU@9rA^;)v zw6pV!^Tm68>rB{|CRhWl&iq$2DJHqFcFFXB*h0LwzRXb}&w2FFb|)Jpj$=_qDHHS^ zw1-B2UHW=or@ z_-({6>wFf0P)*L9qD3KQ!{M3P&H6$}@WG3s2c}9(z~oNJ=|-Y?bElhxu8M#C-8C8= z^I3wMM{sPrm3G04W9_8HpFFMHJcE6r98~id%`DF!3j@d-aprys0%4uZvAVu6vc7!&W=(7y-B94+xEkAX zYycy&CAhFw^OB14s^emxTU67c>-wl=IpSv3NuYJE^roN>L=c<8ZSuOYPN;0o&$>VV z{zsa(-lb+D=N^BhS)*}U^}{Fi2J^1CBqiGs>UC>uApjLwwSYq@-SbTBnvCzlB3H>2 z4cnrkL&N7E*>OLW zUGAD;Tl(`E#7g4==a+;P5j|Fxky`Mt6(Iz@xoZWxj2QX^<{~>O(taNnh)w;du z)`fF4mnFG)h@B*u`u6)(hDy4MsO8mPZ}+{kT}tP38J{s};i|6~i>51LOH#~iC-Fte zzcAp5{3_M$8D~0GI=i}kq?e5xWpZm^ZU;I|-Xm?=6X-TK9S=A!27g`~0Qqc_d z`{C_83E|rxFdA_m)JhTlsLOvz<=5zO7ED;Yt*0GK(tF7}L$imGsJCaS$zJ?WUw+$H z=x$xPG-l?VAT7{3iDJ0?(A=!A&BN&Df6kVO@R>Vs(#$;=yYRADDEHvjeONQG5w_~E zPbE|xy~pW(f1h`>4WOP^v7 z?T9BGsIvWxq(GX)ix@xHzDqV)S*V-r;Zj>uC%(PJ^jF_*=|(iWSt!4`vF7@|&Ngg0 zRhMGSWXjV0yaQGKy>9bGF>pV&^`=9wyyGTkz8c72dMtmmHp62_zoN^Fj+Nv5-BGgu zLWCULY~^Rk~LQ`k2E=)XZzk(V071#?yBH*bfhsn;C@ znwh;7f4Y7kT7J;y*KjNp)3`Ut^Jh=+kd1 z%9{^v34L(*ORe@lKd@;nyr0kK_6aInP^5Psm3o}BZu}qRUHMy5Y2T-u!OGMc8_P_c zXL_QGgDYa6-4YAiz+(68LlthaupP5W&TGU)Cb7R#MP!Q3abjE!zY9RU^dY^ycy{>mTKb-60KHvL$?&Z6F?)yGaMHgZ=SfRiQBOO)1wDM*Nqs354 zv{T4z0vaz0vpT_6hn-}o>o)2qO<(wsJ6)9pbrtWjMRgK;T|8*%gIR;bBgdot6}5U( zXeT6ss^3f=Bad|P_5IGCGgihbZb9WE9G{9&>%vp2&LG=T)gy}N9?!-u}tMRDR zN3n(T>8gunv$JD_t29-cC(=mc%P6J+iTKt0Wixfd=cDtN@^(?Z4k{|0drlc3BNH0j_j+pJpHF{f)_`V&c!jrFVLBHuA}L0_`>Q!K3RR>Q2N( zS2IsNe5z014(bOpaU)3dJTforh#KFSQQ)zq@Oz)wp#!XwW z5QF+QSrkBHkZ_AsNdcoJ@?(wF)OenB0X@hGs0Nwi%d2J=btRt)yoZnd?L|qTshaOz zo&6X|b4>U&f&=b3R=dc5+}-9hJA;<|kw{p(E1QpE+Ux+`g>`J3k&c!W>BM$Y26}lv z2Bvz|FVe|)%v4ExOt*;>E<#Z$a|hl4ej%7l&yT%QV&EQ%FL%PkDV7#Syy3X~uess< zk{T^&=65UQ1=rE~GNqU+JKq}i*Y1nVbFk;`?|)z)z# zA?GNudsSUL*TzBa9PD5rI5~m3{WwC*;80{rMYCh-eSJDfP$)hQo`=-K3nTPnK7?xX z)ivo+E2^5!NDd=sK#M}oTw;tpTckHOvG;2P=yn2Pe9k4_)qQEV$@9ZeT}cX2CAFWk z?8Lw<7gFQhb-RAXJZsV}>rhQug9y(^=vacn%Ho<&52S@8 z;a!%wXs%-ZnkR*iNS_*UdPyPwEDRKR!X|GN4diMs&3R(F|FMw?XyvR{ax@|Lghx!5 zOl{O?FW@g_1!b{b^k-nMdt=E&ERon)Pl~nYRfQTXi{qQ&(>vw0H_P6^aqsU0UdSJ8 zR$cs{pR#Cty=m>%7aeI&+~*7snP;D-i-R_-d3`X(OjxHu3s zwfu}FEth8xBXNY8WnAs`4{#}=86F{pM`prfGU1DxJs?Tlzltj6^-?Y{4x$P!YxE&2 zFw8D|W_@t)texUkei!T-rRxmovicbfk$V4!8#l^?d8c3VM31{)e1r zU)BFB;Fw{D9*Y!&Osvz9aB$K>OCN3Xr)JBoroAc6WcAvADBAr0=!3Xvq6zw7>8X2a zS9*U`Siww$Nw?KuErY*4qX+gYe?+kd`D>|A-5)2*^gu;TP4l2Xq-#Z$$9~*Ranr9E zmot;?rk2=KrOrLXcF@F~rDc3ZmFZc3dl9uccw0?bf)CB9Dtq*~snlKRnaSAB48=^p zGws%H(yqk7t5H7IAj+1!lbERZOV*6wSCzZ3Jge*PtmD|0lWx9ToOEHQ!|}#<3Q+p& z4sVm-!xhY(S@cPt5+ntQ>vOm#9*KqNhX*{qWjDo26lX3KEf_y2kOtpXZ38wH?}cIO zeTYPbwl39mloN1#@p59R8JX2mzxR`}4!Ea!w;H^BUuNB~J&O(^0p7!DA!b|1^z7cd zc|)+68n3u83tgsjl4Pr>5Y}X-ys4;?Apwn3EQ?BqUf9Ps(g|-}=a*PHR+%uZl7Y7s ziAy{K0YMa-GSVANn?69-x)=(72Hj)3^+ZL&PuzxDLl4y@te3R-e#VFxr~XD~?o`Us z9HwCCfN`qh5(l_Y*~gKYPGsa5`}1~>(vQnc5F^W+=zGcWND==isDpJNAZE;fibFjTZ3uR0+} zVGeBaZMbHVJZf9m5VMFmania(cem+i#mv4w5?xD7TNLn86fQb!+`1qnWfIlwgYf~0 z*C3ngTQU#_5xbG;?6CHz?o@pe$&q(nrKh|L5x*u2YxgUI2Z%Fm6|VNk^fFJRi6-M9 z$Kq)R($d-RAaKEa;B$LSY*Lp9p*{Df(4n$qr3{ZB``9%BG%{ca?O@lnZ~{oyc`Q1icWdc?i=!6 zbduJK!HC6Opnw0+R1aQOkyz!m@~}PgzDr;_!+G#&gC2x@EA&2u+&LtJ=`NpT$fij1 ztNH9>7mW&J%}(NR&{sB@t^cf8lc5f4ur}tQ8Pt5)x4%ZO@TN>mhFyi3GV7jv0IT{D zd*9`HoZ`96m99lt@$KJ2Sh2)+y^f{Q499vo^Zm|UerSn@Q!ND}#>3#3%-#M*304Er zWsQ#cAc~})#Bq486l~ixlo-|lnKN?tnP-#sm<~SI&8V$$Z@=NT;%(ygYQ}+uBDcJJ zZD~TK`udC5N)=ShglNp$4tQyhx9EASg@Gx!(WbDO=N?eH<6#fbK2z;1%@l^OjkPkc z@bJg_;E@w>Y$+YjWiOzXEAto}iiRi6Pq!Iz`$XXv9SUY{r_IvxdhNg#@lG}O6qN3$ zcWQ1ks+ZYRCip2NP*@~FF3lZz6XIB1bNJ6+mRqUAqoix|@|1D?PBS5UwCuDdUi!H* zPQim3qfmCD2vI3bndIb8%=$e@S|)lnzcgc*=5iBB1D9M|AxMMPy_=96j9s|pdavwb zWMe2Wjqau>ujX(^{8W57yyed`9|fMOX`94r_l_?08uEU=aU()8DT@G(BDMxAY~rBh zlhOWaSH-(X<;S;$5?r^VV?w_kj(M8-Eg0|wb#3LZF^#dKa{(B}I^DthF^KXcU%q}r zkrv4ryQP~0Fev9Zv#02ddl%L0S&lNYgk6jE)6KA2PgI;oYzE!A+pqv&(8cV2Bh!=R z@&ph4=?XdfG!wp?9Kw-BCB9tr=Y8T^#gv=;sWLu-{Yo<%$Ce|zKF^geXs<+gCJkS8 z5~=7rRi`bX&_LF!SN|Cc8187xh}D>AvC+`{7|79(BOY?uLva4uBQ`)W0yAsAydvp{&`%@x$v(EfBu9Ezw2%Mh6!{KqyHhgbA5B zF&lE7CU#LLeHW;E^}|UVXTd3Qvv%4>lSBJdDM`GbaJp7GED0Pd(a=LGgw~ImjnxSH> zW7%d=$32&b!+{TM>@3VNkmp3rewPIWmDkVx$z@~O?@99O( z`G!l`v>eBxdt?#{ge#VS3RM$z_?06?+1Y%j;vvHrP1WcTvtF9^6HfTklSKAdHc$q2TDB9gNj69YlrYzz{+~;fK^?!aafSVgA9iuEiw*M zLytUC_Z@(Kk>?5zTK}4Mx+<=6bU71DT=b%adXf0JoMAYw4-5ro;L+*4tltj`s*Ccv z5$G-=$k`%sIAH)~>`&jK;jmZrxnjomoH3NA4tNb6B!{WPctm4f?9A}XxSWps-n%&I zEH9GA!;va;6uo(pXuiw#V1<`TYL26Gc6`SP_h ztqwhw7Y#;6eRNRUQ^sbyWaoeDwWYwYwtWOK~{+^hE;ab31`|ina2WKyF8e zmDN^cqb#q0-~2@$t0eBa`sqm!`U+o7yK>RN9+_11rK+y@-y4ja9s`Nox~?Ap%RqDR?;9u^5RHI9Kx_2x8|befnh@gu8(H$-5gFfr zHUm;G;a}#yzy@Xvh7%Y|Qt=Knm-Xi`$!q|pwbbs}P(3EW>Z0KoIjJ5j954l^h z%oA}b`befF6cT(`>U!Lu!`EVn429JHl;*cS)s=BLg>aVu{>&zC+=XGK2>mGZft?+i zDfeB>uUqS``0XFL6?fZBTn1giCKWGz_*{~9FCxQs8-GGFv&9={A2A0jF zPo^86YAoYh&-J>Y!;om@Ryxx4` zAff!K!q;vSWKVodDUThwf}i2+I&(bawr_-<>MUTZdE%#Emd{;#xF!_@p8o}Ao;pr{ z)7Wqoh|{qACo4cC8aq0U33RGOKR$arv{zYi| zYUzQDYM-tP2UAA~1Uy&H5C=LdW4_+mkySsk@UX#r0eI_X+kOhH*Jubd8y|T>KZs06 z?HWtnI{UkJUu%=ujSJjA1mF-x=AaIOSTW7+%0|%-uZ$kn&oIz;X(qA5h`mXE#3ZmgS=ZrZbyrM$00)5L$S>UGc0A;pcwgcy0mMs! z8$Gsx6uAwv-T9+1rVR*@qDd^IV&F+?%%p z7Bf~xjs(mmT}bdN~Kx7#|7Rw{$fZ2u8suPqt!Hvm3wBJj#6nSkQI$ zMq4-$=J7L8fZ5^S2~AtHt2$A}sruoVZ$X;=-?ZrSJ{v(eUm!u3R4S@gI0W7T-!jxl zH)ztXQh{3nI`KnI;P5ly0f-n@9mb@3ZE8Qgk};rRwo4}*gCF{)*^<5j58w4NQwf0# zjrViX%F;OO(xB=!*y<$U2m&C(yS9x*Z*!-0v(46K3t`SY@S|=|p6vyHvku*e=m#bY2%8 zfoyS7X%%1pb`B^)_jr<(xj4F|pr(Wy>%}3(E_|08n|_>?0B{u|*4%fr;Y*2h_~ zH&k6n2rGciJ+A>Uwu4>kx1j-pqu6!2;Lr79O3X8Az`g*r&;bG=xVPoT>eoDNn3YTb zp}N#=(wo5>j3`;IWt4K4I<)?AV^YB4-Zko15c6Jr8yL1+Fod53KW9Mb91NL_dd$n0 zaQ$LtM~y-GumMxfe|y3IORg{+69euA*nCp+9|2$7`+vV@{}NdIuZSs<&qqaEXx7Kl zw?H6b0E2`Tzm4AzL6C~?QM^u=QS517h8Trr% zjMN7ZQosH!kb09h!q=iJM!|OeJu`H9%S$(3tqe=X;}Yhk;BP)hDh{?l80}9QwfQ>O zqY9&ISE{EoxeNW=pD(uuk_oeujHvMw7B2I5TO$_{9KSgf3MiJ2ENnC@#HE&`+Qp4D zV=GR3l1e#)uYC^BaU^0mudVzb=9P<0b;&@qKhd*Y!Zl=->?;?v`Cqzc#UUYdz_>Cr qfhhK0iY!V7BD%#}!a%)vvZ1f%dE;b{5IkH4Ugytxo?)L3zWtx<_&HJl literal 0 HcmV?d00001 diff --git a/lib/api/api.dart b/lib/api/api.dart new file mode 100644 index 0000000..a4d5883 --- /dev/null +++ b/lib/api/api.dart @@ -0,0 +1,31 @@ +import 'dart:async'; +import 'dart:convert'; + +import 'package:http/http.dart' as http; +import 'package:openmediacentermobile/api/token.dart'; +import 'package:openmediacentermobile/log/log.dart'; + +class API { + static Future query( + String apinode, String action, Object payload) async { + final Completer cmpl = Completer(); + final t = await Token.getInstance().getToken(); + Log.d(t); + if (t != null) { + final resp = await http.post( + Uri.parse(t.domain + '/api/$apinode/$action'), + headers: { + 'Content-Type': 'application/json; charset=UTF-8', + 'Token': t.token + }, + body: jsonEncode(payload), + ); + + cmpl.complete(resp.body); + } else { + cmpl.complete(""); + } + + return cmpl.future; + } +} diff --git a/lib/api/token.dart b/lib/api/token.dart index 966a4d3..775b0aa 100644 --- a/lib/api/token.dart +++ b/lib/api/token.dart @@ -5,43 +5,50 @@ import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import '../log/log.dart'; +class TokenT { + String token; + String domain; + + TokenT(this.token, this.domain); +} + class Token { static final Token _token = Token._(); final _storage = const FlutterSecureStorage(); String _tokenval = ""; + String _domain = ""; static Token getInstance() { return _token; } - Future _readToken() async { - Log.d("reading token store"); - WidgetsFlutterBinding.ensureInitialized(); - return _storage.read(key: 'jwt'); - } + Future getToken() async { + var completer = Completer(); - Future getToken() async { - var completer = Completer(); - - if (_tokenval == "") { - final token = await _readToken(); + if (_tokenval == "" || _domain == "") { + Log.d("reading token store"); + WidgetsFlutterBinding.ensureInitialized(); + final token = await _storage.read(key: 'jwt'); + final domain = await _storage.read(key: 'domain'); // check if value is defined in phone store - if (token != null) { - completer.complete(token); + if (token != null && domain != null) { + completer.complete(TokenT(token, domain)); } else { Log.d("no token defined"); - completer.complete(""); + completer.complete(null); } } else { - completer.complete(_tokenval); + completer.complete(TokenT(_tokenval, _domain)); } return completer.future; } - void setToken(String token) { + void setToken(String token, String domain) { _tokenval = token; + _domain = domain; _storage.write(key: 'jwt', value: token); + _storage.write(key: 'domain', value: domain); } Token._(); diff --git a/lib/app.dart b/lib/app.dart index 3d1b142..c3273ea 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; -import 'package:logger/logger.dart'; +import 'package:openmediacentermobile/log/log.dart'; import 'package:openmediacentermobile/login/login_screen.dart'; +import 'api/token.dart'; import 'login/logincontext.dart'; import 'video_feed.dart'; @@ -18,15 +19,10 @@ class App extends StatelessWidget { Widget build(BuildContext context) { var loginctx = LoginContext.of(context); - Logger().d("We are logged in: ${loginctx.LoggedIn}"); + Log.d("We are logged in: ${loginctx.LoggedIn}"); if (!loginctx.LoggedIn) { - return MaterialApp( - home: Scaffold( - appBar: AppBar( - title: const Text("Login"), - ), - body: LoginScreen())); + return const MaterialApp(home: LoginScreen()); } else { return MaterialApp( home: Scaffold( @@ -37,6 +33,7 @@ class App extends StatelessWidget { ElevatedButton( onPressed: () { loginctx.onLoggin(false); + Token.getInstance().setToken("", ""); }, child: Text("logout")) ], diff --git a/lib/login/login_screen.dart b/lib/login/login_screen.dart index 301c9a5..10b28b1 100644 --- a/lib/login/login_screen.dart +++ b/lib/login/login_screen.dart @@ -1,23 +1,162 @@ -import 'package:flutter/material.dart'; +import 'dart:async'; +import 'dart:convert'; -import 'logincontext.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart' as http; +import 'package:openmediacentermobile/api/token.dart'; +import 'package:openmediacentermobile/log/log.dart'; +import 'package:openmediacentermobile/login/logincontext.dart'; class LoginScreen extends StatefulWidget { - const LoginScreen({Key? key, this.onLogin}) : super(key: key); - - final onLogin; + const LoginScreen({Key? key}) : super(key: key); @override _LoginScreenState createState() => _LoginScreenState(); } class _LoginScreenState extends State { + final TextEditingController _domainTextController = TextEditingController(); + final TextEditingController _passwordTextController = TextEditingController(); + String error = ""; + + Future login(String password, String domain) async { + Log.i("logging in..."); + final compl = Completer(); + final resp = await http.post( + Uri.parse(domain + '/api/login/login'), + headers: { + 'Content-Type': 'application/json; charset=UTF-8', + }, + body: jsonEncode({ + 'Password': password, + }), + ); + + if (resp.statusCode != 200) { + compl.complete(resp.body); + } else { + final json = jsonDecode(resp.body); + final token = json["Token"]; + + Token.getInstance().setToken(token, domain); + LoginContext.of(context).onLoggin(true); + + compl.complete(""); + } + + // LoginContext.of(context).onLoggin(true); + + return compl.future; + } + + @override + void dispose() { + _domainTextController.dispose(); + _passwordTextController.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) { - return ElevatedButton( - onPressed: () { - LoginContext.of(context).onLoggin(true); - }, - child: Text("klick meee")); + return Container( + decoration: const BoxDecoration( + image: DecorationImage( + image: AssetImage('assets/images/login.png'), fit: BoxFit.cover), + ), + child: Scaffold( + backgroundColor: Colors.transparent, + body: Stack( + children: [ + Container( + padding: const EdgeInsets.only(left: 35, top: 90), + child: const Text( + 'Welcome\nBack', + style: TextStyle(color: Colors.white, fontSize: 33), + ), + ), + SingleChildScrollView( + child: Container( + padding: EdgeInsets.only( + top: MediaQuery.of(context).size.height * 0.5), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: const EdgeInsets.only(left: 35, right: 35), + child: Column( + children: [ + TextField( + controller: _domainTextController, + style: const TextStyle(color: Colors.black), + decoration: InputDecoration( + fillColor: Colors.grey.shade100, + filled: true, + hintText: "Domain", + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(10), + )), + ), + const SizedBox( + height: 30, + ), + TextField( + controller: _passwordTextController, + style: const TextStyle(), + obscureText: true, + decoration: InputDecoration( + fillColor: Colors.grey.shade100, + filled: true, + hintText: "Password", + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(10), + )), + ), + const SizedBox( + height: 40, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text( + 'Sign in', + style: TextStyle( + fontSize: 27, fontWeight: FontWeight.w700), + ), + CircleAvatar( + radius: 30, + backgroundColor: const Color(0xff4c505b), + child: IconButton( + color: Colors.white, + onPressed: () { + final pwd = + _passwordTextController.value.text; + final domain = + _domainTextController.value.text; + login(pwd, domain).then((value) { + if (value != "") { + setState(() { + error = value; + }); + } + }); + }, + icon: const Icon( + Icons.arrow_forward, + )), + ) + ], + ), + error != "" ? Text(error) : const Text("") + ], + ), + ) + ], + ), + ), + ), + ], + ), + ), + ); } } diff --git a/lib/login/logincontext.dart b/lib/login/logincontext.dart index 1b96f4a..8f30c2d 100644 --- a/lib/login/logincontext.dart +++ b/lib/login/logincontext.dart @@ -17,14 +17,12 @@ class _LoginContainerState extends State { @override void initState() { - // TODO: implement initState super.initState(); final token = Token.getInstance(); token.getToken().then((value) { - // todo this context call might occur before app rendered correctly! Log.i("The token value is $value"); - if (value != "") { + if (value != null) { setState(() { loggedIn = true; loading = false; diff --git a/lib/preview_tile.dart b/lib/preview_tile.dart index 54722d8..3ea87cb 100644 --- a/lib/preview_tile.dart +++ b/lib/preview_tile.dart @@ -2,24 +2,54 @@ import 'dart:convert'; import 'package:flutter/material.dart'; -class VideoPreview { - String thumbnail; - String title; - int id; +import 'api/api.dart'; - VideoPreview(this.thumbnail, this.title, this.id); +class VideoT { + int id; + String title; + double Ratio; + + VideoT(this.title, this.id, this.Ratio); + + factory VideoT.fromJson(dynamic json) { + return VideoT(json['MovieName'] as String, json['MovieId'] as int, + (json['Ratio'] as num).toDouble()); + } } -class PreviewTile extends StatelessWidget { +class PreviewTile extends StatefulWidget { const PreviewTile({Key? key, required this.dta}) : super(key: key); + final VideoT dta; - final VideoPreview dta; + @override + _PreviewTileState createState() => _PreviewTileState(); +} + +class _PreviewTileState extends State { + String prev = ""; + + @override + void initState() { + super.initState(); + + API.query("video", "readThumbnail", {'Movieid': widget.dta.id}).then( + (value) { + setState(() { + prev = value.substring(23); + }); + }); + } @override Widget build(BuildContext context) { return InkWell( child: Column( - children: [Text(dta.title), Image.memory(base64Decode(dta.thumbnail))], + children: [ + Text(widget.dta.title), + prev != "" + ? Image.memory(base64Decode(prev)) + : const CircularProgressIndicator() + ], ), ); } diff --git a/lib/video_feed.dart b/lib/video_feed.dart index 19cd719..82c988a 100644 --- a/lib/video_feed.dart +++ b/lib/video_feed.dart @@ -1,16 +1,38 @@ +import 'dart:convert'; + import 'package:flutter/material.dart'; +import 'package:openmediacentermobile/api/api.dart'; import 'log/log.dart'; import 'preview_tile.dart'; -class VideoFeed extends StatelessWidget { - VideoFeed({Key? key}) : super(key: key); +class VideoFeed extends StatefulWidget { + const VideoFeed({Key? key}) : super(key: key); - static const String testprev = - "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"; + @override + State createState() { + return VideoFeedState(); + } +} - final List _vids = - List.generate(6000, (index) => VideoPreview(testprev, "title4", index)); +class VideoFeedState extends State { + List _vids = []; + + @override + void initState() { + super.initState(); + + API.query("video", "getMovies", {'Tag': 1, 'Sort': 0}).then((value) { + final d = jsonDecode(value); + + List dta = + (d['Videos'] as List).map((e) => VideoT.fromJson(e)).toList(); + + setState(() { + _vids = dta; + }); + }); + } @override Widget build(BuildContext context) { diff --git a/pubspec.lock b/pubspec.lock index 2e8e122..43afe60 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -121,6 +121,20 @@ packages: description: flutter source: sdk version: "0.0.0" + http: + dependency: "direct main" + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.4" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.0" js: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 16f8a06..8898cbc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,6 +36,7 @@ dependencies: cupertino_icons: ^1.0.2 flutter_secure_storage: ^5.0.2 logger: ^1.1.0 + http: ^0.13.4 dev_dependencies: flutter_test: @@ -63,6 +64,9 @@ flutter: # assets: # - images/a_dot_burr.jpeg # - images/a_dot_ham.jpeg + assets: + - assets/images/logo_circle.png + - assets/images/login.png # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware.