From a4f964bb20ebe300238b0ef14bef64bb5ecc1cfb Mon Sep 17 00:00:00 2001 From: jouel88 Date: Sun, 3 May 2026 08:26:19 +0700 Subject: [PATCH] last --- analyze.txt | Bin 1356 -> 0 bytes analyze_fcm.txt | Bin 754 -> 0 bytes android/app/src/main/AndroidManifest.xml | 8 + .../drawable-hdpi/ic_launcher_foreground.png | Bin 2478 -> 6518 bytes .../drawable-mdpi/ic_launcher_foreground.png | Bin 1450 -> 4018 bytes .../drawable-xhdpi/ic_launcher_foreground.png | Bin 3575 -> 9220 bytes .../ic_launcher_foreground.png | Bin 6698 -> 14633 bytes .../ic_launcher_foreground.png | Bin 10283 -> 19828 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 906 -> 2499 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 621 -> 1427 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 1263 -> 3463 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 2120 -> 5645 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 3097 -> 7864 bytes android/build.gradle.kts | 7 +- .../reports/problems/problems-report.html | 2 +- android/gradle.properties | 3 +- assets/images/icon.png | Bin 0 -> 97010 bytes .../Icon-App-1024x1024@1x.png | Bin 29595 -> 51260 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 354 -> 524 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 525 -> 1204 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 767 -> 1958 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 436 -> 805 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 741 -> 1895 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1159 -> 3125 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 525 -> 1204 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1016 -> 2729 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 1631 -> 4563 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 661 -> 1544 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 1359 -> 3630 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 702 -> 1861 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 1546 -> 4212 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 1631 -> 4563 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 2764 -> 7407 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 906 -> 2499 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 2120 -> 5645 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 980 -> 2614 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 2175 -> 5905 bytes .../Icon-App-83.5x83.5@2x.png | Bin 2614 -> 6711 bytes lib/core/constants/api_url.dart | 2 +- lib/core/services/api_config_service.dart | 17 +- lib/core/utils/camera_utils.dart | 70 ++- lib/models/announcement_model.dart | 6 + lib/providers/attendance_provider.dart | 13 +- lib/providers/face_provider.dart | 361 +++++++----- lib/providers/home_provider.dart | 8 +- lib/providers/pengajuan_provider.dart | 2 +- lib/providers/poin_provider.dart | 7 +- lib/repositories/face_repository.dart | 49 +- lib/repositories/home_repository.dart | 8 +- lib/repositories/pengajuan_repository.dart | 64 +-- lib/screens/auth/login_screen.dart | 10 - lib/screens/home/home_screen.dart | 8 +- .../home/pengumuman_detail_screen.dart | 145 +++++ lib/screens/main_screen.dart | 76 ++- .../onboarding/face_enrollment_screen.dart | 544 ++++++++++-------- .../pengajuan/forms/cuti_form_screen.dart | 2 + .../pengajuan/forms/izin_form_screen.dart | 24 +- .../pengajuan/forms/lembur_form_screen.dart | 4 +- .../pengajuan/forms/sakit_form_screen.dart | 2 + .../presensi/camera_capture_screen.dart | 309 +++++++--- lib/screens/presensi/presensi_map_screen.dart | 46 +- lib/screens/presensi/presensi_screen.dart | 8 +- lib/screens/profile/face_test_screen.dart | 254 ++++++-- lib/screens/profile/profile_screen.dart | 6 +- lib/services/api_client.dart | 17 + lib/services/fcm_service.dart | 70 ++- lib/services/websocket_service.dart | 162 ++++++ lib/widgets/molecules/pengumuman_card.dart | 127 +++- linux/flutter/generated_plugin_registrant.cc | 4 + linux/flutter/generated_plugins.cmake | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 2 + pubspec.lock | 88 ++- pubspec.yaml | 8 +- .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 1 + 75 files changed, 1852 insertions(+), 696 deletions(-) delete mode 100644 analyze.txt delete mode 100644 analyze_fcm.txt create mode 100644 assets/images/icon.png create mode 100644 lib/services/websocket_service.dart diff --git a/analyze.txt b/analyze.txt deleted file mode 100644 index 7ca583e2b0c32f5766f53762339160e842ac291c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1356 zcmdUt%}&EW420*5#5?Sb3n2arz3~nlk)r&yL~0VqrU-a=;ImVNP^dtn9IBN!US~ZX z&-(54T8&aI^sEHL=#PQs$*~rt9IUTRWTXyPevTp ztJiuzH5m=>YudGNtXwDS%iew5Q-n{@5mxGnoDxM$>95)u-x+vI*Jt4VHytjiI|0>H zu*yBXr%d5@tj8)uZraN&>8Zfaz(~BuVRF{1^xGM$z}=p?y3+Yp&ehq5=jua;i+`Og Go33|*PV0jJ diff --git a/analyze_fcm.txt b/analyze_fcm.txt deleted file mode 100644 index e1f58a88ffb6216dc4ec48bfada83b99170f5b56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 754 zcmb`F%}&EG5QOK9#5?%L1uA|HMZNJ394kfnYpK-45IYEXc;MSj5kdiR09os-C-&^@ z*l({l>Q!p5XT4}gzE#jhwK^3_YBlH)ye3 + + + + + + + + diff --git a/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png index 8d29d91e5773098a092b19add5674faa1a01194c..5075ce90f772f937002539edeb4e8c19b4fbdc1f 100644 GIT binary patch literal 6518 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 Tjmy98QvmYPD$qJf(=Y!A&{Qh~ literal 2478 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 Mb&O#(TJU%O2U;x8asU7T delta 1443 zcmV;U1zh^FAF2zG8Gi!+006kSr~d!|0CiAIR7FQ{OzMds@Ua^mDmoo1IvpxH9V$A1 zRxf}}FC8j69V$89E4J^2YrC|NsC0|NsAzx@&F#00g~B zL_t(|obB3)Zu2M*0AO;sI8M_x?Y7$fRm3=H-v1R>+yfpi$Ff$dMXFmc<_l(wu~WvD zNUz&PnyI1y0Do4pHUR5s0PAT#7W-&DvcLI6*Wf+pocA*60&wZM5yQeeS!47m##%Lu z{i(t@!WxII9RrxHJ&HAH4`VIb<5+{X09JpwEr7vaYhu9H#A=64V^G2%k5y_nb9^2H z01CVM)PQZ^D~H|T?lJaiQh-(U?WR5}Q(a490Hf+!w0|eSYP6dfFEna2 z;HCzN;cA`GXitB zFY^ASKOu^?G-jLTTx~d~gVd}7(49HmwG3t^!GAYXb4y3fXwP8+!zVw3nY)|CAongkL|^NCRVVP?O6#s&%!=tS?Qi;v1Kd*V^eG)i^6>RqK8T)?v7U@ zVcHRbt7}Q;%|-+@Q&`5bFFb`xwnbqOgvp}bSDb~h025ZxExU#dCLY7kFoVE#PL!-6U_#-v_6+lOY*Hn}b`#7GXEQdf5{=n{7*Qp{_ACkzKYKj+8H8GO)qEovU;`PA2Y)@m zpnVk>`RXsgSUU7s8%BR+7h(r{KMOEkgOyJrW4oQ($m~%yvojkl4?2Gqs@|>!qpf@* zPght@T*@>5gQASJS@u%03mb9lZT?rka})Y5*Y5?s-qk4m>ffj7#A_aAbp9#c*%tKbkWNJCo{2LG@oFq@nf7Ar{#{hG(n^15VNQCgfS6etokJS8RT2Mpfhx09U4QC#WvNJ35*WSfg1DA zzb|Km;Y!IxT>)cBjN@ozOJVXaG-hrfRre4UPn>O-J!+??$xd!gZl_{8#<~|>a!{Gh x)@;UR?wpbS6_|^Ibub$^D;!{lH8Hll^$!w7_40?!*rEUc002ovPDHLkV1fg#sNetq diff --git a/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png index b03a3d321d3baaf4c8883f4b1d14b8519f00e4c4..ba15cfee57e384b041aee647bb12a347eff62473 100644 GIT binary patch literal 9220 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 diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png index 871938cb7f9f52072b6e44342c8e3605015afbc0..8842fa14ff47acbb33e9649fc38f11ccab35bb69 100644 GIT binary patch literal 14633 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 literal 6698 zcmX|G2T+s2)O+p6&BTbPW0w2-@Y0?cvdhZ|z20Ql*GU6Zm=a{&_pQv*(_@bN0^c?42#KW~Tbg47>~!6co$`H&Esj6c^q5 zjGJQ1pYzV&%-BL#|Do|(EOfh$PvENB|7zH6nQ#-C|Cu{g{Qt#U?R<;IBIlTFDsqnh zYi>94eby1*xhH(ipM$M7zTGszbF&bC^_)5PImhSB`OtQ;z;*!i{vBm1&o#t(0AhaT zrne|0jddl-kLb8|^P+vM-~KQieY}^MHS~S8wzui``+sNuUsBpVy(uVoG!0M)i^n;? za#w?vO4;C?J}Dcj?t$rDrX{puraw=Fc0y_B%dLpgu>QTvbx&&c9)I$(LL;wW{FbY0dL&O?UdhNO{vW4TKJ1QP&&r?w zz~s}uB6IcK*lOsS@vyO-Kj5P@Ys7o)UAA=4hr$cwVG=fDmbk4)vRxPk7!^s~iwg@2 zb_;gX`I|zmisSu?I#W&1@qmK&v8% zEO83tR{@OWq$UA!{;u_Rlgg&McsEz8=N&5)J5?57pQ;*OhkvD-<3^ns_|dJ>jzNxu z*9m@vvjU~L7)Z$uFwvk*AWoLl5My<*?+_^!PUeK?}}ms6+J6@Pk}dGL_Oj{DJt>QyyrZ zDGw~shhPalYe^F%yV`+;Nh{)jj3=udDeXI;Eki93wW3~sZE(P}g(=zVHF6m92z*Ti zXlr+OX?1I9caNTJE-f#&D&32o{sA#JX0GedQ*s=xarCq^NMYB$ePitBB?fc)2}}4ztL+aCs?(P1uLo+49doog{Hb zTn8NQD-P6qF9IXV^dwHM0bs_1c7#TPGXX}tV_F^YUPJ)pV$p>+r9o5*+QJf*2$ax; zh&i356ejXMeYud=TqN}N2%t}(gK8np0PYMYpzi4b-hw3gM&A`&%5=N1vl$iqz`@2G zL1YrK{9`oALsor3x=8r?$^UNkCvZv3ovCay!H5?eEv2yhH^PjK zhX}Bs-`J1wWLyDWq7S2(lKX#U6tEH@^L>KkhLV%}?~6?@qP+oUm3|q740veb$BJIh zmS0M_NH$oNGUA+-L1=?B`t9mq4X^I^_acG>j0MMkf?&sZ+ipO4XIUntLi=@sZznJm zs9q!vZ3^QK+}a_9+}G1OM!C~WThFH>$oz-L-+04wveWaq*6KMoFRJKSsKgO+XieH2 zLZ9Uy4uK zPc|-&_$YaE*`KP2haEqR8xg$@|FgS{gZ-2vCA?|tV1g??CvQ23&aYelIc%;<-IKPH zC2E-N7utSUjqt1~xZ5bd0sTEWPeZcfyFwq6=@{RPbxWEig%vDgVh$>LUraS`cd4;m zkV7Vvd^qJz-+g&I(7|Q{2s6?Yuzp+-^Blkg1@5GjE@4ZDS~c2rHWC=px~0ok&?Ex1 zM46OvrMr@;14(GZVj~7z&JL{(x4LCy!t75^Ll9?&{TbgjpJG7wezz@6j%4e(l7NVT ziAnUodlff8gAQqn1`ob>_8P%cL)YQKdsQl1cHb_;N))9-d1_R3)rsNF{XJ7`Y>aZR zI#$k%GqK68TAYV0kLRUFxH8+Jhuzq=wum1@}B95;EuWE+(+nD0~pJfYB})EO?%1bygpnc z!MIEnTrU56T{fg*R*d%h_|m(Mfsw>gqO;db-!1y29B$* znf?v9s)WK7?xx>_^zp|*Y2ytQiGjXlK?W@7u{TA|K(v@9)XkFQ)C zObqsU?cXj!i5g~30Nk-l&p^?w?k9p;pAn4#r}c1)wb%5*dqNm{B_=G^^4|?Q(yYM1 zMf8p-Gq7qlroU0~PFs;fJ4MGyaQ}oHTGwhnaCT`wP6KcbBvB-5eOuYD2`lC3W(C~cy(T~cK#R~ z#azcFtQ6!QWMU!0D~$X4&=}(ZJ|}RIW2;I3a@$RYDCNvKyDJ+vIQ)T**tF{irq|p< zKx-T?ctZSWT;5>GnSgzFXuzQa9Cuj+y-R_RDRdp@_pP3tY(&wJ%XUAw7REN-RhZ*) zobRv#PpqOCl0R(^7n^K|A0gwbKWXZ63Qvt4!ubPyhms3n0bKVY#MAvom7DX!R3QD0DNW!_-raUxan-{p?BOdiW+#5o%p zA9I7#H1hGq%NlOI1+&>x}1UZ55G z>0~7u_4u_rd*79z&hlM6nZt`*JSB_>rYUq%0lf)3?0x-h2*udzkEB7ki;Gn?2bq;b zJazzE);5H1s(|$0Y2?(2*$yuS$tLVR6Hk6a|AMFHGovtRG0JVzsj%bg}Q44`A#3R&BxRBhd7) z?R9>r3!4tzUFyDIXcYh3{d$;7$lx(GA?B)b#e|0lM#oZ$4>Ng3XHZSsram-&eDJT%D8V^^!Z3Uy1a zWY;Q@kS$*wdc0fOO2ew6d4WSo3M1K*CK}mg-4JyWH4$3I*l5Emh-?tboAYFn>lkc< zy4)|7)XR9Pd~t8o)(ID+FX8qkoz_^zc0=>z8&u@@ZFe1L=-O^n%OV(FYf!2GYoIn} zz|bH){FP4KFKNb*O{g*|B8spN`CyuTKbskIG+P-6+)Woc!aRE<&iP=@p3_lEfOwmk z6(;yNh^k2}`*cnI67f3|bM#A>wx7i|OFFplgw~G|@}Tt|tyM1KkvIZ->+=v5;RB-R zu3e$|+F&KJ2fEhF2ugB8O!LCCt6eXW{Dkhwn|(|uoz2C_M>w>;M}rj6wIWe>TqE&f zR_`hr!rcPuW$wP`G`0WPwD~)FfXuQ(SEDs_fiQ!xkXspyr&Q_z_?8lkVpL^|2^`dA zB7qD-MP{NPD|CkT3-b{TMq33$?iPC7l{H7ovZF5cdcxRtL*k-URU@Y}3N#6~lfsZa zx95=y4xp#)|cdyIK`qwf2QeaVQk)@6_o6ti5LEr&;L{ zyCC4-ASBCO1~f%VeBi#P2T&`S^`(>f7@Mf`d(^U-rMfO)bO)Nrs>fa5o^hLF@hiQu z0;s_dy3*Vb$4^}oaBKmKrQy!YUp`K{>+$gqmG2JI-Xugkk%f=v|M?SW0X846@LoOe zdYx_@Q5qcsSZ~^22+@P=BY}#=FiWfk?lJ_qz9Dnfq#{&(+pN>E^Se?gWm_FOs_8~^ z#mM~?<4Eztcp4BQ&xTB2UPzuPTf8Uefg_Iwu*eKoU+^ICBw0Xzug9do)T9cKRRW%y z87tNkOJ!*Oa_r}$0D8PS(Xt1yE%_VI{k4TzdisK`kAEFK@62Yg?oHiz?*Tc+$Q4DC zEvg-mu^9=pv`+_tIj7IQVmC3cc9SGEgw0Z<5*^w6k~M2G>!cLDptTeiVXj`v5g)Z! z6gfeMsfw%eVQ-9!`>w&t&Na7_vjMC&P0%I>4Ts%NvHES2G4GCX>LPfA{=XyOSY z_ejy!M)%Wkdcu6v9+?87`vWLWjw3*69@IXJ6i>SJhfI;|1~aF%Q9qQwPJGVHWeTVu zfTT2tu$M#}{|w7)5t%CaYNCsJ#AQ?-LAICM(w2o-;9HRc%`*IHmHXtGCo-}h1C7o- z;iRe)^4`OXi&zz|i@=#WlW0-0tfMDMQIAnmjN#nvlv9+#XWzckpyi~#7G!W~r8fg$ zPk&r1!pVq3ZOq(vi^z_V>?&yDBGT1e=Vyu8R$w^cj^29fkDIQ7*;qcT{xo;f!m3W4 zT>-Vm6}7eY2g6;Ly}*pI9~IFG{&0aD5w@lREuh-pE5AmG8IpF<25qc-rZ14AE4B@t z@w#oRrGO)gvVTUgytr8DAhp z?q!s_zNKp(PQUpFl?kpMJ28{%@I98Q8t@dLzXZ~1O6J^Gx<;IK^tORv64pwNZK1vH z%d@Fp8-c>4OW0_z`DMUV&d*%kH=5%NP*Fa1VyQA|?@G#nqjwIhms9DaG?N{L_VJ{G zlw#7T2^GRLqO3##g1Dl6$5JzwYk%Ry5tZa+V&>XE4PK-W_$C2Z&*#5`uVZ*q?F8B~ z)_tVJYD7;wqQ6<$7HrMiWoa2gD&yjpp7}}v)rh>|ifRd=%l!Ik>mMjIYH}H>)(px0jCS#+;LKh zm5j0S@t=uv$oyRDcY^bFZc4qWL9nOCk@l2WvcB5iJW2jDuXdhiK9j8dy-XY{^u&w*C&~1;0$)5xX-01nj0_NjoiaPBaouF7-Dqa#$xy7osqh1dy{#jB=8MTR;w*=$o&O7-+*ygXyws2fL(n?vHQLoYo>+jbv*3Z zI$R}@jaX9!{miJASp-?mU_y=yt#DJyT|?49(%H|hQ~>x^K86v6qs7|>)Y|cSIcRkz z2vPrODGny;GH_3XFesWQLfu39o0q_!vz+RGynX1^DM|O$Y7SL2C;=^TxzSLg$%i(F zJ#-s&kZq-cY{}}fI{u(TKkc9cSM|M9ZT`~S%X3$z&R{#rP}tA|hJl_XIm81{s#Yro zF*G`JtLy>7U>^3j2QSQKn?0>fxDT3f;-Ejd+t9wTSj`6$6Sy0H4`R;RJ5N2sTVHZx z(p9YfJehmOFeERor6BTx3tzc5QtXaa8!Qjq;JygXWo2{o&(kEg#P;9&rHO|RDKN}A zdokA=d(P)w0u$pk&{* z^pLuql`ya9*2yo*+Qf%CEW$tH(nDW&SJE#aH2`;-D-a?l;+TMgx#X4fw>d2)*#Y}m zpPAttVkhl79F!`*rE49(ZuCk!huFS3t?;$1 z)sF^>=6D^{Rt*HO=AWlSb7Of3OBdTW)|WxWx%o6{5fo9Df^fee=NXwOdv;^cR$o{ZjHBJH!11PVVBhMh0#ShU*zo?wgARfx%ZKL<5I|@i#!^AHVw{V;)xvsG z8PS@WGUEU$(Rq)fNIqdUv20Fbg{ zy??GqI4yL-K`uAbExfct8cLw{*8|&oc-2w9A%a*O-r@*(=Qy#xc$BsuXp?v#OXOto zjwa2_roi}I_@BGtON4B9|>EwJMWTCION6(tGM z$<;K_<`vrBTb3=cb4u7%TJ+-8#CB2)w?_)fDA)a`y#%W9B8Ht7q5;Gx*OmKq!1}*P z=`tBYThe4z6HQ=~vI3a!R-tH6FqIZ%f){+Ue0fmLhMh7!dHbkSOqL>%dGT)$Nw+H{ z4vF#`0y_M@d79dmH$;=Cv;Wc!X^)9v8x`EXzfC-Xf#0EAmwn&WN9}*+<@&2*e>bj@e6HC=Oux`uPuy{7Qxxc+) zei=2~niPJ+|EY7#jeBxYMlv19%1!b2{kn##)r9mn6~VuI1DAs3g0JH)2tRQ}7Bf6t!QBDt!Bo^T9$q6eVq zTYXx`I6UZt3#REn?=i{)2#Cwqm?cW!UE42deJ5zjVd;eT>#enV%qZ7gxQACa&2q+fiGDCIs{Pj>>)*8Vu| zOyHoi6TxIcCl-WTk&&Es96!vNk}87=_DoanRyUn4`5RsZ3t~bJ+?%dnL+KaO9tj`uH5mTlp5@?GoVK2@mk*0>cSXIJ08|O z%VZ%7BK{e;i2N{{KI*@U`M86Ut4RwDuYYj2hV|%f3Pl;K_VaIN7w8YlmwyGw4xInJ OP#EZ%qN;W7NB$qq>1)ma diff --git a/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png index 2256d14b223ba7e4960d7a96d9f65240414bca4d..cf084d9523cf18be6ad4056c6962e8ca3f561a4a 100644 GIT binary patch literal 19828 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%0A7okTP2FPIK$= zDx@dT`B@A#1>Gya_RG)g4LG(KE{^Sq?>>6fyTw|S@zFF`9P3cfDAY`I?8Mu))cXz( zy2L#e3ezyMlwfrAMwgSD-XtC0kid40avp|`P#hpWFW!!A?)h56wG2`jB#+YP1W!}D zfW3(YLJ$E4McwV04mRgEsbRUZyLsFp{)_{O@Njf6p60i$0=HPi@NkO9tD+5XBUE22 zu$nA#XaU(NmNw7cQDM_|-w!w4S+#axso91_!Mt72*pMRmVw&_O(zLK*P@E-RpXzeE zXZ9wc^snXw>{Tl$uYCJR+>xwO_1L*0d$u@RNH6~(+I{0%ran!WG%9E@tIZu-Cli<< zl|DX>LkX2PdRrfp)lEedv#(3kP5LA80qEDpd#y!CuHqskk(u^u^uRS+b_KcnFTH=~ zms3b{399Jqlr*Vz|G0i;zno%@{=yTeAkwX#w}jvUyq0+oSe;Ts_5ah+#xkrl9p=>S z>S@zPk5Wz5umj}>Ftz$7Sq+{fj))=GiMpb3X1Tg@>e6bl(7vteii-{(k2H3Si`Uwv z@Cr?N8?0YIEVtiR))_rlh-@NUI-SZ~P=HJd;CgQKWRxu44-By=*FUc9YhR5$AFnx) z+BC4tPTqz?V;Y{-OZVqaIk9p6R|u%WP}7M#G^Ec8<8f(IRo48SJg+f4E(%U+J98=Y z;%It?@8-HzdHuL@-gCEg|4>L049pR9HnGg=#WJS=iaELLmK@^)Lp|I&JACy7%dKy^ zt_;?196NJa{%ojleh>|}6C+huxq>L;2QAM;{dlJNF@;k4&#KAPz_xAZ@I<#ru-{M? z>Bh;qpAo=l%DDF1vqG)Q6uaufblDca=U=?@j_*Dex?m1EAMmDLX0JTgeye3Z%B8 zKEqH%xh;Q3=aAQpMoycf>nWSQ-(Y5Qz+DuN2NiaP;(422!LQI=d)M1rjB6!Xm@(Qo z(kZzioQOK*j8Up1)^l3K`v$=_l%lS*y)9UK1v-OE&NSOeihVtlOR5YSpdoz$D{GQZ zUCld2aCYZ?Q#{n5yt3!yAW13yCYKF_otQ>nnlYv*=4rgXPw{7QZ?0&!Yl*&9g$?gC zp@}+A4IU8I&ex{Sso<_tJrs5E(iGQ2W~+??|vMjlJU0B4!E$@YJ8Rw%aJeDfVwSeB!#T@)jyy29#N q4BK#9D{I?ze-$bH^gp77$pPA`znTyS{_*FW0gUxc_2@dcqy7)G^`tid delta 894 zcmX>s+{HdYvYwfNfg#D*xfDp12Ka=yx)=Do>Qwl!QCe2Z3XbZ-^c#Hj;oOgFWgzVL zyQJ^?r~=uK{8WK#2=~Jl=}S%;AET6j;y}jxozkDD$^p5HTeW~9Ks7)%Py{ITVX18W zhcbnPa5I+dSB^jzsFwu!1v6;-xN1Kt;t=~huPs0Nz*D~q6<=q}I`ib^hC^FF9sBbi z3MTE!&SPL;n(OJ}7*a9k>W!C0w+sXr9xQ!uim}V{<(9)+jCada{ttiiBF=Ml^OgEt z&N8Q`*)O^3$Z^1X^l3J>Dt@F;^{Ibx=OK%6yk5Tb!zD`rH)E8ktOd zFN-YvE5X7f;>}UN<7#`hI1{6lV*8i%`FB&ASs3RfJFBaY9ut?dc0W0B&P?V;^X?@!;sHNhyVu@me%oJX9y>41-f`;Aied{Sg<2hYURg? zT`!-{v<+2s*Sx}YS!_n>^G7Gz1Cy)s#HDtb2ppQXQK)5y)Ry%jxkuvB8-S@fg^MC#H?&+lz#uy%DQH3t> zpeh0sT19|Ds|ZkN6#)vZB0!;41SqtM0EJdg06PwTk(b5lsv=9PtnyPo`dvGFQ;h#! z^H(icanH=00GdyIe`oAY%ahEy#_51G06;2%MBh(>mZ>(zdu_tnut53W zw72hten2mgXn%EcsC@fjudr3t$kamz7%CED#&2OSOmy_mY>Qe?S0$yI;pRDXb(F)Y zj0O<_i*?>YX}qdK+VE(M&GRdRAJ#d=x0~8M>raZM2LRAWtK1)ep<1{2#&Xb2_ABhAp}vh)9p*8r4MGTDj1CY3xEv|@dFc<&aDRqBr!@5bJFe~>WuQN{y5i>k zS0;p4>~5`GjH<`=*986M0HffNn<2K->QYNqI{dq4bS4*q3eZzUU2C$H zfAD3Xa=8U`JA?q3$5o0KGi7}W9WruKDj6S|JHe5hwWYTG+=+nWtNm9!n_~*yn^%CE zc%nYdkbkl1m9ba9=@mYaX)*=$Z8HrpUX-UYLLYCWDIt?`QRa_=c}PGvhB~*nM3o60 zt4OP6Q`1xol3@{OAc-UpkaeTPhUY3`3lDb+Tbh04p8G$6>-r=!a_U2~>PM1)A+ zy-{_H)Zx|~Z%@w1rCUw_=k5Hr|K|Hdm>3pp&4b5@pgb3An6bE+T;-${Y(% zo$3oJi&>sJjYt%a`lV&6th)&kq*PR`UX>~$~({bX0^?xwcNO)-TIZp@)uPJaN5m1<)UXci}ZO!Uj|Q4A5p07Qwv9MTl* z)G;txM&~mM78n-YC~=z(s*+Z2JpG^YRc~eI8Q*;NxvL`g>)zJNwViS9LN1*~2tc+P zcb=qC)b3##6TQl7jD_@K0E(n>uawj#8J>wmDVinx>A&y5FPe(Ev2qT2qH1)fbP@ksFL?9ZF-{lmIn4=Qsg8pSLnD_v4vHf?5`R6)JTp(7*Hr8jCa@cN+SA*~3huxyZ>APN7c>=@ zGFGaUG9gjTV7u{{@gCDYP1aosgx#&ZzojRL!*`{Hl z(zic(Q%(Tu8dkOZgJryxKh9^Nk?Q~PkL#p6002ovP6b4+LSTZjDy&Ta literal 621 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sr2#%6uI>dsuR0YzY?PMOvVx=f zF#QH!eK_~yS{VrY{VwVIKB_?WBR^Fj8^ZmtMf#GH#>Xfnpg556ey8;3sd7N>;#Mu7 z2v7}>4HN-NeOM~{p-dqm+>9mrl_Ssr>Lo#b!3^3yuG)`^IK)2BYs-&5@YL@@#n&0L z&OCX!;n3Dk$Nv0>f=Row^B5Qy8$4YcLn`J>otm3{*np?ysMUFIX^-$@3AfvWcm4k_ z->!3eql~rwb*GHQ?&Z^hytb@8Klk_689R%g`(Ii0UMOs{2GjoZMrScL3x^8sEuGVO z7kF-9oWVL{S!Na6)>qtzHd}Rw-1s=bL#9!mHLHpD;O9pZ8a7_7x#Gl^oXTCmec@cr zzB3H#Ur$YV#lSkT+@Sc}ybdOg`FkbL>u{f#e@tq^A!|Wft_39ub!xiW`-Ka|Pk29j zs(7=c;#1^z3BV2SWA#83;VxJ<+OD$YI;=Yw-%5jFs)$jG95b zFMi7CEs*ATAEdKhwjrpvFo?fjDZciBB7+0V1@;vzbAlPJ>p8G_OuW$R!nQy}Q(j8c z!Ir^v!_Ey(8FQyUdi3Po?3jp4yTfJ0#1f3wmYh7$&T!ypB5TM!LwkpX+b^57oU^}R z6k?msR>fXcdEU^Acg^uYs{FVdQ&MBb@01v4JRsaA1 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 7c271f751afbe98e64f0fa09f360f65c5f68e9a2..c938c95aa7a89f7ce11c6c861d2959b1fae47c28 100644 GIT binary patch literal 3463 zcmcJSRag@M-^I5%S_v6~4gnF6u8mIVkRgI1ATp$sMg}7tlG4qPkZvTUB?K8gL^=m3 zC7lC_y?&S9{rg^=bDrm%oB!Sa`Gr45Xx^Z{Lk$1`ZfI+%J^7c&{}UzoKVMEoOaJQ; z+G-DtyfU^kXk3lP=Q~Jib3F_GO0|8?lGBuG98?f*6aL(%VI%fVW$%8Z;KO>2?YDbQ zi|Y$=>n3Qw$g=-fzV0+m&ENeq*FvaQH3De~c?{+R-%QwAt()db_n+JP)rOaXUS~8^ zx%sxwseOSkh~N6;yMrOEU3d<+5;5o$p5TBO&mX1__I6{0m90>~J9#ueSj+=(>maxW zbGBGBAbN!Cb<}@vDy5=qkSbx)k%&riM7h1nhINI$rM@*5Wp4UBSBG^RENFHaV47pJ zgsOJxW4I=~_+SpXNv)PhIbi;g zLY6`5>082YVvoZu9!1&OrR~JKDchA}U^bdVTp9zNhRu})Td+w!3&s2gfZqNAy8K{l zkid9QK5M$^+pL*;CZ<=#ZY8`}|8u>eRU^mI!F;6ji<oLH0H{=Qaa~YxA>ePxg?sDn^hF-YS@_vr z1?>cz+xr(Y?enw|F523gE-s(u_B#ZMBH3jYYzR`#@i9@=3;}?h%(<_B)#iK_FFn^R z4)it=NkXj!`R;vNP2s+ZZ{RMmD^tCXEh~;a3Gc?OuS}&wf!zCNI8}I@%*{9-5C>hG z%Ohmo2z+)?+(t*FUI96vXC~J2ZdY@=-YFfyj8RHhQo$-MF1dG;J=V&x#fJ|k4kHIW z10C2IsllOt=yEAMSS5jtWfN4lpa^q!P4bpV42$#FMl*+Z1fq?PyMah8#tNxf#E z2PmWe1&rM!?ri{f+ad}jG-IWS65^`*S7cn^b(S07O8`my0SiSyZOQ=X>J{a;dU8UV z4P&Q+F`~p*cRg3B)(-*=?vn{zzMSP%d;W-Fw4gHvZM&){QFIcdDijlqk^Y7G3bT6+ zJxL8!mH_&bqzyV&K#>omNXsFA5-0=`H{?1L4xSf7uc3Yo;JGuAHw}g6(Q!{ejWjFR zlZBIu-y)^y%Ugto&W~w_*530u_uN$iDrvrB2YGcC>i+DVUL>C`4Irx6OWCi90%lyr zPnBb}xW{4?a^-#K<1CH*#SeN9e!uQ+%g^-|0{B@%Hq4bhfZHajE+&v~y`&HuskJ$z zF&ClZgt2@jbD)om%6PTo_7}Sf1A!EK5Ve|^w8%tj#hkoEboHv z+%Bz5GL(k|y`sFo67MyN4 zJbXcEl_bO~r2u=Lr6timVKC?%HD+t<+uyh*_|h|0H9kTp8*+SH&Dg|CZsgUtJFuub z7A+iD9IKAr)csB5H^oAuwDj%%G*1S%yC*bd?<>|k(=r2T|L)k zZNLhQ+ZRV|A>p0hUD4jNhFwGZFB&#lv5HiJN?15M`;MY&PFg@kt%81G;(^3QK77{v z)v1R#{}shO1g61_cu_7=pIXVUZ6w%zEk0sN2fN9Rj^+sEjE>aht&Q@)}%T0j<#iB#`i^L{6!e&Fhx3Jw)>gioL`&vViAO7O_y2vmkqG4gqB+Hvq=`7*8WPTj0T|sFO?6Xvl z+1tpLba!3eJ6>sBLf^Dk!&KM{uTn4~2Eib8pd`r;+gEp$lrTGs)x2SIfvjS^ZErmg z&6PJ86B=mOFwXQD&u?Ulf}z}u%md3qwj^t@{#cvrg(t74_y&+eTm=r_%f%7>{8y+K zX#&5K_SJwm>w*}T%t5hQvzanVoo^w!{vcF7Ppd{RUjfepcjdu^>@Jt7*Ht4DJP%sY zi@t2Xw_HFS>Gm-}^cwzAWbNppJ2znZODJBg;38&)TMZV-xr>?(&t!?IQa&=6e~7F>P;~ zPnQzKW(k!?zTckT4bJQiWmaJ?SU_kLcMFE8lKpDTqMN|3xLOHj_&*-xeV7+1v$$7V z31`#Wj&86f3C!jh9qp#;YOiG0ZDcX&H~9NYdpABGQJRue)Kn*VO*FjHPh2B{f23X} z=i7r=x#wJXZ=o4Nlnn}OOxlKiTVFYg8a|ML`k$0e*LzPVy?C=P>U)soGYlT>_hXO5 z`qMyExMxDhSn{IK31<|3Mvddh&N}e@klLRT#zXby4+>Yr`?Vxstj;GUQ4X8;W`jf?F37&XeWJJ4e)vB?W zhhsdW6|3J18`bu%Xc^m6vZeDCT}U#Y8Hw}n{FBo_QE0;a<c1!?&_MW)Pl-c1KvZ9BZ(i@i@LXI7sGBHoGp@ZP;qFi)h57niwRcX7O8_&&_+ zC(hk|s7uS>-|y|{U~xMPE=k#6%Iiayv#nN^6uVC5L+_Hsr+upP3lp{AM7}+rW_|(p zQM`q}Y!IXu8Csm8c{k(msM+Va}NVT<=d32#qZ5 z0hlqgBuf|w@i5nl+-7Ryq~`i@YH1%U$j>&RlQl@JX0DlqC>O($&f8K`ddz528@xiC zw#k3t{lrzC@kM9sn21n)w>yNsyn^p+M#VS3rkb+OqlK2Egx0d@7!2H2W=mVj&z-4p zDRf)uw_GRdn{$giL#ZXTz`DlkYy%%2KUI#w3Y5RBF<*~=AmhIk`7z&5R(jMkQjni^ zCctWcVlLr=Oo(IsvjmK%RQTV4ww|z-GsHfvCd0XpvH$9R2V@`+g>`j6fL&aW;5CeX zu)(uI26o_E%Ri!jd*r@_apI-;p=TaaWGyLc1HHikN6u4qmWL*!M85cqXYPY}>Q8~@ zIa~MpB$v`ZXng$~Je%<$f(E*v&zj7=d`GEA(Fuu3Csc7y3(py%Mcr`7PP@a+ns1LX z?d1|*iX8Q>NVYH4U0r@=v-MrKdMAgA%jWI9@rf#skjd}AzKsh!ey8jCO4>&LcAslk z1zj|EDK&4J^-FwJage(xJ4diqA8K<_e14gk<^H(VZCA8gvJJy4QGFl>rr=DG1I(-k zSLin_h7I+c8CL@v&PoLdeW*xxmir#GqP%B^&?tjlYq^2OV+}cv;MHOtZ7u{(D@4IK z{aqZvmRMbx2b6M7AH_9as1AvhMwf!wYWG|AxaM4?{!#_2H>9!^pvX_t$U$-L2(u@?~L{TvWUi{odZb~|0|sM ce|&O?Id6fQT9$-6{sSz4wmL$sLIoN4A9N(IG5`Po delta 1254 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 delta 2118 zcmV-M2)Xx-EXWX$8Gi!+007XK5{du-0CiAIR7FQ{OzMds@Ua^mDmoo1IvpxH9V$A1 zRxf}}FC8j69V$89E4J^2YrC|NsC0|NsAzx@&F#00&!1 zL_t(|oZZ|BbJ{o*0N@A4$Q*%?wAs>jN8-r-|DU*H-IAX!OC*`R>9E8W=tH+`Sb)dH zaQyMWcP|e%#((m&6(*R7;jDx2f$BQ{BS36c*O&pytg^ahR1aDrpbAlamF+Rmd{KP~ z;h@=~hk;%{08~ zJG+~I_qm{@`ZO6OH0BzaI<9Wa1nKfkgWktNxZ0q_QOCq{Ev~hj@GL;AW71VN7LP0< zB*hd|+W94jKm5o5G4_7BT!jcrG69utA8)2bkN-(knQT8Lpu*LW1$t#HRYG^wp4mMB z`a1=cHGiX<>GEUKj)UHHkLORYByR|)NMwT`@miuiLX-_E5#7K}&e%SZmN)2GpaRit zX|G&J?4`^qATBBZ<%@1^+I#q=e;iLKC|2@LT-{yNE%;&fjJeAXJYfiwJwSSIJ2t7~ zWaaaVCmh_Pcl1*SL7A224_i0Uuosh+5C4enL4P!lFep#N*!1cLV^ffLKlk7}wvdm2 zazuC#DGH@ve5$fr3w}YP7?j!?1L#*@`dYQ@+prbc|WPt2^tsyYF)?Hlm{vx<~ zmf?M_9FTbh8D|E<|HWF+*oH2AZ*dK8cvS4&F(C`2JJa(|{X)i`Q=sV{6%F^3Wr6f( z$ObJ`2YXM0fU&<;WP#M3H3MSo1Bz8NSpC{3Jc1IoX(kAf&AjX~KSpmZAq zt-cy)Xa*|yCKk^-0D@+qd{47B6uYHg_QkNL5D2;wP@@V9gk6t$AQA&rd&)r%_Jl!R zL>uzNLkO&T{-j^2L-H9R0H?El3V#6Sp6E1#0Le2EP@#u*2RinYfl?|m-%?69q6C0a z(TmihO0%YvcEMg&4gwoQd9GCDZJtrOaX{2d(+&hSsON9}q%-SvzA{(pf;w4<4MD^K zIbj$1+oF#E*$H&;>yM7K6Y8?LfBO_4u&TDu3`SV7Dfr zG9a^&^gT%s_@HrO5Q_*=1Y-~D%v0WKcq*bm2i4LIC=x{;2?Fz|yOB9~wzD<$)&}IK z&H>RWXlMnRq)vmj7zi4Hrdx8N2W3+os&|WnYp1a6^4e5`ko$8bAnyd6YC+fvs0P&6 zg0R#Gs272O`mNofYTFQ+8h-)la~^1G4c9F|cm{-NKb3G`K8UdYxAd{wkU<{?6 zfaJ7rih-W$LBTE01SE#xEyX~+Nwan**BGnFgM#ScKoQW^)Yh1WR)8Yki9td3stg;4 zrVF$}P&hFHf((#&y2}E+7I}i8z8R>@gMqxgk2|?qX&?)h(Z)TGjyz30?Lc|gfI8%vdr)RLgz9WOuTM^!jgItXRzf>M)n$x>-YKs^AKXwX zi<+3t?XaS~R1(?f^)@?lnJnY?Q+jU?&aQsv9F!p4>-%y4cyd8RZL=$XtYm{W2DG+E zod3joom`MtLS~E#gMTtSW^a#84JT7TR447^^@ws%j)&*6Su4icOrHEwjJRyn3DCF> z*ztqC(0ZUl0+i+9AlXYcW&)#nVmB8T#NPg(K)SCJJ6RV7<$26TaSdvJ@5~1xr(^I}JMMf<(um>>o@@(33rF&VK@dRgm*5OoN~a2!fz& zk6M1Hq1M@&PI6MGdwb221IqUlfv5qUia-UP@ha@YK_#A&5<26c0cmRUJxHSl2!PCJ z=zzKesPG4X60{40R<3OV+8`intSwMwRGZu#0DD!k(nM2I_vufl&on4q#h)wp*3C`#?WtU* zQM;FM(Y8GZNU#4oVP6<9vqbM7KL^s+fij}ON6(BT$UjV=9}{WNU>3_?0ko2Ltg|Zi wBS6lU^eceQUkxOS2>HU-gCgDSKeT}U2YlysV=#Yv$N&HU07*qoM6N<$f>XNOga7~l diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index d1953e222e1a53020f73017aa1df8e35b5d6336c..8a1ebc8a11fee415ad814d41f2eb34036fe310da 100644 GIT binary patch literal 7864 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 { + compileSdk = 36 + } + } } tasks.register("clean") { diff --git a/android/build/reports/problems/problems-report.html b/android/build/reports/problems/problems-report.html index a4257b9..63a7aee 100644 --- a/android/build/reports/problems/problems-report.html +++ b/android/build/reports/problems/problems-report.html @@ -650,7 +650,7 @@ code + .copy-button { diff --git a/android/gradle.properties b/android/gradle.properties index 2b95640..95e7cd2 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,4 @@ -org.gradle.jvmargs=-Xmx3G -XX:MaxMetaspaceSize=1G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError +org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError +kotlin.daemon.jvmargs=-Xmx1024m -XX:MaxMetaspaceSize=512m android.useAndroidX=true android.enableJetifier=true diff --git a/assets/images/icon.png b/assets/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0659e4b85b04304d5307ef3de29bb385d2b52d1e GIT binary patch literal 97010 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 literal 29595 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 literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQar2#%6uI>dsuR0YzY?PMOvVx=f zF#QH!eK_~yS{VrY{VwVIKB_?WBR^Fj8^ZmtMf#GH#>Xfnpg556ey8;3sd7N>;#Mu7 z2v7}>4HN-NeOM~{p-dqm+>9mrl_Ssr>Lo#b!3^3yuG)`^IK)2BYs-&5@YL@@#n&0L z&OCX!;n3Dk$Nv0>f=Row^FVI)ba4!+nA1AJk?(*42g~;x_ug=eefVFW(-3u0&a1=l zF@sjX;~BT_)rPimY~$E*xkXx(H9@U=nHJ;ZQx`6k+-iI2E*5Yh#mV@|hOB)X;$E>& zQs)%9;G#H*Z@zfXqYE4{oY%`Y@tka%c(gm}JdgJ^e_aT40E4Hi KpUXO@geCw-Pmv@5 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png index a0d7ff4ff3f2bcc36017d1a5af0c8e5c2d168b3c..d885060065c212fa3309344d318dea45adfcd7bc 100644 GIT binary patch delta 1195 zcmV;c1XTNt1hff|8Gi-<004~sxNQIc1bazDK~#90?U#FK97PzwznPtV-EMNP-krJ2 zv#lPrEj6N8+osYMOhCn=U{w;qiU>uhU==GU7!d^(go+4OFcPhzq(m)^e#=5%=H z!KAN~0=nwy)PLIi6tuQHU7X--7)n{qgVTP&sLEZudPO3Z9$o3pHp3(Wk=n9hVRbko z9Pu({WLrbx%NFnDZC}JAFP+Xy{R^G*h6KHmQRN}#$_r_JurZibSKl`ipMJIQkG`abe@W|fVL0kRSU4Lf}{gU%^ejN+%oY1-RB@0%X zW-zR2ey`gI7(B}Sp;Z3vv=3**V~@JVcWmLu-U9@%8&^I5QLe5HJkSO+Q` z@6WlroqpSiv%Y|5Y6M)y;!rUCaM6Nso{x=SPJcigq%fsm8Pta{Xw(LNAd7;D3eWcp zL228h?#zg~&9#W@YtvF6aA1pldgX2b*%d59+2y|MdYLtS&Rv^To*o~s=t(pFjz{je zzQde?`AbIgDpIOX2g+A{Y&o%a^Y0d~Jlfl(E+i3oUv6PY1E zU^#m=rP@m{gL1Y-B?MqliwZy4?p{t}24}{z*#75qss>JX4cykge<-laq}XsS*nG?> zNO*j{FllZQJ*1x%Z~|aj40D9imBHMq!+)dl3Bu!)p;bZ1I-RY|ncD>q^ z*b(*Rn;fb&==TCkzE zcC4Yc_FAdq^G*C;acjQ^ZwAVOr6f`oES0igsgwmvr7Tz~e*7bajOGAr*7xUPyFQg~|NkF% zUi>n<_wI}yrC)D)mjx_(x#RryU5ZKvUv0~cp1pdNn7E^ib&Vq9Jnxp}o0^+jL`4H< zFP(B}#!Kx*vlvb-sQY%Q>4V|2sh96wS?bucXZtLbboWZwMeT$~)nN=?Vss~ApU+&A|JV@v%XUIUp`Rctrs>npGd$QIu_d%kCflTUWv z%zdYgR|`a~UHWeG($95W&+7h0sIFIOE3n@`w`kgp*ez4__NTM&?yGn?i_f4=wOYH` zt$6oVfy+~M?S2FqI3zW5pWkomQ*w5Lm_dc*qMF8~K2;Vw8Im9UIQn&30l)n5J^Jn2 lgMR&xQ-52X{z3B(yU}zPuCotBzW{@m!PC{xWt~$(69DyD=#KyZ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png index 2e22da3cb7e40ae18b875395e9a0a7c94528d95b..0932ca20e8a48eee3be062c1798a2993c9077c00 100644 GIT binary patch delta 1955 zcmV;U2VD671*Q*>8Gi-<0027t*>V5?2W?42K~#90?U;LP6vr9BznR^=+uOZ|&ptoT zXU9D1*e2Aii4d&}p)^1xK&tgyeNOPiXx>&a+)fTNc_pU3=zk8|`E?l|zzYap6A(m`P(Nt)nE5^_x zW32VFn?3JSrGGouiIHDVw6D@^dn=d!Qe$ak%li8MeOeIEQVsp#U~ln`cl^b>R0GR1 z)wEkp@Thk?)Z2IA@H@7&^VoNsje(qE5)`>wA&f}h$(!RCvh*J@!`Nq z6UXN2(dN~@@Gsx!@@_jlmUrM*V(_G+N)aetCKKNq#$ws5^C{@rfOwH+Pw zytc|4{t?)ar6ag@NFGi#kLKfyHds zVqx`;6@T4l+lKS^{Jp2_skp*~zBu;mxh>)4C9zHMC^IVc(MlDFcMrt5%WS@G`+nu< zW1BjozsDjPpNpyk#DmrD=8hr92V#tofCqpO09~%*B`DE&A>#b}1sQ;h@wYPxjDT8Q z5qWTVX>3c&<&tOK?JL}^5vy zfhV|geCbgDjD&=D`igd&Yq68JpZq*F3b3>wv8tgkw(e{&uXU#U9AmhDTr<3LjW6`8 zykHiPyVAn%%w)He&EH!eZK><7tJCPvmjfG_RZ0DyHTq1jw0D z*ITb&@@@}^)`3iFza?Q4Y{3D>M)@&~6A0-#A%r+Q%mHG6gR!6>rqK8sPk%?Wdng(S z2qANy22C=`2_dw(EfIq-S5;bKSgLQfdHdt+xxaOlKYB6ZIFV`1lgUWf=AuvIFj6=- z{Sj?NBU}N~MlmR%Da6OS={CxO16)4yp{kHFbBZU&lqSA_e&6P#KZy;?Kj8~4hY$i) zmyLqtn6lYj$-amXf(pA>SAT97Yt0;PRxNQ^wX%tv37H!GXHV% delta 754 zcmZ3+|DSb&WIZzj0|T#;rUQ^F4e$wZbuaLF)v54dqqMA+6&%%v={NZ5!?_>V%0Srf zcS+y(Q3bLe`Kbcg5blR9(wCexK1L}4#et0XJEcEQl>>4Yw`u`JfNFqjpa@Xv!&2G$ z4`m7o;btt^uN;9cP%jDc3ue&van*iQ#3A;1UR!?jfv0{KD!$H`b>_*-4TrXVI`-#3 z6inKcoyWkyB;@Jh7*a9k?Da;!!wLcn7gk5TELnED$9tCK`)j}c-_NknXnx$V%24pE z8@E2YjEU@lWku#Wua}D|EsB4*+v|7zBd?m*r;gsvdZD^swZJw1KVz3@P1hrF$9Xc%GZt@v&0o_{20laarM>^_eN3ChnAIzk0#u`Ie(mToN|dzBmQ- zZ|3!p4EyqC@zTc7IoajU8Mf$sidrb+?ORY)Z9Ug&!CnI?wNCHFyuOBNcdcx<7la=$ z+gl&l=9JuY*EYH5ME;G4?3>v$P9Ch=!(HQR@MG@Gq)#*aH1~16xp8mW`6oREPsE;G z$P+lpX5+V&&{u6mT|Isa@#N=~#&3Jxx zbp9~x?XX?+cU!33+TDA2qmMo?EWfkSsefbZ;awXV)awsaZ})m9{CJJ1m=q)1^+K*i zos&xoAAdR2zoW_V(LVciKUOv>9$we=aD7jzRj&KwB)Q*#2gOI%e3dlJnJ6`MmPVTJgzriW&dQxc{`n+Jl}IJA-tOZu(F+$ zjKGB(=S0?S{rhU;w`{f-kKJDOZd<-vZ~lY)gwj&O6w%aE$!nIg9oF-1-|%SRj0ZB` zg{IdhFF07YBR3;NDSGX#ADvsn{>=Gk_#i0pPl0t4hxHfrFH3tLcdxv-v+M5W7teo4 bf8kzJGuu*yOa2ZpQ89SB`njxgN@xNAdtz;I diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png index 1cb2f6de68ac7e2360e1254bdce146e4f6ec67b2..2bb53e27b3e4a1be7494aaa8793e3345ea4a33af 100644 GIT binary patch delta 793 zcmV+!1Lpj+1EmI#8Gi-<0035#XAb}X0_;gdK~#90?bJzVQ$ZL9@NeFhyqCPJCaI~m z8jIB^Jyj5iqD4UjaXA@56kKpQ=tbNvUR-Y0yA(ySJqT9CdJu7?b*p-?)ws1b#uQ_g zr|~VB%p0kYifHRQNb!*G_|44sn}OlaQA%N=i<@wl#x&w*K)+kn&bcw#!b+OdZDY8DN zBQg2ltq=aw6wqkItzNVewy)V{4IN#i)HW$p3fVN%mDYs>AoQa@OZ*mFAS&^PSiabu z_O^!$dgG2js()>{l-t>s3GYtio!#Tk{ZmsSre_i^xx)cHlFrx%8ANkyq&ds&%X@s2Y{qyR3t?9x^VDK z&hb>`*}_QgOODU_^m1LvV2ys+c^7N|pa2|ic-0d!@qdhy!&Bpp!D4JF`n+pFxUjxC zq^wT5lsEufwuBOd%1VLH8az@fz3bFf*Q z5dbh*ff;_LaoP(xaJ)fQn}Skln!r&xuXCx6MEJm+l<(ZgFOL3c_*iIJGwaoSxy~q( z*>*Sg6ssgMeTq4tWKqZ@%mBlJUd-SXSU2mo#D9{9YGr+H=bO-x&bOgsI$^(!VU3Rh z02SR_ui#)`+nj8_nuCS!)2LqZvA0AI_dr+5%}zJ-gyEU|(MJu-ImQ(7hA{j$Y+Q8L zrp;HjZrDJ6UV#o#3LIikC3Oa^3?E4(%cvxZM1o)9%LD*xxoDyOpTMu8RkVtZRo?+$ X*%CFlJ2$Z`00000NkvXXu0mjf2fvKQ literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^vLMXC3?vhMr`rOl(g2?jSN8&+SDgwUHcHECS;0|# zn0|w=KAih;tqg?yewXxpA5|dxk)JA%4dH&+B7Mn8<71Q(P#nm3zf=12R5>7bajOcZJrw_Si&kA)-**Z7&@iV

WYD$lEG%h{J1#+uhe$W)DNF%K!DH&TrkE5z4?*t$#tKH}m7UjDMat tJk`IHeoJz_E^u|#f=)TR*E}WR_Dt`Uc>^x+cmTb`;OXk;vd$@?2>^#Ty4C;y diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png index e2e4fcc3327b84f26291a668d3676a1d37cf3620..a5cb57efd4ec470b279603bd2edde984b67fdb97 100644 GIT binary patch delta 1891 zcmV-p2b}oj1?LWs8Gi-<007~;N+M@4e@s>(-@9)6IDlkbm)4ew_33@0{Q7bA9jm z9bcJajKTkdxc_zn|0z{LD@|3dfI(o_YlG*v+>O;ylJQx&w*R0XXxRY9jqH*|=` zqt_(~2XA-;LdBHAkIiOWxHb$NDG#A+(3F&dhko+N`)mP4ZSiP&sMMe0xWt%f>6vM~ zjT+AOg1oZSPk#`8B*Ke-zs)bLd3;&qkcOG{bkwtNZ%_S}lq!@3{K~f75by@d%70#` zt_j)ev>z??Tc&b%T+4TnuCzay8GXIf|Eu6U(BWzP(%Po@BRpX?({^Wl`fJOA()!;F z1fO{$66`2Ytj;IDD>d(H6aho`gi{+&#oUKK%$ETJSbt0bF5t^HStF@zflQcf5mS#f z56+F@iJhxGlMn142t9Q??Kx;hnXl#rN)RLKnqm*17_T|FB9Ok%CQ|=EMmz!N>cm_w z%?|+zFpL3~P=N7^_Fdi0_m_M==E&T;H8k`Gvt0*z%VUd&JJ(p^NA{d)_|DLjt$RMX z&KXp|)PK67HNCF;oa@g%U0ZS?DGvGUnzpVf{*AVXvdWv$8%#e&fE{1z*e7R6=8wa^ z7mI_>18A*O4oXV%MBW-H%_(a{njYt7pS*JCUFY6CGU9vbSG}Pf=>i|WuAmrz+?18? zG;`+!#<#R)Kl01r@OI7m@9U_~d>Ll2+S&I|qkl{NIOGt3lfm<&4PQ(kVeE(t_FtZG z9N^R8JhiZ4}4C~hg)TQZx6wi;U4kXNBt-gF8V${Uc0GZvAt`yZ*7y-)`8kKeN4!qE`4(O;2Rb~&C;fn zlXv+W28`6EeE#;#1Q+ugTI--qd}l^N#(!X^qj94ZLuqMcY0M?e2GyArb4b~cjXzOC z_4*j$2TeQDX1}UhIO^mvvn)7hmXOpbkNePv`RRGuFe0(#u8^hkN_(PL-imlE`I^OD zD;4Sf5G}Mti1lO=@cC&|6u*4|8&(^qduNJaP|!O2>b9<5P9$5I`OoUqjh)T@RDUb5 z04Ly>U?=?+C+SX)st@>=h&z)5x$jdzxb_Bd2f`>fekR+&S;+;5pMNVE$v=Ss44X*) zbeZJR`_IN39^8%TV`jg`qSZeAseZE_Bc4#3g=4Pi2cbLeJpAg}`tOZo#h&%E$bD9z zi~;Wo3I_orT~2B%^OC+yaFBndqkrnx5eC)a<&PUP( z&dSdfa>kA3JlnmC?-GCtDqvNnTt=plDJCN@&S5b^GsPay3O#$z)<0g{n9NY87Zel` zG=&Mu13?PHs6co~@fLjE;v>CNQDqatkORtyp;4!rrR|tQ8H`arm(*4nI)C#L9;K+k ztcg7M1c%Un)%?Klbep1M=}>?0N56{%UeFoV=DJCm6{yX_9Yq9Xc^ip{9_AEX ze%0b2eU5%V%mCn zQopD1Hs^-VEJ}RymfGxRuZ+{1vi)VxnTBrfRuA#C)y>2gbzWDNUghyAF!S{*kY+RS2GdFL=*ShDjpnrie zb1GM5gPQkdnj4$0`WZD%@}=khoT_&LD@|3dfI(o_YlG*v+>O;ylJQx&w*R0XXx dRY5CF{{pk{-@K3(7NY0jdGAfg(Vu4@+h1 zKa?pXgqyKszj6e+K)oc$FPK5w$5s1L5r^34d2RX82cG&}sQ5Z#)|n?SHyqmf>DZtD zP%vp%b{+!*;}1_4$B>FSXRqDOdt@NM`XD$#T4VPcC6!fiXFa{{{}&CH`=9dWhTo}B z_N|37b~*j(fepHa_rI)-notvT@8b#=zFd9IF@eL9(@q3b43D_V0gZPr=VtZ6~+i@aY~_w{t{-Mb|t z^XJM&S?1pT2UY*xo}pPh@le3NFV{{SRrS8P;OD#$_ugx|7yq5H`1CPVQ#<7Mzn%5{ zJ#{ndmAtks;F&UCk~h@;vgXm|V^&sQULFbAYw}RzqsdXJxpgM7ZryybtAsNy`kgRe zd8YUMrN?2n=D%waE0So?ZiwH<`Cw6V_vr;U)zcRGa}_@1Q@?&h?qSKi4afAB*Co}v z_$~6D+#U2ia-pUyJ4=_jOj28l-?ye)K3+K*N4Z@64%hQ+Jl?*hhil4Wr5-Kq#fz5M zInLYnO+(AX??%dv2lpNCX@?}ua#>dx&-?c3{iE`HD^uUM`sO>RS1a9Y;Ff%)C*v9O zm8EI(duQ)gPd6VqGofx~r`Pkno&}Y{4_=*$x37}1xyqZJcEbPq|JJQ-OXfRoG%;3r zxUcy5Vms9(UfS!k0;j!_)t^|GvSpKW;-+oOd>R#(?btR^Pu+N`)Lv6B#kZ@M|29eV y+#)J@b@}W$&!yMI(|q<`@o4It-q!elF{r5}E+dFk7Pl diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png index 3ad9f1f90552478da6bd242fa76fbe0eb761f3bf..810ffc54d88e38f1442a8d09559cde47a9dac62f 100644 GIT binary patch literal 3125 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 SU-9n_0JPN+YM)eWBK`yKy8|%* delta 1149 zcmV-@1cLju7>5av8Gi!+002f7DP8~o0CiAIR7FQ{OzMds@Ua^mDmoo1IvpxH9V$A1 zRxf}}FC8j69V$89E4J^2YrC|NsC0|NsAzx@&F#00Wvy zL_t(|oZZ>mZsITy0MKa(IDw@Ufhr*$X2Q1r|BEZ%$Jf{?ysXvI#z{`xv1bw}z`FK! zT6to<5fQzBy?@ecV4^PguWjkBaTG#~<0$0DJ9WXLvTwGH4Yw8c?%3)!!E4<6i(Gnp zk=qc7b?!2}(p`ktx=XNfsq9k8U4W%4)InL768GWSqDvs*oJ*tz%=(yHUB&_wN+RdV z(MB$KmufXYnCMd0H4!ejwGa!Si~RXTsjJwTeu{1d7Jp!NrU&UclLIcgWmwQ3$K=^L z+!4A(ShzhSjUap`T*&1`%`L(7X`7t8*{2x!e0xyEEx^R?LwE9SaCp_dWZ7`b!O_v| zu*A()<9M#Vb5ph8W+D-H=}ee^!le})m~j*Ml(^XxTXfxCGgZlj=J}gchQ+Rjv#!}I zgf5TCRDY__Qe0}3Yttw1YWOq$6S}PO=G?1ylXGkC!@BM| zQ4_|^mF1fIO?8*7o3d5+vE-hVo2?gB*T6-W?0V>R7smTPx@qnEm0M{~cTHGY+}eXm zmYwG&7m9DK!Z!B0g*GAEKm^=9$Hmyi9yfguD}TC&9=FJb?>-UX))U_fn;U$={aVY$ zu4|bIa}OtaO7xlPRd)=ka|-}RoMe34T{D&sR86rssaFKpAo$*b`(9!7X`1k_lN_)7 zWrU&AWwAT!^?8=4U920m1oZF1xStJfFef;GFmYC2dsOjt3)i@D%eZW=2StHC6@}T@ zpnsiJ=y3TOa^EVD2eUEQc=xzac0c@hZ@uod;BL3u?aq%Ealh|z!$(Kv9$Ci*dDNR+ zD7i8nfQ=Vmhk)ls7fSBItur@Xy?zH9=9(K{)Vns{e0*hL7=6CQZjG(Fct&0yDsCDi z*t8R>bg8Yw-#i1L$(efbxRY(5LXiTjg-3} z%l|??I9HYgob)Z&mzv4BNA3bH<%4q-f;_7bAgb#n_r31kvMw&WWwtclZN(K0EOv`; zP>7?c4BV#wi+H5sV(5;`tUgBoKhu|7cHiVKT$Z02!+djzb(GZExfr?)Evye`t*0?UU4*blmx|VlEznkxF20GpS^W8Jvem&frYwPT@T~N<|ziR&g0!KvaS7ea5 P00000NkvXXu0mjf(!EC7 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index a0d7ff4ff3f2bcc36017d1a5af0c8e5c2d168b3c..d885060065c212fa3309344d318dea45adfcd7bc 100644 GIT binary patch delta 1195 zcmV;c1XTNt1hff|8Gi-<004~sxNQIc1bazDK~#90?U#FK97PzwznPtV-EMNP-krJ2 zv#lPrEj6N8+osYMOhCn=U{w;qiU>uhU==GU7!d^(go+4OFcPhzq(m)^e#=5%=H z!KAN~0=nwy)PLIi6tuQHU7X--7)n{qgVTP&sLEZudPO3Z9$o3pHp3(Wk=n9hVRbko z9Pu({WLrbx%NFnDZC}JAFP+Xy{R^G*h6KHmQRN}#$_r_JurZibSKl`ipMJIQkG`abe@W|fVL0kRSU4Lf}{gU%^ejN+%oY1-RB@0%X zW-zR2ey`gI7(B}Sp;Z3vv=3**V~@JVcWmLu-U9@%8&^I5QLe5HJkSO+Q` z@6WlroqpSiv%Y|5Y6M)y;!rUCaM6Nso{x=SPJcigq%fsm8Pta{Xw(LNAd7;D3eWcp zL228h?#zg~&9#W@YtvF6aA1pldgX2b*%d59+2y|MdYLtS&Rv^To*o~s=t(pFjz{je zzQde?`AbIgDpIOX2g+A{Y&o%a^Y0d~Jlfl(E+i3oUv6PY1E zU^#m=rP@m{gL1Y-B?MqliwZy4?p{t}24}{z*#75qss>JX4cykge<-laq}XsS*nG?> zNO*j{FllZQJ*1x%Z~|aj40D9imBHMq!+)dl3Bu!)p;bZ1I-RY|ncD>q^ z*b(*Rn;fb&==TCkzE zcC4Yc_FAdq^G*C;acjQ^ZwAVOr6f`oES0igsgwmvr7Tz~e*7bajOGAr*7xUPyFQg~|NkF% zUi>n<_wI}yrC)D)mjx_(x#RryU5ZKvUv0~cp1pdNn7E^ib&Vq9Jnxp}o0^+jL`4H< zFP(B}#!Kx*vlvb-sQY%Q>4V|2sh96wS?bucXZtLbboWZwMeT$~)nN=?Vss~ApU+&A|JV@v%XUIUp`Rctrs>npGd$QIu_d%kCflTUWv z%zdYgR|`a~UHWeG($95W&+7h0sIFIOE3n@`w`kgp*ez4__NTM&?yGn?i_f4=wOYH` zt$6oVfy+~M?S2FqI3zW5pWkomQ*w5Lm_dc*qMF8~K2;Vw8Im9UIQn&30l)n5J^Jn2 lgMR&xQ-52X{z3B(yU}zPuCotBzW{@m!PC{xWt~$(69DyD=#KyZ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png index 0d14d7927ac1336c508752865142d7835119c308..58f42e3cc94d5c583c5b03a390316cb8eb09cd7a 100644 GIT binary patch literal 2729 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 Xm)B|7WFq<@00000NkvXXu0mjfWMUp9 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png index ffe3a98a995d7b8cfa0182f9865ff19cb5e0f771..e7162cc1a0d776a403dbb6fa1e3a663002bd6de1 100644 GIT binary patch delta 1537 zcmV+c2LAb#1&9og8Gi-<00168h_L_w1dwMk3Wq15Ale>iz7jiAkm0Xqlw07G#CxWpb`}k4PNm;6Auup zRM;LAx^3w$?RIx|cV>2u_jIaY#n!Y~!z%krHu>JZ?|tw4Wq;~f4T_&>m%>INo? zl1Q;p5-B!HBE?2Yq}V8l6dNUxVxuHdY@A*q&%N~m>}vk%_&98ulNHOUaAON2qg(Rq z8);pYU8v`P@ot>L{E<8+nPt=CPtK}Tul%y7Z1c8`%Et|dXn(i&f~Je%_N#B57?GTw zgOr*&J`Uvd@P8gz+U>@ZRee^MeT>0FAo$SUBldt47wR*7%IZ#6hul)FceR>KuS19vYey8L^c7IYNNS zcqf#j;nj0Vo@h|q-rq7;xralaw`8#;V%IXCh$Lf2Rg_2$LLXL-63IHJ#QB_bIfVDSq+1RekIF z%vlS#0Dlu94^UoNs5;ZiH+5#^X15LnaE8}K0Ax{Z>gKtV(${Y5sC@YSLy@N~ip>cX znVQoU9Mm+esXTjWXF+QIRu66md02u9FqjdJ)KnK{xE&@Bdpf%VQVjS%Qrc2pm=Ve> zz9!mtuc;HwkL?Q8AqkryQy^6GU}xwoNjwc+KY#VeQ|F$8Pl^>bSd`P=EC?ELkO?YoBO zM!aUjirI&@9rpC!^6Qb@G$A6AL;bNNt38jDeXA+ z-C&n-GcTYcQaS&{<=VjN2(=pC6+;^hiqvB{9*&9%X9sG0`t*_NcB!7d&AG^vH_ezJ z5w*8)Lr-&dF+xCjFF8bb)NkgUMo}hhdVj{A9jNxaY#B~8aUlPQD3h3}IcIBWdtR_g z*o**JFDJB^6y-V`>H8Zy&I`CTWzJSME%_;p5a1K{%bFy)HCDCm<9PVROD_;deOlud zp$?NP8@=~slGb(1VWOcrGdU0Lu?$*UHBG*2u&1!hwwWJcR48b)fpBP0i3r=NGkO~*f z2N-N3prmcH0HaLeL>y<7$+~Jc`78Ks)S~`;%37pUirWDgggs^r0zh?&e$Md?7_jD} z%KNYEuU^%imtx})7?%iQK$7j+gMYpXVW*b1E)f;7kJ>DxrR|G|fcxiFt4q4Gp4PTF z!MudyxrBLz$ zmxyiA@<@YsLn4-cl)3MNL900ri6eqcJ!Q??R~EiI)n}|EJfz&$j`xuR?tgh=jPZ`e z%KcTs8;(iK`wgKxZ{d{8(~xH2!8h9`ZPbkF{%$XL- zE!dq1ysKLLz&{ljmxy0cGJ4bI)~>=Fa({Af9X_WGn2QA6^IDhd(W>hYwGz zRRHMtL4^)Z0tk(MqaVj7`Nq=X*hJPWzw`CKnf~ne&ne~f`iJ;mpd?aklthY+l1Q;p n5-B!HBE?2Yq}V8l6dS()A$o4^l}7CK00000NkvXXu0mjf#a;yw delta 648 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 JPDHLkV1g(LX2k#i diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png index ae832d45bddd8289533777b85ee7000073fddd1a..2d6026ccc1f4e6dcc26b7e614e52e9d3b5758715 100644 GIT binary patch delta 1857 zcmV-H2fp~e1;q}K8Gi-<004{_gM|P92MkF>K~#90?U{RQTlE#k&+m6%_VsoB%FA{d zH%*(+cI_yPiDdLeS472z_UI7Zw2EzlZ54tF7_e!8kPu}Ouz~iF`Ug;;imG-S>CoD> z6X|F(U_y~-N}8mJn|BsH^CLHlFVsBCt3bVmVbZe{?0w;e0=Zu-Jg7E zLI@PQ=>K;C*Fz=9Vo?dQSX6>67L_22MJ32$Q3s zEykQ&*KFtCEq^EWt=4l*0Dx@g1Mc9@IG4%q+;X8!&l0|#z_ZB-Z}Xw9&=U!T8~I=L z)P-x89&$D*6qYUueA~1^2-L~B#<_fN(6gJqqGi65x8Ej}k5{{MYgmf#wv7*;bu3!B|5&v0Ma{zMV(QCl(LMR)K>GF?x3cD3!hd}lGV?fM0J72q-~gZpPahhT zoabBmDxR~)9Jcs7oXNco16=p;@#nVJP5$IfDfs9IG4EezF8;M^QIH#g(v}WGIQh5! z%0I00NniU?t+ZoI6Ur8D9e1{uz&YwI(z*KVK9%YT!*-%Xdl9Mc?85U%w5&!F$vE=$}` z>P-M0U_9!G_Ih0HKmmvpb9q4-800#3E}wW{LgI#XZKn4e*mBR78zZ2%N5s92p~-vy ze6i};69eUc1OQ{nA$imE_6V+jZwiXLItJaXF~$*{%NM0EKun(Z{E8YF%m2f*qpxfZC--QSwFv-nOA49SnX$mp zRcf{gnAztgL?u6D-It#=-3)*B3N%6xM=VEvj5GN1oMK^FG}uvlJY`XH-j)%Max)i@ zwgSNMLTWA;GS0ElRdV)Ln0e66`2uAiL4R&}F;IOUrje3ArsvGCsS%%{S)n_HocAGV zWco)q!Umq4D-N1xNmUJ$8JC>r8-j(^UNB^eq9@K9OclaNF%7cJVGyTf5VxUO6^sLq zXjyXw&EYu3pac+tWl`VC`WBA)*rA33YcCj*7?v>JlY0RnFr8kyO&0a-hGK;=jbx6; zUD+w~7O;S&c{~6JR8_VbR7qKvO&N`tMj63}-pl5UrlBy`dV=@;){gn9={nOI_Z`aT zcxuJPf817$(0ADPu_l`hde)2pLMF>omv|q2*3>MI9iyLdcD%+oA1O4aV&JKkzRKs{ zy;Si#{Tg>bg+n4_QVf~^46=P;X%@xY<;)2sW3F@ixmHY}EXCrOVUhr*QGbe<#L2p; z3r5b2q=wb|ydm~=JD=E>eI!uFzdRF^fIu4_yZ=~63XvtoI zFQ_L~$y`qi;<7<08YTE3dsa^9U$<{n#(@XZW7_wXjJX~okU1B1LDNY!rcn~pD4h}Y z9g1w;;BZqNn87j-f_l?@dvka27q?cW?m3rmpM0mU>Nh!)ns1x`#Y0jY8WYNy<9vW= zm15d=S)PhgRro0Fz<*;DizgUXA0sAVeG$i>a+5}r;GzFcEMOhWs18#nWxS91m%Y;3 zv6fYFN9`VHiB`R2f0i2T^C}oJ60T7m{PB-o=e=~kPmX-{J-r{bOp=)#R`23m)LTLs z69<5It_pGFD*N1G3a_bLUa)WBkfDhBz`c9sTL|nO&Z`AyzB-O7{gG8HDnS;DN|42( v5@fNc1X(O9K^BWjkj0`BWU;6OSuFZ5Y_H|VXrAu#00000NkvXXu0mjf^Us}w delta 689 zcmX@gw~uv#WIZzj1HMBntl+3VOuxZbAI|-_RtCa; zzf1bQk1CM;$WIl>hHyV@k-p@l@i9sXC=O)2-zoihsvMBJxK#@%0#pNJ14V#RAC}72 ze<)K(2sdNNe&q;sfqF@hUoeBVkE`~hA`Y?7^V;&G4?Oj|Q1NxftTRtuZaB2{)3HDQ zp^uer#*3aVjv*CuwqC2xZ!!>IdvM*iX@#Kp{~KqL-gW){H@`5``*m!6XNvVR zhKCD}f1Sk}A+Y=Gq}^Nx&+Lhddo|s@KK4X@Pp^K$6LEH1>&!nB^e=|!EuR_VQ@nGE zSW0i4#Z;XqPZsI?w8%O+t*tvw%sutHvWm3g#c5r)LU@;Na)|tscXCeOL&jpyo7blq z&kWkP`@qNB852)G30gl%WJ2-Ej8Ap;NssOoX}-JH*)B1ywUa-z=u76e7f*j2+c4vp z$JCPg__?|F?@pc5Gwrf+3j6%n#Hl7xelpf!rvGm)+wAm7=w(LWqnT^^euf)$hhFN9 zo4ld--ug+N6KsBo-~8eHS>?7_%MAHz4<~I(EI;7DQsi!Sb)BN%(`)bksLPqAXt2z6 zkZ}0iR(YRs_U*S}6E?P(UDp+Qxk*$pVf_<>bg50bo*MNxOJl{K?9*MCYQuBe-B)Sq zCbx}FQ@o!9?N<*~DUx(kd(-Kp9>BfK@uuh2Nay!IZH@o@RNT`vp;qsERFG@h%hp3p ze%Eg}w-+q^_kTjP@`18A{nALS&RAXNDRp&5kveLfrn9`SJWCd<@YudLJ96HE4O>Fg zJ6+qo*l*0{SE(-0vRkO3EoiNHt#o6~ylqbAuS&PZ@YOT!w(hCfTJ%)_m?juJUHx3v IIVCg!00;C#a{vGU diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png index 632a55e80f4b6954f81987b217367a8371ebab75..04b6cc7f0139875a7597f185ba5480c719d9ebcb 100644 GIT binary patch literal 4212 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 Xm)B|7WFq<@00000NkvXXu0mjfWMUp9 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 79794b3db0659a5f8fa3da8c1212b5bd35ae2900..04b3f06b874d10d92c98959c962c619926abc6bd 100644 GIT binary patch literal 7407 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 UGI{?$BNL#apebK3YaRLj0NU~*%>V!Z literal 2764 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%0A7okTP2FPIK$= zDx@dT`B@A#1>Gya_RG)g4LG(KE{^Sq?>>6fyTw|S@zFF`9P3cfDAY`I?8Mu))cXz( zy2L#e3ezyMlwfrAMwgSD-XtC0kid40avp|`P#hpWFW!!A?)h56wG2`jB#+YP1W!}D zfW3(YLJ$E4McwV04mRgEsbRUZyLsFp{)_{O@Njf6p60i$0=HPi@NkO9tD+5XBUE22 zu$nA#XaU(NmNw7cQDM_|-w!w4S+#axso91_!Mt72*pMRmVw&_O(zLK*P@E-RpXzeE zXZ9wc^snXw>{Tl$uYCJR+>xwO_1L*0d$u@RNH6~(+I{0%ran!WG%9E@tIZu-Cli<< zl|DX>LkX2PdRrfp)lEedv#(3kP5LA80qEDpd#y!CuHqskk(u^u^uRS+b_KcnFTH=~ zms3b{399Jqlr*Vz|G0i;zno%@{=yTeAkwX#w}jvUyq0+oSe;Ts_5ah+#xkrl9p=>S z>S@zPk5Wz5umj}>Ftz$7Sq+{fj))=GiMpb3X1Tg@>e6bl(7vteii-{(k2H3Si`Uwv z@Cr?N8?0YIEVtiR))_rlh-@NUI-SZ~P=HJd;CgQKWRxu44-By=*FUc9YhR5$AFnx) z+BC4tPTqz?V;Y{-OZVqaIk9p6R|u%WP}7M#G^Ec8<8f(IRo48SJg+f4E(%U+J98=Y z;%It?@8-HzdHuL@-gCEg|4>L049pR9HnGg=#WJS=iaELLmK@^)Lp|I&JACy7%dKy^ zt_;?196NJa{%ojleh>|}6C+huxq>L;2QAM;{dlJNF@;k4&#KAPz_xAZ@I<#ru-{M? z>Bh;qpAo=l%DDF1vqG)Q6uaufblDca=U=?@j_*Dex?m1EAMmDLX0JTgeye3Z%B8 zKEqH%xh;Q3=aAQpMoycf>nWSQ-(Y5Qz+DuN2NiaP;(422!LQI=d)M1rjB6!Xm@(Qo z(kZzioQOK*j8Up1)^l3K`v$=_l%lS*y)9UK1v-OE&NSOeihVtlOR5YSpdoz$D{GQZ zUCld2aCYZ?Q#{n5yt3!yAW13yCYKF_otQ>nnlYv*=4rgXPw{7QZ?0&!Yl*&9g$?gC zp@}+A4IU8I&ex{Sso<_tJrs5E(iGQ2W~+??|vMjlJU0B4!E$@YJ8Rw%aJeDfVwSeB!#T@)jyy29#N q4BK#9D{I?ze-$bH^gp77$pPA`znTyS{_*FW0gUxc_2@dcqy7)G^`tid delta 894 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 delta 2118 zcmV-M2)Xx-EXWX$8Gi!+007XK5{du-0CiAIR7FQ{OzMds@Ua^mDmoo1IvpxH9V$A1 zRxf}}FC8j69V$89E4J^2YrC|NsC0|NsAzx@&F#00&!1 zL_t(|oZZ|BbJ{o*0N@A4$Q*%?wAs>jN8-r-|DU*H-IAX!OC*`R>9E8W=tH+`Sb)dH zaQyMWcP|e%#((m&6(*R7;jDx2f$BQ{BS36c*O&pytg^ahR1aDrpbAlamF+Rmd{KP~ z;h@=~hk;%{08~ zJG+~I_qm{@`ZO6OH0BzaI<9Wa1nKfkgWktNxZ0q_QOCq{Ev~hj@GL;AW71VN7LP0< zB*hd|+W94jKm5o5G4_7BT!jcrG69utA8)2bkN-(knQT8Lpu*LW1$t#HRYG^wp4mMB z`a1=cHGiX<>GEUKj)UHHkLORYByR|)NMwT`@miuiLX-_E5#7K}&e%SZmN)2GpaRit zX|G&J?4`^qATBBZ<%@1^+I#q=e;iLKC|2@LT-{yNE%;&fjJeAXJYfiwJwSSIJ2t7~ zWaaaVCmh_Pcl1*SL7A224_i0Uuosh+5C4enL4P!lFep#N*!1cLV^ffLKlk7}wvdm2 zazuC#DGH@ve5$fr3w}YP7?j!?1L#*@`dYQ@+prbc|WPt2^tsyYF)?Hlm{vx<~ zmf?M_9FTbh8D|E<|HWF+*oH2AZ*dK8cvS4&F(C`2JJa(|{X)i`Q=sV{6%F^3Wr6f( z$ObJ`2YXM0fU&<;WP#M3H3MSo1Bz8NSpC{3Jc1IoX(kAf&AjX~KSpmZAq zt-cy)Xa*|yCKk^-0D@+qd{47B6uYHg_QkNL5D2;wP@@V9gk6t$AQA&rd&)r%_Jl!R zL>uzNLkO&T{-j^2L-H9R0H?El3V#6Sp6E1#0Le2EP@#u*2RinYfl?|m-%?69q6C0a z(TmihO0%YvcEMg&4gwoQd9GCDZJtrOaX{2d(+&hSsON9}q%-SvzA{(pf;w4<4MD^K zIbj$1+oF#E*$H&;>yM7K6Y8?LfBO_4u&TDu3`SV7Dfr zG9a^&^gT%s_@HrO5Q_*=1Y-~D%v0WKcq*bm2i4LIC=x{;2?Fz|yOB9~wzD<$)&}IK z&H>RWXlMnRq)vmj7zi4Hrdx8N2W3+os&|WnYp1a6^4e5`ko$8bAnyd6YC+fvs0P&6 zg0R#Gs272O`mNofYTFQ+8h-)la~^1G4c9F|cm{-NKb3G`K8UdYxAd{wkU<{?6 zfaJ7rih-W$LBTE01SE#xEyX~+Nwan**BGnFgM#ScKoQW^)Yh1WR)8Yki9td3stg;4 zrVF$}P&hFHf((#&y2}E+7I}i8z8R>@gMqxgk2|?qX&?)h(Z)TGjyz30?Lc|gfI8%vdr)RLgz9WOuTM^!jgItXRzf>M)n$x>-YKs^AKXwX zi<+3t?XaS~R1(?f^)@?lnJnY?Q+jU?&aQsv9F!p4>-%y4cyd8RZL=$XtYm{W2DG+E zod3joom`MtLS~E#gMTtSW^a#84JT7TR447^^@ws%j)&*6Su4icOrHEwjJRyn3DCF> z*ztqC(0ZUl0+i+9AlXYcW&)#nVmB8T#NPg(K)SCJJ6RV7<$26TaSdvJ@5~1xr(^I}JMMf<(um>>o@@(33rF&VK@dRgm*5OoN~a2!fz& zk6M1Hq1M@&PI6MGdwb221IqUlfv5qUia-UP@ha@YK_#A&5<26c0cmRUJxHSl2!PCJ z=zzKesPG4X60{40R<3OV+8`intSwMwRGZu#0DD!k(nM2I_vufl&on4q#h)wp*3C`#?WtU* zQM;FM(Y8GZNU#4oVP6<9vqbM7KL^s+fij}ON6(BT$UjV=9}{WNU>3_?0ko2Ltg|Zi wBS6lU^eceQUkxOS2>HU-gCgDSKeT}U2YlysV=#Yv$N&HU07*qoM6N<$f>XNOga7~l diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index b804bf9835532bbe6c8fd7ab7eafbaf1ceb8c71b..be8d244a939bb0fb8f7023f9a920fe02a86aaafd 100644 GIT binary patch literal 2614 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png index 99e2410e6d8df851fcacf7004837e93140feebc8..2aa91704b816e9de38d58a0bd040bd9135eb1a48 100644 GIT binary patch literal 5905 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 M(m=CT-9GyN07oWJUH||9 delta 2173 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 zś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 _cachedBaseUrl ?? dotenv.env['API_BASE_URL'] ?? 'http://10.10.4.20:8000/api'; + static String get baseUrl => _cachedBaseUrl ?? dotenv.env['API_BASE_URL'] ?? 'http://192.168.110.18:8000/api'; static String get imageBaseUrl => _cachedImageBaseUrl ?? baseUrl.replaceAll('/api', '/storage/'); static Future initialize() async { diff --git a/lib/core/services/api_config_service.dart b/lib/core/services/api_config_service.dart index d3e5f80..f6f134e 100644 --- a/lib/core/services/api_config_service.dart +++ b/lib/core/services/api_config_service.dart @@ -6,15 +6,21 @@ class ApiConfigService { static const String _selectedPresetKey = 'selected_preset'; static const Map presets = { - 'current_ip': 'http://192.168.1.3:8000/api', + 'cloudflare': 'https://exams-rhode-agency-outsourcing.trycloudflare.com/api', + 'current_ip': 'http://192.168.1.98:8000/api', 'hostname': 'http://LAPTOP-I0SUKSKL:8000/api', 'emulator': 'http://10.0.2.2:8000/api', 'custom': '', }; static Future getApiUrl() async { - final prefs = await SharedPreferences.getInstance(); + final envUrl = dotenv.env['API_BASE_URL']; + if (envUrl != null && envUrl.isNotEmpty) { + return envUrl; + } + final prefs = await SharedPreferences.getInstance(); + final savedUrl = prefs.getString(_apiUrlKey); if (savedUrl != null && savedUrl.isNotEmpty) { return savedUrl; @@ -28,11 +34,6 @@ class ApiConfigService { } } - final envUrl = dotenv.env['API_BASE_URL']; - if (envUrl != null && envUrl.isNotEmpty) { - return envUrl; - } - return presets['hostname']!; } @@ -87,6 +88,8 @@ class ApiConfigService { static String getPresetDisplayName(String presetKey) { switch (presetKey) { + case 'cloudflare': + return 'Cloudflare Tunnel (Internet)'; case 'current_ip': return 'IP Laptop Saat Ini - Recommended'; case 'hostname': diff --git a/lib/core/utils/camera_utils.dart b/lib/core/utils/camera_utils.dart index 517cf76..33847a1 100644 --- a/lib/core/utils/camera_utils.dart +++ b/lib/core/utils/camera_utils.dart @@ -59,15 +59,77 @@ class InputImageFormatUtils { } class BrightnessUtils { - static double calculateBrightness(CameraImage image) { + static double calculateBrightness(CameraImage image, {bool centerOnly = false}) { final yPlane = image.planes[0]; final bytes = yPlane.bytes; + int bytesPerRow = yPlane.bytesPerRow; + + int startX = 0; + int endX = image.width; + int startY = 0; + int endY = image.height; + + if (centerOnly) { + startX = (image.width * 0.45).toInt(); + endX = (image.width * 0.55).toInt(); + startY = (image.height * 0.45).toInt(); + endY = (image.height * 0.55).toInt(); + } int sum = 0; int count = 0; - for (int i = 0; i < bytes.length; i += 10) { - sum += bytes[i]; - count++; + + for (int y = startY; y < endY; y += 4) { + for (int x = startX; x < endX; x += 4) { + int index = y * bytesPerRow + x; + if (index < bytes.length) { + sum += bytes[index]; + count++; + } + } + } + return count > 0 ? sum / count : 0.0; + } + + static double calculateFaceUniformity(CameraImage image) { + final yPlane = image.planes[0]; + final bytes = yPlane.bytes; + int bytesPerRow = yPlane.bytesPerRow; + + int startX = (image.width * 0.30).toInt(); + int endX = (image.width * 0.70).toInt(); + int startY = (image.height * 0.30).toInt(); + int endY = (image.height * 0.70).toInt(); + int midX = (startX + endX) ~/ 2; + int midY = (startY + endY) ~/ 2; + + double topBrightness = _zoneBrightness(bytes, bytesPerRow, startX, endX, startY, midY); + double bottomBrightness = _zoneBrightness(bytes, bytesPerRow, startX, endX, midY, endY); + double leftBrightness = _zoneBrightness(bytes, bytesPerRow, startX, midX, startY, endY); + double rightBrightness = _zoneBrightness(bytes, bytesPerRow, midX, endX, startY, endY); + + final zones = [topBrightness, bottomBrightness, leftBrightness, rightBrightness]; + double maxZone = zones.reduce((a, b) => a > b ? a : b); + double minZone = zones.reduce((a, b) => a < b ? a : b); + + if (maxZone <= 0) return 0.0; + return minZone / maxZone; + } + + static double _zoneBrightness( + Uint8List bytes, int bytesPerRow, + int startX, int endX, int startY, int endY, + ) { + int sum = 0; + int count = 0; + for (int y = startY; y < endY; y += 4) { + for (int x = startX; x < endX; x += 4) { + int index = y * bytesPerRow + x; + if (index < bytes.length) { + sum += bytes[index]; + count++; + } + } } return count > 0 ? sum / count : 0.0; } diff --git a/lib/models/announcement_model.dart b/lib/models/announcement_model.dart index e308d5b..e23e1ad 100644 --- a/lib/models/announcement_model.dart +++ b/lib/models/announcement_model.dart @@ -6,6 +6,8 @@ class AnnouncementModel { final String jabatan; final String namaPembuat; final String? avatarUrl; + final String? fotoUrl; + final String? lampiranUrl; AnnouncementModel({ required this.id, @@ -15,6 +17,8 @@ class AnnouncementModel { required this.jabatan, this.namaPembuat = 'Admin', this.avatarUrl, + this.fotoUrl, + this.lampiranUrl, }); factory AnnouncementModel.fromJson(Map json) { @@ -26,6 +30,8 @@ class AnnouncementModel { jabatan: json['jabatan']?.toString() ?? '', namaPembuat: json['nama_pembuat']?.toString() ?? 'Admin', avatarUrl: json['avatar_url']?.toString(), + fotoUrl: json['foto_url']?.toString(), + lampiranUrl: json['lampiran_url']?.toString(), ); } } diff --git a/lib/providers/attendance_provider.dart b/lib/providers/attendance_provider.dart index f5c927f..9cf68da 100644 --- a/lib/providers/attendance_provider.dart +++ b/lib/providers/attendance_provider.dart @@ -98,7 +98,11 @@ class AttendanceProvider extends ChangeNotifier { notifyListeners(); } - Future fetchHistory() async { + bool _hasLoaded = false; + + Future fetchHistory({bool force = false}) async { + if (_hasLoaded && !force) return; + isLoading = true; notifyListeners(); try { @@ -106,6 +110,7 @@ class AttendanceProvider extends ChangeNotifier { month: selectedMonth, year: selectedYear, ); + _hasLoaded = true; } catch (e) { print('Error fetching history: $e'); } finally { @@ -117,13 +122,13 @@ class AttendanceProvider extends ChangeNotifier { void setMonth(int month) { selectedMonth = month; notifyListeners(); - fetchHistory(); + fetchHistory(force: true); } void setYear(int year) { selectedYear = year; notifyListeners(); - fetchHistory(); + fetchHistory(force: true); } Future submitPresensi(String type, File photoFile) async { @@ -169,7 +174,7 @@ class AttendanceProvider extends ChangeNotifier { try { final success = await _repository.resubmitPresensi(idPresensi, keterangan); if (success) { - await fetchHistory(); + await fetchHistory(force: true); } return success; } catch (e) { diff --git a/lib/providers/face_provider.dart b/lib/providers/face_provider.dart index c9b1d4e..26fe2d2 100644 --- a/lib/providers/face_provider.dart +++ b/lib/providers/face_provider.dart @@ -6,11 +6,11 @@ import 'package:google_mlkit_face_detection/google_mlkit_face_detection.dart'; import '../repositories/face_repository.dart'; import '../core/utils/camera_utils.dart'; -enum VideoRecordingState { idle, ready, recording, uploading, success, error } +enum VideoRecordingState { idle, recording, uploading, success, error } enum FaceDetectionStatus { noFace, detected } -enum EnrollmentStep { front, right, left } +enum EnrollmentStep { front, right, left, done } class FaceProvider with ChangeNotifier { final FaceRepository _repository = FaceRepository(); @@ -31,22 +31,29 @@ class FaceProvider with ChangeNotifier { String _errorMessage = ''; bool _isProcessingFrame = false; - // Guided enrollment - EnrollmentStep _currentStep = EnrollmentStep.front; double _headEulerAngleY = 0.0; bool _isPoseValid = false; double _faceRatio = 0.0; bool _isDistanceOk = false; double _brightness = 0.0; bool _isBrightnessOk = false; - double _stepProgress = 0.0; - double _rightAngleSign = 0.0; - int _consecutiveValidPosedFrames = 0; - Timer? _progressTimer; + double _lightingUniformity = 0.0; + bool _isLightingUniform = false; - static const double _frontDuration = 4.0; - static const double _sideDuration = 6.0; // Tambahan jeda ekstra untuk menoleh yang rapi - static const double _tickInterval = 100; + EnrollmentStep _currentStep = EnrollmentStep.front; + DateTime? _poseStartTime; + bool _needsAbort = false; + String _abortReason = ''; + + Timer? _maxDurationTimer; + static const int _maxRecordingSeconds = 45; + DateTime? _recordingStartTime; + static const int _warmupMs = 2000; + static const double _turnThreshold = 10.0; + + int _consecutiveBadFrames = 0; + static const int _badFrameThreshold = 30; + static const int _holdDurationMs = 4000; VideoRecordingState get recordingState => _recordingState; FaceDetectionStatus get faceDetectionStatus => _faceDetectionStatus; @@ -55,96 +62,107 @@ class FaceProvider with ChangeNotifier { bool get isFaceDetected => _faceDetectionStatus == FaceDetectionStatus.detected; - EnrollmentStep get currentStep => _currentStep; double get headEulerAngleY => _headEulerAngleY; bool get isPoseValid => _isPoseValid; double get faceRatio => _faceRatio; bool get isDistanceOk => _isDistanceOk; double get brightness => _brightness; bool get isBrightnessOk => _isBrightnessOk; - double get stepProgress => _stepProgress; + double get lightingUniformity => _lightingUniformity; + bool get isLightingUniform => _isLightingUniform; + double get stepProgress { + int completed = 0; + if (_currentStep == EnrollmentStep.right) completed = 1; + if (_currentStep == EnrollmentStep.left) completed = 2; + if (_currentStep == EnrollmentStep.done) completed = 3; + + double holdProgress = 0.0; + if (_poseStartTime != null && _currentStep != EnrollmentStep.done) { + holdProgress = (DateTime.now().difference(_poseStartTime!).inMilliseconds / _holdDurationMs.toDouble()).clamp(0.0, 1.0) / 3.0; + } + return (completed / 3.0) + holdProgress; + } + + bool get needsAbort => _needsAbort; + String get abortReason => _abortReason; + bool get isChecklistComplete => _currentStep == EnrollmentStep.done; bool get allChecksValid => - isFaceDetected && _isPoseValid && _isDistanceOk && _isBrightnessOk; + isFaceDetected && _isPoseValid && _isDistanceOk && _isBrightnessOk && _isLightingUniform; String get qualityMessage { - if (_recordingState == VideoRecordingState.ready) return 'Liveliness Lulus! Tekan tombol Rekam di bawah.'; if (_recordingState == VideoRecordingState.recording) { - if (_currentStep == EnrollmentStep.front) return 'Tahan posisi hadap depan...'; - if (_currentStep == EnrollmentStep.right) return 'Mulai toleh ke kanan perlahan...'; - return 'Mulai toleh arah sebaliknya perlahan...'; + int secondsLeft = (_holdDurationMs / 1000).ceil(); + if (_poseStartTime != null) { + int elapsed = DateTime.now().difference(_poseStartTime!).inMilliseconds; + secondsLeft = ((_holdDurationMs / 1000).ceil() - (elapsed / 1000).floor()).clamp(1, (_holdDurationMs / 1000).ceil()); + } + + switch (_currentStep) { + case EnrollmentStep.front: + if (_poseStartTime == null) return 'Tatap lurus ke kamera...'; + return 'Tahan pose depan... ($secondsLeft detik)'; + case EnrollmentStep.right: + if (_poseStartTime == null) return 'Menoleh perlahan ke KANAN 👉'; + return 'Tahan pose kanan... ($secondsLeft detik)'; + case EnrollmentStep.left: + if (_poseStartTime == null) return 'Menoleh perlahan ke KIRI 👈'; + return 'Tahan pose kiri... ($secondsLeft detik)'; + case EnrollmentStep.done: + return 'Pose Selesai! Menyimpan...'; + } } if (!isFaceDetected) return 'Arahkan wajah ke dalam bingkai'; - if (_faceRatio < 0.20) return 'Terlalu jauh, dekatkan wajah ke kamera'; - if (_faceRatio > 0.70) return 'Terlalu dekat, mundur sedikit'; - if (!_isBrightnessOk) return 'Pencahayaan kurang, cari terang'; - if (!_isPoseValid) { - switch (_currentStep) { - case EnrollmentStep.front: - return 'UJI: Hadap depan (Ideal: <12, Skg: ${_headEulerAngleY.toStringAsFixed(0)})'; - case EnrollmentStep.right: - return 'UJI: Toleh kanan/kiri (Minimal 12 derajat, Skg: ${_headEulerAngleY.toStringAsFixed(0)})'; - case EnrollmentStep.left: - return 'UJI: Toleh arah sebaliknya (Minimal 12 derajat, Skg: ${_headEulerAngleY.toStringAsFixed(0)})'; - } - } + if (_faceRatio < 0.25) return 'Terlalu jauh, dekatkan wajah ke kamera'; + if (_faceRatio > 0.75) return 'Terlalu dekat, mundur sedikit'; + if (!_isBrightnessOk) return 'Pencahayaan kurang, cari tempat terang'; + if (!_isLightingUniform) return 'Ada bayangan di wajah, hadap langsung ke cahaya'; + if (!_isPoseValid) return 'Hadap depan lurus ke kamera'; return ''; } - String get stepLabel { - if (_recordingState == VideoRecordingState.idle) { - switch (_currentStep) { - case EnrollmentStep.front: return 'Tes Liveliness: Depan'; - case EnrollmentStep.right: return 'Tes Liveliness: Toleh Kanan'; - case EnrollmentStep.left: return 'Tes Liveliness: Toleh Kiri'; - } - } - - switch (_currentStep) { - case EnrollmentStep.front: - return 'Merekam: Hadap Depan'; - case EnrollmentStep.right: - return 'Merekam: Toleh Kanan'; - case EnrollmentStep.left: - return 'Merekam: Toleh Kiri'; - } - } - void reset() { _recordingState = VideoRecordingState.idle; _faceDetectionStatus = FaceDetectionStatus.noFace; _videoFile = null; _message = ''; _errorMessage = ''; - _isProcessingFrame = false; _currentStep = EnrollmentStep.front; - _headEulerAngleY = 0.0; - _isPoseValid = false; + _consecutiveBadFrames = 0; + _poseStartTime = null; + _recordingStartTime = null; + _needsAbort = false; + _abortReason = ''; _faceRatio = 0.0; _isDistanceOk = false; _brightness = 0.0; _isBrightnessOk = false; - _stepProgress = 0.0; - _rightAngleSign = 0.0; - _consecutiveValidPosedFrames = 0; - _progressTimer?.cancel(); - _progressTimer = null; + _lightingUniformity = 0.0; + _isLightingUniform = false; + _maxDurationTimer?.cancel(); + _maxDurationTimer = null; notifyListeners(); } - Future startRecording(CameraController controller) async { + Future startRecording( + CameraController controller, { + void Function(CameraImage)? onAvailable, + }) async { if (_recordingState == VideoRecordingState.recording) return; try { - await controller.startVideoRecording(); + await controller.startVideoRecording(onAvailable: onAvailable); _recordingState = VideoRecordingState.recording; _currentStep = EnrollmentStep.front; - _stepProgress = 0.0; - _message = 'Hadap Depan'; + _poseStartTime = null; + _needsAbort = false; + _consecutiveBadFrames = 0; + _recordingStartTime = DateTime.now(); + _message = 'Tatap lurus ke kamera...'; notifyListeners(); - _startProgressTimer(controller); + _startWatchdogTimer(controller); } catch (e) { _recordingState = VideoRecordingState.error; _errorMessage = 'Gagal memulai rekaman: $e'; @@ -152,58 +170,40 @@ class FaceProvider with ChangeNotifier { } } - void _startProgressTimer(CameraController controller) { - _progressTimer?.cancel(); - _progressTimer = Timer.periodic( - Duration(milliseconds: _tickInterval.toInt()), - (timer) { - if (_recordingState != VideoRecordingState.recording) { - timer.cancel(); - return; - } - - // Fase 2: Hardware Android Camera2 pada banyak device mematikan aliran Stream Gambar - // ketika Stream Video berjalan (freeze). Bypass strict MLKit, andalkan jeda waktu murni. - final duration = _currentStep == EnrollmentStep.front - ? _frontDuration - : _sideDuration; - final increment = (_tickInterval / 1000) / duration; - - _stepProgress += increment; - - if (_stepProgress >= 1.0) { - _advanceStep(controller); - } - - notifyListeners(); - }, - ); + void _startWatchdogTimer(CameraController controller) { + _maxDurationTimer?.cancel(); + _maxDurationTimer = Timer(const Duration(seconds: _maxRecordingSeconds), () { + if (_recordingState == VideoRecordingState.recording) { + _triggerAbort("Gagal menyelesaikan instruksi wajah."); + } + }); } - void _advanceStep(CameraController controller) { - switch (_currentStep) { - case EnrollmentStep.front: - _currentStep = EnrollmentStep.right; - _stepProgress = 0.0; - _isPoseValid = false; - _rightAngleSign = 0.0; - _message = 'Toleh Kanan'; - break; - case EnrollmentStep.right: - _currentStep = EnrollmentStep.left; - _stepProgress = 0.0; - _isPoseValid = false; - _message = 'Toleh Kiri'; - break; - case EnrollmentStep.left: - _progressTimer?.cancel(); - stopRecording(controller); - break; + void _triggerAbort(String reason) { + _needsAbort = true; + _abortReason = reason; + notifyListeners(); + } + + Future abortRecording(CameraController controller) async { + _maxDurationTimer?.cancel(); + if (controller.value.isRecordingVideo) { + try { + await controller.stopVideoRecording(); + } catch (_) {} } + await Future.delayed(const Duration(milliseconds: 500)); + + _recordingState = VideoRecordingState.error; + _errorMessage = _abortReason.isNotEmpty ? _abortReason : "Perekaman dibatalkan."; + _needsAbort = false; + notifyListeners(); } + + Future stopRecording(CameraController controller) async { - _progressTimer?.cancel(); + _maxDurationTimer?.cancel(); if (!controller.value.isRecordingVideo) return; @@ -230,14 +230,19 @@ class FaceProvider with ChangeNotifier { } _recordingState = VideoRecordingState.uploading; - _message = 'Mengunggah & memproses video...'; + final fileSize = await _videoFile!.length(); + debugPrint('[FaceUpload] File: ${_videoFile!.path}, Size: ${(fileSize / 1024 / 1024).toStringAsFixed(2)} MB'); + _message = 'Mengunggah video (${(fileSize / 1024 / 1024).toStringAsFixed(1)} MB)...'; notifyListeners(); try { + debugPrint('[FaceUpload] Mulai upload...'); await _repository.enrollFace(videoFile: _videoFile!); + debugPrint('[FaceUpload] Upload BERHASIL'); _recordingState = VideoRecordingState.success; _message = 'Pendaftaran Wajah Berhasil!'; } catch (e) { + debugPrint('[FaceUpload] Upload GAGAL: $e'); _recordingState = VideoRecordingState.error; _errorMessage = e.toString().replaceAll('Exception: ', ''); } @@ -253,8 +258,11 @@ class FaceProvider with ChangeNotifier { _isProcessingFrame = true; try { - _brightness = BrightnessUtils.calculateBrightness(image); - _isBrightnessOk = _brightness > 60; + _brightness = BrightnessUtils.calculateBrightness(image, centerOnly: true); + _isBrightnessOk = _brightness > 70; + + _lightingUniformity = BrightnessUtils.calculateFaceUniformity(image); + _isLightingUniform = _lightingUniformity > 0.45; final inputImage = CameraUtils.inputImageFromCameraImage( image: image, @@ -270,53 +278,108 @@ class FaceProvider with ChangeNotifier { _headEulerAngleY = face.headEulerAngleY ?? 0.0; - final imageWidth = image.width.toDouble(); - final box = face.boundingBox; - _faceRatio = box.width / imageWidth; - _isDistanceOk = _faceRatio >= 0.20 && _faceRatio <= 0.70; + // Tentukan dimensi efektif berdasarkan rotasi sensor + // Sensor landscape (270°/90°) → dimensi display-nya DIBALIK + final bool isRotated90or270 = + rotation == InputImageRotation.rotation90deg || + rotation == InputImageRotation.rotation270deg; + final double effectiveWidth = isRotated90or270 + ? image.height.toDouble() + : image.width.toDouble(); + final double effectiveHeight = isRotated90or270 + ? image.width.toDouble() + : image.height.toDouble(); - switch (_currentStep) { - case EnrollmentStep.front: - _isPoseValid = _headEulerAngleY.abs() < 12; - break; - case EnrollmentStep.right: - _isPoseValid = _headEulerAngleY.abs() >= 12; - if (_isPoseValid) { - _rightAngleSign = _headEulerAngleY.sign; - } - break; - case EnrollmentStep.left: - _isPoseValid = _headEulerAngleY.abs() >= 12 && - (_rightAngleSign == 0.0 || _headEulerAngleY.sign != _rightAngleSign); - break; + final box = face.boundingBox; + + // faceRatio dihitung dari lebar display yang sebenarnya + _faceRatio = box.width / effectiveWidth; + + // Validasi: Wajah harus berada SEPENUHNYA di dalam frame (tidak terpotong) + final double marginW = effectiveWidth * 0.03; + final double marginH = effectiveHeight * 0.03; + final bool isFaceInsideFrame = + box.left >= marginW && + box.top >= marginH && + box.right <= (effectiveWidth - marginW) && + box.bottom <= (effectiveHeight - marginH); + + if (_recordingState == VideoRecordingState.recording) { + _isDistanceOk = isFaceInsideFrame && _faceRatio >= 0.20 && _faceRatio <= 0.80; + } else { + _isDistanceOk = isFaceInsideFrame && _faceRatio >= 0.25 && _faceRatio <= 0.75; } - // Auto Advance Phase 1 - if (_recordingState == VideoRecordingState.idle && allChecksValid) { - _consecutiveValidPosedFrames++; - if (_consecutiveValidPosedFrames > 5) { - _consecutiveValidPosedFrames = 0; - if (_currentStep == EnrollmentStep.front) { - _currentStep = EnrollmentStep.right; - _isPoseValid = false; - _rightAngleSign = 0.0; - } else if (_currentStep == EnrollmentStep.right) { - _currentStep = EnrollmentStep.left; - _isPoseValid = false; - } else if (_currentStep == EnrollmentStep.left) { - _recordingState = VideoRecordingState.ready; - _currentStep = EnrollmentStep.front; // Reset for recording phase - _isPoseValid = true; + _isPoseValid = _headEulerAngleY.abs() < 18.0; + + if (_recordingState == VideoRecordingState.recording) { + final bool isWarmup = _recordingStartTime != null && + DateTime.now().difference(_recordingStartTime!).inMilliseconds < _warmupMs; + + if (!_isDistanceOk || !_isBrightnessOk || !_isLightingUniform) { + if (!isWarmup) { + _consecutiveBadFrames++; + if (_consecutiveBadFrames >= _badFrameThreshold) { + _triggerAbort("Perekaman batal: Jarak wajah atau cahaya tidak sesuai."); + } + } + _poseStartTime = null; + } else { + _consecutiveBadFrames = 0; + bool isHoldingCorrectPose = false; + + switch (_currentStep) { + case EnrollmentStep.front: + isHoldingCorrectPose = _headEulerAngleY.abs() < 18.0; + break; + case EnrollmentStep.right: + isHoldingCorrectPose = _headEulerAngleY < -_turnThreshold; + break; + case EnrollmentStep.left: + isHoldingCorrectPose = _headEulerAngleY > _turnThreshold; + break; + case EnrollmentStep.done: + isHoldingCorrectPose = true; + break; + } + + if (isHoldingCorrectPose) { + if (_poseStartTime == null) { + _poseStartTime = DateTime.now(); + } else if (DateTime.now().difference(_poseStartTime!).inMilliseconds >= _holdDurationMs) { + if (_currentStep == EnrollmentStep.front) { + _currentStep = EnrollmentStep.right; + _poseStartTime = null; + } else if (_currentStep == EnrollmentStep.right) { + _currentStep = EnrollmentStep.left; + _poseStartTime = null; + } else if (_currentStep == EnrollmentStep.left) { + _currentStep = EnrollmentStep.done; + _poseStartTime = null; + notifyListeners(); + } + } + } else { + _poseStartTime = null; } } - } else { - _consecutiveValidPosedFrames = 0; } } else { _faceDetectionStatus = FaceDetectionStatus.noFace; _isPoseValid = false; _isDistanceOk = false; _faceRatio = 0.0; + + if (_recordingState == VideoRecordingState.recording) { + final bool isWarmup = _recordingStartTime != null && + DateTime.now().difference(_recordingStartTime!).inMilliseconds < _warmupMs; + if (!isWarmup) { + _consecutiveBadFrames++; + if (_consecutiveBadFrames >= _badFrameThreshold) { + _triggerAbort("Perekaman batal: Wajah tidak ditemukan dalam bingkai."); + } + } + } } notifyListeners(); @@ -342,7 +405,7 @@ class FaceProvider with ChangeNotifier { @override void dispose() { - _progressTimer?.cancel(); + _maxDurationTimer?.cancel(); _faceDetector.close(); super.dispose(); } diff --git a/lib/providers/home_provider.dart b/lib/providers/home_provider.dart index 10e7a88..30e3c62 100644 --- a/lib/providers/home_provider.dart +++ b/lib/providers/home_provider.dart @@ -19,10 +19,15 @@ class HomeProvider extends ChangeNotifier { bool _isLoading = false; bool get isLoading => _isLoading; + bool _hasLoaded = false; + bool get hasLoaded => _hasLoaded; + String? _errorMessage; String? get errorMessage => _errorMessage; - Future fetchDashboardData() async { + Future fetchDashboardData({bool force = false}) async { + if (_hasLoaded && !force) return; + _isLoading = true; notifyListeners(); @@ -36,6 +41,7 @@ class HomeProvider extends ChangeNotifier { izinCount = data['izin_count'] ?? 0; alphaCount = data['alpha_count'] ?? 0; _isLoading = false; + _hasLoaded = true; _scheduleAttendanceReminders(); } catch (e) { diff --git a/lib/providers/pengajuan_provider.dart b/lib/providers/pengajuan_provider.dart index 3260a89..0ec0d65 100644 --- a/lib/providers/pengajuan_provider.dart +++ b/lib/providers/pengajuan_provider.dart @@ -126,7 +126,7 @@ class PengajuanProvider extends ChangeNotifier { try { return await _repository.submitPengajuan(type, data); } catch(e) { - return false; + rethrow; } finally { isLoading = false; notifyListeners(); diff --git a/lib/providers/poin_provider.dart b/lib/providers/poin_provider.dart index 96fd480..2ccaea2 100644 --- a/lib/providers/poin_provider.dart +++ b/lib/providers/poin_provider.dart @@ -30,7 +30,11 @@ class PoinProvider extends ChangeNotifier { TimeOfDay? get shiftEnd => _shiftEnd; String? get namaShift => _namaShift; - Future loadExpiringPoints() async { + bool _hasLoadedExpiring = false; + + Future loadExpiringPoints({bool force = false}) async { + if (_hasLoadedExpiring && !force) return; + _isLoading = true; _errorMessage = null; notifyListeners(); @@ -49,6 +53,7 @@ class PoinProvider extends ChangeNotifier { } } _errorMessage = null; + _hasLoadedExpiring = true; } else { _errorMessage = result['message']; } diff --git a/lib/repositories/face_repository.dart b/lib/repositories/face_repository.dart index 2836db1..d3b1010 100644 --- a/lib/repositories/face_repository.dart +++ b/lib/repositories/face_repository.dart @@ -9,13 +9,18 @@ class FaceRepository { Future> enrollFace({ required File videoFile, }) async { + final url = '${ApiUrl.baseUrl}/face/enroll'; + final fileSize = await videoFile.length(); + final fileSizeMB = (fileSize / 1024 / 1024).toStringAsFixed(2); + + print('[FaceRepo] URL: $url'); + print('[FaceRepo] File: ${videoFile.path}, Size: $fileSizeMB MB'); + try { final token = CacheManager.authBox.get('auth_token'); + print('[FaceRepo] Token: ${token != null ? "ada (${token.toString().substring(0, 20)}...)" : "NULL!"}'); - var request = http.MultipartRequest( - 'POST', - Uri.parse('${ApiUrl.baseUrl}/face/enroll'), - ); + var request = http.MultipartRequest('POST', Uri.parse(url)); request.headers.addAll({ 'Authorization': 'Bearer $token', @@ -28,12 +33,25 @@ class FaceRepository { contentType: MediaType('video', 'mp4'), )); - var streamedResponse = await request.send().timeout( - const Duration(minutes: 3), - ); - var response = await http.Response.fromStream(streamedResponse); + print('[FaceRepo] Sending request...'); + final stopwatch = Stopwatch()..start(); - final body = jsonDecode(response.body); + var streamedResponse = await request.send().timeout( + const Duration(minutes: 5), + ); + + stopwatch.stop(); + print('[FaceRepo] Response received in ${stopwatch.elapsed.inSeconds}s, status: ${streamedResponse.statusCode}'); + + var response = await http.Response.fromStream(streamedResponse); + print('[FaceRepo] Body: ${response.body}'); + + Map body; + try { + body = jsonDecode(response.body); + } catch (_) { + throw Exception('Server mengembalikan format tidak valid. Coba ulangi lagi.'); + } if (response.statusCode == 200 || response.statusCode == 201) { return { @@ -45,11 +63,12 @@ class FaceRepository { throw Exception(body['message'] ?? 'Gagal mendaftarkan wajah: ${response.statusCode}'); } } catch (e) { + print('[FaceRepo] ERROR: $e'); rethrow; } } - Future> verifyFace(File imageFile, {String tipe = 'presensi'}) async { + Future> verifyFace(File videoFile, {String tipe = 'presensi'}) async { final token = CacheManager.authBox.get('auth_token'); var request = http.MultipartRequest( 'POST', @@ -61,10 +80,16 @@ class FaceRepository { 'Accept': 'application/json', }); - request.files.add(await http.MultipartFile.fromPath('foto', imageFile.path)); + request.files.add(await http.MultipartFile.fromPath( + 'file_wajah', + videoFile.path, + contentType: MediaType('video', 'mp4'), + )); request.fields['tipe'] = tipe; - var streamedResponse = await request.send(); + var streamedResponse = await request.send().timeout( + const Duration(minutes: 3), + ); var response = await http.Response.fromStream(streamedResponse); final body = jsonDecode(response.body); diff --git a/lib/repositories/home_repository.dart b/lib/repositories/home_repository.dart index e4f7525..ca847ed 100644 --- a/lib/repositories/home_repository.dart +++ b/lib/repositories/home_repository.dart @@ -50,7 +50,11 @@ class HomeRepository { ); } - final pengumumanList = await getPengumuman(); + // Fetch pengumuman secara terpisah — error tidak merusak dashboard + List pengumumanList = []; + try { + pengumumanList = await getPengumuman(); + } catch (_) {} return { 'user': user, @@ -81,7 +85,7 @@ class HomeRepository { Future> getPengumuman() async { try { final response = await _apiClient.dio.get('/pengumuman'); - if (response.data['success'] == true) { + if (response.data is Map && response.data['success'] == true) { final List data = response.data['data']; return data.map((json) => AnnouncementModel.fromJson(json)).toList(); } diff --git a/lib/repositories/pengajuan_repository.dart b/lib/repositories/pengajuan_repository.dart index 83f99a2..c25ace1 100644 --- a/lib/repositories/pengajuan_repository.dart +++ b/lib/repositories/pengajuan_repository.dart @@ -26,45 +26,43 @@ class PengajuanRepository { } Future submitPengajuan(String jenis, Map data) async { - try { - final typesResponse = await _apiClient.dio.get('/submission/types'); - if (typesResponse.data['success'] != true) return false; + final typesResponse = await _apiClient.dio.get('/submission/types'); + if (typesResponse.data['success'] != true) { + throw Exception('Gagal memuat jenis izin'); + } - final List types = typesResponse.data['data']; - final jenisObj = types.firstWhere( - (t) => t['nama_izin'].toString().toLowerCase() == jenis.toLowerCase(), - orElse: () => null, - ); + final List types = typesResponse.data['data']; + final jenisObj = types.firstWhere( + (t) => t['nama_izin'].toString().toLowerCase() == jenis.toLowerCase(), + orElse: () => null, + ); - if (jenisObj == null) throw Exception('Jenis izin tidak ditemukan'); - final int jenisId = jenisObj['id_jenis_izin']; + if (jenisObj == null) throw Exception('Jenis izin tidak ditemukan'); + final int jenisId = jenisObj['id_jenis_izin']; - FormData formData = FormData.fromMap({ - 'id_jenis_izin': jenisId, - 'tanggal_mulai': data['tanggal_mulai'], - 'tanggal_selesai': data['tanggal_selesai'], - 'alasan': data['alasan'], - }); + FormData formData = FormData.fromMap({ + 'id_jenis_izin': jenisId, + 'tanggal_mulai': data['tanggal_mulai'], + 'tanggal_selesai': data['tanggal_selesai'], + 'alasan': data['alasan'], + }); - if (data['bukti_file'] != null) { - try { - final file = File(data['bukti_file']); - if (await file.exists()) { - formData.files.add(MapEntry( - 'bukti_file', - await MultipartFile.fromFile(data['bukti_file']), - )); - } - } catch (e) { - print('File upload skipped: $e'); - } + if (data['bukti_file'] != null) { + final file = File(data['bukti_file']); + if (await file.exists()) { + formData.files.add(MapEntry( + 'bukti_file', + await MultipartFile.fromFile(data['bukti_file']), + )); } + } - final response = await _apiClient.dio.post('/submission', data: formData); - return response.data['success'] == true; - } catch (e) { - print('Error submitting pengajuan: $e'); - return false; + final response = await _apiClient.dio.post('/submission', data: formData); + + if (response.data['success'] == true) { + return true; + } else { + throw Exception(response.data['message'] ?? 'Pengajuan gagal'); } } } diff --git a/lib/screens/auth/login_screen.dart b/lib/screens/auth/login_screen.dart index 4343d09..13567cd 100644 --- a/lib/screens/auth/login_screen.dart +++ b/lib/screens/auth/login_screen.dart @@ -67,16 +67,6 @@ class _LoginScreenState extends State { width: 200, fit: BoxFit.contain, ), - const SizedBox(height: AppTheme.spacingMd), - Text( - "HRIS MP", - style: AppTheme.heading2.copyWith(letterSpacing: 1), - ), - const SizedBox(height: 4), - Text( - "Sistem Informasi SDM", - style: AppTheme.bodySmall.copyWith(color: AppTheme.textTertiary), - ), const SizedBox(height: AppTheme.spacingXxl), diff --git a/lib/screens/home/home_screen.dart b/lib/screens/home/home_screen.dart index 9f46b32..a3f8c2b 100644 --- a/lib/screens/home/home_screen.dart +++ b/lib/screens/home/home_screen.dart @@ -66,7 +66,7 @@ class _HomeScreenState extends State { ), const SizedBox(height: 24), ElevatedButton.icon( - onPressed: () => provider.fetchDashboardData(), + onPressed: () => provider.fetchDashboardData(force: true), icon: const Icon(Icons.refresh, size: 18), label: const Text("Coba Lagi"), style: ElevatedButton.styleFrom( @@ -90,7 +90,7 @@ class _HomeScreenState extends State { backgroundColor: AppTheme.bgLight, body: SafeArea( child: RefreshIndicator( - onRefresh: () => provider.fetchDashboardData(), + onRefresh: () => provider.fetchDashboardData(force: true), child: SingleChildScrollView( physics: const AlwaysScrollableScrollPhysics(), padding: const EdgeInsets.symmetric(horizontal: AppTheme.spacingMd, vertical: AppTheme.spacingMd), @@ -135,7 +135,7 @@ class _HomeScreenState extends State { ), ).then((result) { if (result != null && result['success'] == true) { - provider.fetchDashboardData(); + provider.fetchDashboardData(force: true); ErrorHandler.showSuccess(result['message'] ?? 'Presensi berhasil'); } }); @@ -207,7 +207,7 @@ class _HomeScreenState extends State { ) else SizedBox( - height: 130, + height: 170, child: ListView.builder( scrollDirection: Axis.horizontal, itemCount: provider.pengumumanList.length, diff --git a/lib/screens/home/pengumuman_detail_screen.dart b/lib/screens/home/pengumuman_detail_screen.dart index 8e3ffec..ba495e0 100644 --- a/lib/screens/home/pengumuman_detail_screen.dart +++ b/lib/screens/home/pengumuman_detail_screen.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; +import 'package:url_launcher/url_launcher.dart'; import '../../core/theme.dart'; import '../../models/announcement_model.dart'; import '../../widgets/atoms/custom_avatar.dart'; @@ -220,6 +221,150 @@ class PengumumanDetailScreen extends StatelessWidget { ), ), + // Foto pengumuman + if (pengumuman.fotoUrl != null) ...[ + const SizedBox(height: 16), + FadeInUp( + delayMs: 120, + child: Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(AppTheme.radiusLg), + boxShadow: AppTheme.shadowSm, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.fromLTRB(20, 16, 20, 12), + child: Row( + children: [ + Container( + width: 4, + height: 20, + decoration: BoxDecoration( + color: AppTheme.primaryBlue, + borderRadius: BorderRadius.circular(2), + ), + ), + const SizedBox(width: 8), + Text( + 'Foto', + style: AppTheme.heading3.copyWith(fontSize: 14), + ), + ], + ), + ), + ClipRRect( + borderRadius: const BorderRadius.only( + bottomLeft: Radius.circular(AppTheme.radiusLg), + bottomRight: Radius.circular(AppTheme.radiusLg), + ), + child: Image.network( + pengumuman.fotoUrl!, + width: double.infinity, + fit: BoxFit.cover, + errorBuilder: (_, __, ___) => Container( + height: 120, + color: AppTheme.bgLight, + child: const Center( + child: Icon(Icons.broken_image_outlined, + color: Colors.grey, size: 40), + ), + ), + loadingBuilder: (context, child, progress) { + if (progress == null) return child; + return Container( + height: 180, + color: AppTheme.bgLight, + child: const Center( + child: CircularProgressIndicator()), + ); + }, + ), + ), + ], + ), + ), + ), + ], + + // Lampiran (file) + if (pengumuman.lampiranUrl != null) ...[ + const SizedBox(height: 16), + FadeInUp( + delayMs: 160, + child: GestureDetector( + onTap: () async { + final uri = Uri.tryParse(pengumuman.lampiranUrl!); + if (uri != null && await canLaunchUrl(uri)) { + await launchUrl(uri, + mode: LaunchMode.externalApplication); + } + }, + child: Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: + BorderRadius.circular(AppTheme.radiusLg), + boxShadow: AppTheme.shadowSm, + border: Border.all( + color: AppTheme.primaryBlue.withValues(alpha: 0.2), + ), + ), + child: Row( + children: [ + Container( + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + color: AppTheme.primaryBlue + .withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Icon( + Icons.attach_file_rounded, + color: AppTheme.primaryBlue, + size: 20, + ), + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Lampiran', + style: AppTheme.labelLarge.copyWith( + color: AppTheme.primaryBlue, + fontWeight: FontWeight.w700, + ), + ), + Text( + pengumuman.lampiranUrl! + .split('/') + .last, + style: AppTheme.bodySmall.copyWith( + color: AppTheme.textSecondary, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ], + ), + ), + Icon( + Icons.download_rounded, + color: AppTheme.primaryBlue, + size: 20, + ), + ], + ), + ), + ), + ), + ], + const SizedBox(height: 80), ], ), diff --git a/lib/screens/main_screen.dart b/lib/screens/main_screen.dart index 1073c4b..65f4ced 100644 --- a/lib/screens/main_screen.dart +++ b/lib/screens/main_screen.dart @@ -1,10 +1,15 @@ +import 'dart:async'; import 'dart:ui'; import 'package:flutter/material.dart'; -import 'package:animations/animations.dart'; import 'package:provider/provider.dart'; import '../core/theme.dart'; import '../providers/notification_provider.dart'; +import '../providers/home_provider.dart'; +import '../providers/pengajuan_provider.dart'; +import '../providers/attendance_provider.dart'; +import '../providers/poin_provider.dart'; import '../services/fcm_service.dart'; +import '../services/websocket_service.dart'; import 'home/home_screen.dart'; import 'profile/profile_screen.dart'; import 'presensi/presensi_screen.dart'; @@ -20,13 +25,15 @@ class MainScreen extends StatefulWidget { class _MainScreenState extends State with WidgetsBindingObserver { int _currentIndex = 0; - final List _screens = [ - const HomeScreen(), - const PresensiScreen(), - const PengajuanScreen(), - const ProfileScreen(), + final List _screens = const [ + HomeScreen(), + PresensiScreen(), + PengajuanScreen(), + ProfileScreen(), ]; + StreamSubscription? _wsSubscription; + @override void initState() { super.initState(); @@ -34,11 +41,52 @@ class _MainScreenState extends State with WidgetsBindingObserver { WidgetsBinding.instance.addPostFrameCallback((_) { context.read().fetchUnreadCount(); FcmService().initialize(context); + _initWebSocket(); + }); + } + + void _initWebSocket() { + final ws = WebSocketService(); + ws.connect(); + + _wsSubscription = ws.eventStream.listen((event) { + final eventName = event['event'] as String? ?? ''; + + if (eventName.contains('Notifikasi')) { + context.read().fetchUnreadCount(); + } + + if (eventName.contains('Pengajuan') || + eventName.contains('Lembur') || + eventName.contains('Poin') || + eventName.contains('Cuti') || + eventName.contains('Surat')) { + context.read().fetchPengajuan(); + context.read().fetchDashboardData(force: true); + } + + if (eventName.contains('Presensi')) { + context.read().fetchHistory(force: true); + context.read().fetchDashboardData(force: true); + } + + if (eventName.contains('Jadwal') || eventName.contains('TukarShift')) { + context.read().fetchDashboardData(force: true); + } + + if (eventName.contains('Pengumuman')) { + context.read().fetchDashboardData(force: true); + } + + if (eventName.contains('FaceEnrollment')) { + context.read().fetchDashboardData(force: true); + } }); } @override void dispose() { + _wsSubscription?.cancel(); WidgetsBinding.instance.removeObserver(this); super.dispose(); } @@ -55,19 +103,9 @@ class _MainScreenState extends State with WidgetsBindingObserver { return Scaffold( extendBody: true, - body: PageTransitionSwitcher( - duration: const Duration(milliseconds: 300), - transitionBuilder: (child, animation, secondaryAnimation) { - return FadeThroughTransition( - animation: animation, - secondaryAnimation: secondaryAnimation, - child: child, - ); - }, - child: KeyedSubtree( - key: ValueKey(_currentIndex), - child: _screens[_currentIndex], - ), + body: IndexedStack( + index: _currentIndex, + children: _screens, ), bottomNavigationBar: SafeArea( child: Container( diff --git a/lib/screens/onboarding/face_enrollment_screen.dart b/lib/screens/onboarding/face_enrollment_screen.dart index ed8029b..8baa2c7 100644 --- a/lib/screens/onboarding/face_enrollment_screen.dart +++ b/lib/screens/onboarding/face_enrollment_screen.dart @@ -4,6 +4,7 @@ import 'package:camera/camera.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; +import '../../providers/auth_provider.dart'; import '../../providers/face_provider.dart'; import '../../providers/setup_check_provider.dart'; import '../../widgets/atoms/custom_button.dart'; @@ -59,7 +60,7 @@ class _FaceEnrollmentScreenState extends State _cameraController = CameraController( _frontCamera!, - ResolutionPreset.high, + ResolutionPreset.medium, enableAudio: false, imageFormatGroup: Platform.isAndroid ? ImageFormatGroup.nv21 @@ -74,9 +75,8 @@ class _FaceEnrollmentScreenState extends State if (!mounted) return; final provider = context.read(); var isIdle = provider.recordingState == VideoRecordingState.idle; - var isReady = provider.recordingState == VideoRecordingState.ready; var isRecording = provider.recordingState == VideoRecordingState.recording; - if (isIdle || isReady || isRecording) { + if (isIdle || isRecording) { provider.processCameraImage( image, _frontCamera!, @@ -97,6 +97,45 @@ class _FaceEnrollmentScreenState extends State _pulseController.dispose(); super.dispose(); } + void _showLogoutDialog() { + showDialog( + context: context, + builder: (ctx) => AlertDialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(AppTheme.radiusMd), + ), + title: Text("Ganti Akun?", style: AppTheme.heading3), + content: const Text( + "Anda akan keluar dari akun ini dan kembali ke halaman login.", + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(ctx), + child: Text( + "Batal", + style: AppTheme.labelLarge.copyWith(color: AppTheme.textSecondary), + ), + ), + TextButton( + onPressed: () { + Navigator.pop(ctx); + context.read().logout(); + Navigator.pushNamedAndRemoveUntil( + context, + '/login', + (route) => false, + ); + }, + child: Text( + "Keluar", + style: AppTheme.labelLarge.copyWith(color: AppTheme.statusRed), + ), + ), + ], + ), + ); + } + Future _handleStartRecording(FaceProvider provider) async { if (_cameraController == null || !_cameraController!.value.isInitialized) { @@ -104,7 +143,28 @@ class _FaceEnrollmentScreenState extends State } HapticFeedback.mediumImpact(); - await provider.startRecording(_cameraController!); + + // Matikan stream gambar sementara (aturan wajib Android camera plugin) + if (_cameraController!.value.isStreamingImages) { + await _cameraController!.stopImageStream(); + } + + // Beri waktu kamera settle (fix layar gelap di beberapa HP) + await Future.delayed(const Duration(milliseconds: 500)); + + // Mulai rekam video dan oper callback onAvailable + await provider.startRecording( + _cameraController!, + onAvailable: (CameraImage image) { + if (!mounted) return; + provider.processCameraImage( + image, + _frontCamera!, + CameraUtils.rotationIntToImageRotation( + _frontCamera!.sensorOrientation), + ); + }, + ); } @override @@ -115,6 +175,7 @@ class _FaceEnrollmentScreenState extends State appBar: AppBar( backgroundColor: Colors.transparent, elevation: 0, + automaticallyImplyLeading: false, leading: IconButton( icon: Container( padding: const EdgeInsets.all(8), @@ -122,15 +183,23 @@ class _FaceEnrollmentScreenState extends State color: Colors.black.withOpacity(0.5), shape: BoxShape.circle, ), - child: const Icon(Icons.arrow_back_ios_new, - color: Colors.white, size: 16), + child: Icon( + widget.isOnboarding ? Icons.logout : Icons.arrow_back_ios_new, + color: Colors.white, + size: 16, + ), ), - onPressed: () => Navigator.pop(context), + onPressed: () { + if (widget.isOnboarding) { + _showLogoutDialog(); + } else { + Navigator.pop(context); + } + }, ), ), body: Consumer( builder: (context, provider, child) { - // Refresh status dari server saat enrollment berhasil if (provider.recordingState == VideoRecordingState.success && !_successHandled) { _successHandled = true; WidgetsBinding.instance.addPostFrameCallback((_) { @@ -139,10 +208,25 @@ class _FaceEnrollmentScreenState extends State } }); } + + if (provider.recordingState == VideoRecordingState.recording) { + if (provider.needsAbort) { + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted && _cameraController != null) { + provider.abortRecording(_cameraController!); + } + }); + } else if (provider.isChecklistComplete) { + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted && _cameraController != null) { + provider.stopRecording(_cameraController!); + } + }); + } + } + final bool isIdle = provider.recordingState == VideoRecordingState.idle; - final bool isReady = - provider.recordingState == VideoRecordingState.ready; final bool isRecording = provider.recordingState == VideoRecordingState.recording; final bool isUploading = @@ -193,7 +277,7 @@ class _FaceEnrollmentScreenState extends State // --- REC indicator --- if (isRecording) Positioned( - top: MediaQuery.of(context).padding.top + kToolbarHeight + 10, + top: MediaQuery.of(context).padding.top + 16, right: 20, child: AnimatedBuilder( animation: _pulseAnimation, @@ -234,7 +318,7 @@ class _FaceEnrollmentScreenState extends State // --- Header + Quality Checklist --- Positioned( - top: MediaQuery.of(context).padding.top + kToolbarHeight + 20, + top: MediaQuery.of(context).padding.top + 16, left: 20, right: 70, child: Column( @@ -247,34 +331,47 @@ class _FaceEnrollmentScreenState extends State ), const SizedBox(height: 10), - // Quality checklist chips if (isIdle || isRecording) - Wrap( - spacing: 6, - runSpacing: 6, + Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - _buildQualityChip( - icon: Icons.straighten, - label: 'Jarak', - isOk: provider.isDistanceOk, - isDetected: provider.isFaceDetected, - ), - _buildQualityChip( - icon: Icons.wb_sunny_outlined, - label: 'Cahaya', - isOk: provider.isBrightnessOk, - isDetected: provider.isFaceDetected, - ), - _buildQualityChip( - icon: Icons.face, - label: provider.stepLabel, - isOk: provider.isPoseValid, - isDetected: provider.isFaceDetected, + Wrap( + spacing: 6, + runSpacing: 6, + children: [ + _buildQualityChip( + icon: Icons.straighten, + label: _getDistanceLabel(provider), + isOk: provider.isDistanceOk, + isDetected: provider.isFaceDetected, + ), + _buildQualityChip( + icon: Icons.wb_sunny_outlined, + label: 'Cahaya', + isOk: provider.isBrightnessOk, + isDetected: provider.isFaceDetected, + ), + _buildQualityChip( + icon: Icons.blur_on, + label: 'Bayangan', + isOk: provider.isLightingUniform, + isDetected: provider.isFaceDetected, + ), + _buildQualityChip( + icon: Icons.face, + label: 'Hadap Depan', + isOk: provider.isPoseValid, + isDetected: provider.isFaceDetected, + ), + ], ), + if (provider.isFaceDetected) ...[ + const SizedBox(height: 10), + _buildDistanceIndicator(provider), + ], ], ), - // Status banner for uploading/success/error if (!isIdle && !isRecording) AnimatedSwitcher( duration: const Duration(milliseconds: 250), @@ -329,69 +426,6 @@ class _FaceEnrollmentScreenState extends State ), ), - // --- Instruksi di tengah saat recording --- - if (isRecording) - Center( - child: AnimatedSwitcher( - duration: const Duration(milliseconds: 300), - transitionBuilder: (child, animation) { - return FadeTransition( - opacity: animation, - child: SlideTransition( - position: Tween( - begin: const Offset(0, 0.2), - end: Offset.zero, - ).animate(animation), - child: child, - ), - ); - }, - child: Column( - key: ValueKey(provider.currentStep), - mainAxisSize: MainAxisSize.min, - children: [ - Icon( - _getStepIcon(provider.currentStep), - size: 60, - color: provider.allChecksValid - ? Colors.white - : Colors.white.withOpacity(0.4), - ), - const SizedBox(height: 8), - Text( - provider.stepLabel, - style: TextStyle( - fontSize: 28, - fontWeight: FontWeight.w900, - color: provider.allChecksValid - ? Colors.white - : Colors.white.withOpacity(0.4), - ), - ), - if (!provider.allChecksValid && - provider.qualityMessage.isNotEmpty) - Padding( - padding: const EdgeInsets.only(top: 8), - child: Container( - padding: const EdgeInsets.symmetric( - horizontal: 16, vertical: 8), - decoration: BoxDecoration( - color: Colors.black.withOpacity(0.5), - borderRadius: BorderRadius.circular(20), - ), - child: Text( - provider.qualityMessage, - style: AppTheme.bodySmall.copyWith( - color: AppTheme.statusYellow, - fontWeight: FontWeight.w600, - ), - ), - ), - ), - ], - ), - ), - ), // --- Panel Bawah --- Positioned( @@ -400,9 +434,7 @@ class _FaceEnrollmentScreenState extends State right: 20, child: Column( children: [ - // Step indicator + progress (saat recording) if (isRecording) ...[ - _buildStepIndicator(provider), const SizedBox(height: 16), ClipRRect( borderRadius: BorderRadius.circular(24), @@ -417,6 +449,14 @@ class _FaceEnrollmentScreenState extends State ), child: Column( children: [ + Text( + provider.qualityMessage, + style: AppTheme.heading3.copyWith( + color: AppTheme.primaryOrange, + ), + textAlign: TextAlign.center, + ), + const SizedBox(height: 16), ClipRRect( borderRadius: BorderRadius.circular(8), child: LinearProgressIndicator( @@ -432,16 +472,16 @@ class _FaceEnrollmentScreenState extends State ), ), const SizedBox(height: 10), - Text( - provider.allChecksValid - ? 'Merekam...' - : 'Menunggu — ${provider.qualityMessage}', - style: AppTheme.bodySmall.copyWith( - color: provider.allChecksValid - ? Colors.white70 - : AppTheme.statusYellow, - ), - textAlign: TextAlign.center, + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Progres Pose (${(provider.stepProgress * 100).toInt()}%)', + style: AppTheme.bodySmall.copyWith( + color: Colors.white70, + ), + ), + ], ), ], ), @@ -482,8 +522,8 @@ class _FaceEnrollmentScreenState extends State ), ), - // Idle state — tombol mulai rekam (hanya muncul/aktif saat ready) - if (isIdle || isReady) + // Idle state — tombol rekam + if (isIdle) Column( children: [ if (provider.qualityMessage.isNotEmpty) @@ -492,20 +532,75 @@ class _FaceEnrollmentScreenState extends State child: Text( provider.qualityMessage, style: AppTheme.bodySmall.copyWith( - color: provider.isFaceDetected || isReady + color: provider.isFaceDetected ? AppTheme.statusYellow : Colors.white70, ), textAlign: TextAlign.center, ), ), + + // --- Kartu Informasi UX --- + Container( + margin: const EdgeInsets.only(bottom: 12), + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.05), + borderRadius: BorderRadius.circular(8), + border: Border.all(color: Colors.white.withOpacity(0.1)), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + const Icon(Icons.tips_and_updates_outlined, color: AppTheme.primaryOrange, size: 14), + const SizedBox(width: 6), + Text( + "Syarat Akurasi Maksimal", + style: AppTheme.bodySmall.copyWith( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 11, + ), + ), + ], + ), + const SizedBox(height: 6), + Row( + children: [ + Expanded( + child: Row( + children: [ + const Icon(Icons.face_retouching_off, color: Colors.white70, size: 12), + const SizedBox(width: 4), + Expanded(child: Text("Lepas kacamata/masker", style: AppTheme.bodySmall.copyWith(color: Colors.white70, fontSize: 10))), + ], + ), + ), + Expanded( + child: Row( + children: [ + const Icon(Icons.wb_sunny_outlined, color: Colors.white70, size: 12), + const SizedBox(width: 4), + Expanded(child: Text("Hadap cahaya terang", style: AppTheme.bodySmall.copyWith(color: Colors.white70, fontSize: 10))), + ], + ), + ), + ], + ), + ], + ), + ), CustomButton( - text: isReady ? "Mulai Rekam Dataset" : "Selesaikan Tes Anti-Palsu", + text: provider.allChecksValid + ? "Mulai Rekam Wajah" + : "Penuhi Syarat di Atas", icon: Icons.videocam, - backgroundColor: isReady + backgroundColor: provider.allChecksValid ? AppTheme.statusGreen : AppTheme.primaryDark.withOpacity(0.5), - onPressed: isReady + onPressed: provider.allChecksValid ? () => _handleStartRecording(provider) : null, ), @@ -602,100 +697,6 @@ class _FaceEnrollmentScreenState extends State ); } - Widget _buildStepIndicator(FaceProvider provider) { - final steps = [ - (EnrollmentStep.front, 'Depan'), - (EnrollmentStep.right, 'Kanan'), - (EnrollmentStep.left, 'Kiri'), - ]; - - final currentIndex = EnrollmentStep.values.indexOf(provider.currentStep); - - return ClipRRect( - borderRadius: BorderRadius.circular(20), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 8, sigmaY: 8), - child: Container( - padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 12), - decoration: BoxDecoration( - color: Colors.white.withOpacity(0.1), - borderRadius: BorderRadius.circular(20), - ), - child: Row( - children: List.generate(steps.length * 2 - 1, (index) { - if (index.isOdd) { - final lineIndex = index ~/ 2; - final isCompleted = lineIndex < currentIndex; - return Expanded( - child: Container( - height: 3, - margin: const EdgeInsets.symmetric(horizontal: 4), - decoration: BoxDecoration( - color: isCompleted - ? AppTheme.statusGreen - : Colors.white.withOpacity(0.2), - borderRadius: BorderRadius.circular(2), - ), - ), - ); - } - - final stepIndex = index ~/ 2; - final step = steps[stepIndex]; - final isCompleted = stepIndex < currentIndex; - final isCurrent = stepIndex == currentIndex; - - return Column( - mainAxisSize: MainAxisSize.min, - children: [ - Container( - width: isCurrent ? 28 : 22, - height: isCurrent ? 28 : 22, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: isCompleted - ? AppTheme.statusGreen - : isCurrent - ? AppTheme.primaryOrange - : Colors.white.withOpacity(0.2), - border: isCurrent - ? Border.all(color: Colors.white, width: 2) - : null, - ), - child: Center( - child: isCompleted - ? const Icon(Icons.check, color: Colors.white, size: 14) - : Text( - '${stepIndex + 1}', - style: TextStyle( - color: Colors.white, - fontSize: isCurrent ? 13 : 11, - fontWeight: FontWeight.bold, - ), - ), - ), - ), - const SizedBox(height: 4), - Text( - step.$2, - style: TextStyle( - color: isCurrent - ? Colors.white - : Colors.white.withOpacity(0.5), - fontSize: 10, - fontWeight: - isCurrent ? FontWeight.bold : FontWeight.normal, - ), - ), - ], - ); - }), - ), - ), - ), - ); - } - Widget _buildQualityChip({ required IconData icon, required String label, @@ -737,17 +738,6 @@ class _FaceEnrollmentScreenState extends State ); } - IconData _getStepIcon(EnrollmentStep step) { - switch (step) { - case EnrollmentStep.front: - return Icons.face; - case EnrollmentStep.right: - return Icons.turn_right; - case EnrollmentStep.left: - return Icons.turn_left; - } - } - void _restartCameraStream() { if (_cameraController == null || !_cameraController!.value.isInitialized) return; @@ -768,10 +758,116 @@ class _FaceEnrollmentScreenState extends State } catch (_) {} } + String _getDistanceLabel(FaceProvider provider) { + if (!provider.isFaceDetected) return 'Jarak'; + if (provider.faceRatio < 0.25) return 'Terlalu Jauh'; + if (provider.faceRatio > 0.75) return 'Terlalu Dekat'; + return 'Jarak ✓'; + } + + Widget _buildDistanceIndicator(FaceProvider provider) { + final double ratio = provider.faceRatio.clamp(0.0, 1.0); + const double minIdeal = 0.25; + const double maxIdeal = 0.75; + + final bool inRange = ratio >= minIdeal && ratio <= maxIdeal; + final Color barColor = inRange ? AppTheme.statusGreen : AppTheme.statusYellow; + + final double normalizedPosition = ratio.clamp(0.1, 0.8) / 0.8; + + return ClipRRect( + borderRadius: BorderRadius.circular(12), + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 6, sigmaY: 6), + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 8), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.08), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: Colors.white.withOpacity(0.12)), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Text( + '📏 Jauh', + style: TextStyle(color: Colors.white54, fontSize: 9), + ), + const Spacer(), + Text( + 'Dekat 📷', + style: TextStyle(color: Colors.white54, fontSize: 9), + ), + ], + ), + const SizedBox(height: 4), + SizedBox( + height: 14, + child: LayoutBuilder( + builder: (context, constraints) { + final totalWidth = constraints.maxWidth; + final idealLeft = totalWidth * (minIdeal / 0.8); + final idealRight = totalWidth * (maxIdeal / 0.8); + final indicatorPos = totalWidth * normalizedPosition; + + return Stack( + clipBehavior: Clip.none, + children: [ + Container( + height: 6, + margin: const EdgeInsets.only(top: 4), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.15), + borderRadius: BorderRadius.circular(3), + ), + ), + Positioned( + left: idealLeft, + top: 4, + child: Container( + width: idealRight - idealLeft, + height: 6, + decoration: BoxDecoration( + color: AppTheme.statusGreen.withOpacity(0.35), + borderRadius: BorderRadius.circular(3), + ), + ), + ), + Positioned( + left: (indicatorPos - 5).clamp(0, totalWidth - 10), + top: 0, + child: Container( + width: 10, + height: 14, + decoration: BoxDecoration( + color: barColor, + borderRadius: BorderRadius.circular(3), + boxShadow: [ + BoxShadow( + color: barColor.withOpacity(0.5), + blurRadius: 6, + ), + ], + ), + ), + ), + ], + ); + }, + ), + ), + ], + ), + ), + ), + ); + } + String _getStatusText(FaceProvider provider) { switch (provider.recordingState) { case VideoRecordingState.idle: - case VideoRecordingState.ready: return ''; case VideoRecordingState.recording: return ''; @@ -788,8 +884,6 @@ class _FaceEnrollmentScreenState extends State switch (provider.recordingState) { case VideoRecordingState.idle: return Icons.face; - case VideoRecordingState.ready: - return Icons.check_circle_outline; case VideoRecordingState.recording: return Icons.videocam; case VideoRecordingState.uploading: @@ -805,12 +899,10 @@ class _FaceEnrollmentScreenState extends State switch (provider.recordingState) { case VideoRecordingState.idle: return Colors.white; - case VideoRecordingState.ready: - return AppTheme.statusGreen; case VideoRecordingState.recording: return Colors.white; case VideoRecordingState.uploading: - return AppTheme.primaryOrange; + return Colors.white; case VideoRecordingState.success: return AppTheme.statusGreen; case VideoRecordingState.error: diff --git a/lib/screens/pengajuan/forms/cuti_form_screen.dart b/lib/screens/pengajuan/forms/cuti_form_screen.dart index 314b15a..06bb6f6 100644 --- a/lib/screens/pengajuan/forms/cuti_form_screen.dart +++ b/lib/screens/pengajuan/forms/cuti_form_screen.dart @@ -59,6 +59,8 @@ class _CutiFormScreenState extends State { if (success && mounted) { Navigator.pop(context); ErrorHandler.showSuccess('Pengajuan Cuti Berhasil'); + } else if (mounted) { + ErrorHandler.showError('Pengajuan gagal. Periksa kembali form atau ukuran file (maksimal 10MB)'); } } diff --git a/lib/screens/pengajuan/forms/izin_form_screen.dart b/lib/screens/pengajuan/forms/izin_form_screen.dart index b26aead..7399a81 100644 --- a/lib/screens/pengajuan/forms/izin_form_screen.dart +++ b/lib/screens/pengajuan/forms/izin_form_screen.dart @@ -51,16 +51,22 @@ class _IzinFormScreenState extends State { return; } - final success = await context.read().submitIzin({ - 'tanggal_mulai': DateFormat('yyyy-MM-dd').format(_selectedDate!), - 'tanggal_selesai': DateFormat('yyyy-MM-dd').format(_selectedDate!), - 'alasan': _reasonController.text, - 'bukti_file': _uploadedFilePath, - }); + try { + final success = await context.read().submitIzin({ + 'tanggal_mulai': DateFormat('yyyy-MM-dd').format(_selectedDate!), + 'tanggal_selesai': DateFormat('yyyy-MM-dd').format(_selectedDate!), + 'alasan': _reasonController.text, + 'bukti_file': _uploadedFilePath, + }); - if (success && mounted) { - Navigator.pop(context); - ErrorHandler.showSuccess('Pengajuan Izin Berhasil'); + if (success && mounted) { + Navigator.pop(context); + ErrorHandler.showSuccess('Pengajuan Izin Berhasil'); + } + } catch (e) { + if (mounted) { + ErrorHandler.showError(e.toString().replaceAll('Exception: ', '')); + } } } diff --git a/lib/screens/pengajuan/forms/lembur_form_screen.dart b/lib/screens/pengajuan/forms/lembur_form_screen.dart index 5a0c393..2c904f4 100644 --- a/lib/screens/pengajuan/forms/lembur_form_screen.dart +++ b/lib/screens/pengajuan/forms/lembur_form_screen.dart @@ -95,7 +95,9 @@ class _LemburFormScreenState extends State { if (success && mounted) { Navigator.pop(context); - ErrorHandler.showSuccess('Pengajuan Lembur Berhasil Disimpan'); + ErrorHandler.showSuccess('Pengajuan Lembur Berhasil'); + } else if (mounted) { + ErrorHandler.showError('Pengajuan gagal. Pastikan form sudah terisi dengan benar'); } } } diff --git a/lib/screens/pengajuan/forms/sakit_form_screen.dart b/lib/screens/pengajuan/forms/sakit_form_screen.dart index 796f8e6..21a9672 100644 --- a/lib/screens/pengajuan/forms/sakit_form_screen.dart +++ b/lib/screens/pengajuan/forms/sakit_form_screen.dart @@ -69,6 +69,8 @@ class _SakitFormScreenState extends State { if (success && mounted) { Navigator.pop(context); ErrorHandler.showSuccess('Pengajuan Sakit Berhasil'); + } else if (mounted) { + ErrorHandler.showError('Pengajuan gagal. Periksa kembali form atau ukuran file (maksimal 10MB)'); } } diff --git a/lib/screens/presensi/camera_capture_screen.dart b/lib/screens/presensi/camera_capture_screen.dart index e6b9ebd..1c1b8b8 100644 --- a/lib/screens/presensi/camera_capture_screen.dart +++ b/lib/screens/presensi/camera_capture_screen.dart @@ -16,10 +16,10 @@ class CameraCaptureScreen extends StatefulWidget { State createState() => _CameraCaptureScreenState(); } -class _CameraCaptureScreenState extends State { +class _CameraCaptureScreenState extends State + with SingleTickerProviderStateMixin { CameraController? _controller; CameraDescription? _frontCamera; - XFile? _capturedImage; bool _isCameraInitialized = false; bool _isProcessingFrame = false; @@ -30,22 +30,40 @@ class _CameraCaptureScreenState extends State { double _faceRatio = 0.0; double _brightness = 0.0; + // State rekam video + bool _isRecording = false; + bool _isRecordingDone = false; + XFile? _recordedVideo; + XFile? _capturedPhoto; + + // Countdown + int _countdown = 1; + int _recordingSecondsLeft = 1; + late FaceDetector _faceDetector; + late AnimationController _pulseController; bool get _allChecksValid => _isFaceDetected && _isDistanceOk && _isBrightnessOk; String get _qualityMessage { + if (_isRecordingDone) return 'Video berhasil direkam ✓'; + if (_isRecording) return 'Tetap hadap kamera... ($_recordingSecondsLeft detik)'; if (!_isFaceDetected) return 'Arahkan wajah ke dalam bingkai'; if (_faceRatio < 0.20) return 'Terlalu jauh, dekatkan wajah'; if (_faceRatio > 0.70) return 'Terlalu dekat, mundur sedikit'; if (!_isBrightnessOk) return 'Pencahayaan kurang terang'; - return 'Siap — ambil foto'; + return 'Siap — tekan tombol untuk merekam'; } @override void initState() { super.initState(); + _pulseController = AnimationController( + vsync: this, + duration: const Duration(milliseconds: 800), + )..repeat(reverse: true); + _faceDetector = FaceDetector( options: FaceDetectorOptions( enableClassification: false, @@ -79,7 +97,7 @@ class _CameraCaptureScreenState extends State { if (!mounted) return; _controller!.startImageStream((CameraImage image) { - if (!mounted || _capturedImage != null) return; + if (!mounted || _isRecording || _isRecordingDone) return; _processFrame(image); }); @@ -125,52 +143,85 @@ class _CameraCaptureScreenState extends State { } } - @override - void dispose() { - _controller?.dispose(); - _faceDetector.close(); - super.dispose(); - } + Future _startRecording() async { + if (!_allChecksValid || _isRecording) return; - Future _takePicture() async { - if (!_allChecksValid) return; try { - try { - await _controller!.stopImageStream(); - } catch (_) {} + await _controller!.stopImageStream(); + } catch (_) {} - final image = await _controller!.takePicture(); - HapticFeedback.lightImpact(); - if (!mounted) return; - - setState(() { - _capturedImage = image; - }); + XFile? photo; + try { + photo = await _controller!.takePicture(); } catch (e) { - debugPrint("Error taking picture: $e"); + debugPrint("Gagal mengambil foto: $e"); } + + setState(() { + _isRecording = true; + _recordingSecondsLeft = 1; + }); + + HapticFeedback.mediumImpact(); + + await _controller!.prepareForVideoRecording(); + await _controller!.startVideoRecording(); + + // Countdown 1 detik + for (int i = 1; i >= 1; i--) { + if (!mounted) return; + setState(() => _recordingSecondsLeft = i); + await Future.delayed(const Duration(seconds: 1)); + } + + if (!mounted) return; + + final video = await _controller!.stopVideoRecording(); + + HapticFeedback.heavyImpact(); + + setState(() { + _isRecording = false; + _isRecordingDone = true; + _recordedVideo = video; + _capturedPhoto = photo; + }); } - void _retakePicture() { + void _retake() { setState(() { - _capturedImage = null; + _isRecording = false; + _isRecordingDone = false; + _recordedVideo = null; + _capturedPhoto = null; _isFaceDetected = false; _isDistanceOk = false; _isBrightnessOk = false; }); _controller!.startImageStream((CameraImage image) { - if (!mounted || _capturedImage != null) return; + if (!mounted || _isRecording || _isRecordingDone) return; _processFrame(image); }); } - void _usePicture() { - if (_capturedImage != null) { - Navigator.pop(context, File(_capturedImage!.path)); + void _useVideo() { + if (_recordedVideo != null) { + Navigator.pop(context, { + 'video': File(_recordedVideo!.path), + 'photo': _capturedPhoto != null ? File(_capturedPhoto!.path) : null, + }); } } + @override + void dispose() { + _pulseController.dispose(); + _controller?.dispose(); + _faceDetector.close(); + super.dispose(); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -193,6 +244,7 @@ class _CameraCaptureScreenState extends State { ), body: Stack( children: [ + // Preview kamera if (_isCameraInitialized) SizedBox.expand( child: FittedBox( @@ -207,28 +259,70 @@ class _CameraCaptureScreenState extends State { ), ) else - const Center( - child: CircularProgressIndicator(color: Colors.white)), + const Center(child: CircularProgressIndicator(color: Colors.white)), - if (_capturedImage != null) - SizedBox.expand( - child: Image.file( - File(_capturedImage!.path), - fit: BoxFit.cover, + // Overlay sambil recording: REC badge + countdown besar + if (_isRecording) + Positioned.fill( + child: Container( + color: Colors.black.withOpacity(0.15), + child: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox(height: 80), + AnimatedBuilder( + animation: _pulseController, + builder: (context, child) => Container( + padding: const EdgeInsets.symmetric( + horizontal: 16, vertical: 8), + decoration: BoxDecoration( + color: Colors.red.withOpacity( + 0.7 + 0.3 * _pulseController.value), + borderRadius: BorderRadius.circular(8), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 10, + height: 10, + decoration: const BoxDecoration( + color: Colors.white, + shape: BoxShape.circle, + ), + ), + const SizedBox(width: 8), + const Text('REC', + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 14)), + ], + ), + ), + ), + ], + ), + ), ), ), + // Scanner overlay ScannerOverlay( - borderColor: _capturedImage != null + borderColor: _isRecordingDone ? AppTheme.statusGreen - : _allChecksValid - ? AppTheme.statusGreen - : _isFaceDetected - ? AppTheme.statusYellow - : AppTheme.primaryBlue, - isScanning: _capturedImage == null, + : _isRecording + ? Colors.red + : _allChecksValid + ? AppTheme.statusGreen + : _isFaceDetected + ? AppTheme.statusYellow + : AppTheme.primaryBlue, + isScanning: !_isRecordingDone, ), + // Header info Positioned( top: MediaQuery.of(context).padding.top + kToolbarHeight + 20, left: 20, @@ -236,7 +330,11 @@ class _CameraCaptureScreenState extends State { child: Column( children: [ Text( - "Ambil Foto Selfie", + _isRecording + ? 'Merekam Video...' + : _isRecordingDone + ? 'Video Siap' + : 'Rekam Video Wajah', style: AppTheme.heading3.copyWith(color: Colors.white), ), const SizedBox(height: 10), @@ -250,20 +348,20 @@ class _CameraCaptureScreenState extends State { decoration: BoxDecoration( color: Colors.white.withOpacity(0.15), borderRadius: BorderRadius.circular(20), - border: Border.all( - color: Colors.white.withOpacity(0.3)), + border: + Border.all(color: Colors.white.withOpacity(0.3)), ), child: Text( - _capturedImage != null - ? "Foto berhasil diambil ✓" - : _qualityMessage, + _qualityMessage, textAlign: TextAlign.center, style: AppTheme.bodyLarge.copyWith( - color: _capturedImage != null + color: _isRecordingDone ? AppTheme.statusGreen - : _allChecksValid - ? AppTheme.statusGreen - : Colors.white, + : _isRecording + ? Colors.red.shade200 + : _allChecksValid + ? AppTheme.statusGreen + : Colors.white, fontWeight: FontWeight.bold, ), ), @@ -271,8 +369,8 @@ class _CameraCaptureScreenState extends State { ), ), - // Quality chips (saat belum capture) - if (_capturedImage == null) ...[ + // Quality chips (sebelum rekam) + if (!_isRecording && !_isRecordingDone) ...[ const SizedBox(height: 10), Row( mainAxisAlignment: MainAxisAlignment.center, @@ -286,23 +384,48 @@ class _CameraCaptureScreenState extends State { ], ), ], + + // Countdown bundar besar saat merekam + if (_isRecording) ...[ + const SizedBox(height: 20), + Container( + width: 72, + height: 72, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all(color: Colors.red, width: 3), + color: Colors.black.withOpacity(0.4), + ), + child: Center( + child: Text( + '$_recordingSecondsLeft', + style: const TextStyle( + color: Colors.white, + fontSize: 36, + fontWeight: FontWeight.bold, + ), + ), + ), + ), + ], ], ), ), + // Tombol bawah Positioned( bottom: 40, left: 20, right: 20, - child: _capturedImage != null + child: _isRecordingDone ? Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Expanded( child: CustomButton( - text: "Foto Ulang", + text: "Rekam Ulang", type: ButtonType.secondary, - onPressed: _retakePicture, + onPressed: _retake, icon: Icons.refresh, ), ), @@ -311,51 +434,49 @@ class _CameraCaptureScreenState extends State { child: CustomButton( text: "Gunakan", type: ButtonType.primary, - onPressed: _usePicture, + onPressed: _useVideo, icon: Icons.check, backgroundColor: AppTheme.statusGreen, ), ), ], ) - : Center( - child: GestureDetector( - onTap: _allChecksValid ? _takePicture : null, - child: Container( - width: 76, - height: 76, - decoration: BoxDecoration( - shape: BoxShape.circle, - border: Border.all( - color: _allChecksValid - ? Colors.white.withOpacity(0.8) - : Colors.white.withOpacity(0.3), - width: 6, - ), - color: _allChecksValid - ? Colors.white.withOpacity(0.2) - : Colors.white.withOpacity(0.05), - boxShadow: _allChecksValid - ? [ - BoxShadow( - color: Colors.black.withOpacity(0.2), - blurRadius: 10, - ) - ] - : null, - ), - child: Container( - margin: const EdgeInsets.all(6), - decoration: BoxDecoration( - shape: BoxShape.circle, - color: _allChecksValid - ? Colors.white - : Colors.white.withOpacity(0.3), + : _isRecording + ? const SizedBox.shrink() + : Center( + child: GestureDetector( + onTap: _allChecksValid ? _startRecording : null, + child: Container( + width: 76, + height: 76, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: _allChecksValid + ? Colors.white.withOpacity(0.8) + : Colors.white.withOpacity(0.3), + width: 6, + ), + color: _allChecksValid + ? Colors.red.withOpacity(0.8) + : Colors.white.withOpacity(0.05), + boxShadow: _allChecksValid + ? [ + BoxShadow( + color: Colors.red.withOpacity(0.4), + blurRadius: 16, + ) + ] + : null, + ), + child: const Icon( + Icons.videocam, + color: Colors.white, + size: 30, + ), ), ), ), - ), - ), ), ], ), diff --git a/lib/screens/presensi/presensi_map_screen.dart b/lib/screens/presensi/presensi_map_screen.dart index d8bafda..9033809 100644 --- a/lib/screens/presensi/presensi_map_screen.dart +++ b/lib/screens/presensi/presensi_map_screen.dart @@ -875,27 +875,44 @@ class _PresensiMapScreenState extends State { } Future _startFaceRecognitionFlow(BuildContext context) async { - final File? photoResult = await Navigator.push( + final Map? captureResult = await Navigator.push( context, MaterialPageRoute( builder: (context) => const CameraCaptureScreen(), ), ); - if (photoResult == null || !mounted) return; + if (captureResult == null || !mounted) return; + + final File? videoFile = captureResult['video']; + final File? photoFile = captureResult['photo']; + + if (videoFile == null || photoFile == null) { + _showErrorSnackBar("Gagal mengambil data kamera."); + return; + } setState(() { _isProcessing = true; - _processingStatus = "Memverifikasi wajah..."; + _processingStatus = "Memproses video wajah..."; }); try { - final faceResult = await FaceRepository().verifyFace(photoResult); + final faceResult = await FaceRepository().verifyFace(videoFile); final bool isVerified = faceResult['verified'] == true; - final double? confidence = (faceResult['confidence'] is num) + + // Mode video: gunakan approved_ratio (lebih representatif dari SVM proba) + // Mode foto: fallback ke confidence biasa + final double? approvedRatio = (faceResult['approved_ratio'] is num) + ? (faceResult['approved_ratio'] as num).toDouble() + : null; + final double? rawConf = (faceResult['confidence'] is num) ? (faceResult['confidence'] as num).toDouble() : null; + final double? confidence = approvedRatio ?? rawConf; + final int? framesTotal = (faceResult['frames_total'] as num?)?.toInt(); + final int? framesApproved = (faceResult['frames_approved'] as num?)?.toInt(); if (!isVerified) { if (!mounted) return; @@ -905,6 +922,8 @@ class _PresensiMapScreenState extends State { _showFaceFailedDialog( confidence: confidence, + framesTotal: framesTotal, + framesApproved: framesApproved, message: faceResult['message']?.toString() ?? "Wajah tidak cocok.", ); return; @@ -915,7 +934,7 @@ class _PresensiMapScreenState extends State { }); final provider = context.read(); - final success = await provider.submitPresensi(widget.type, photoResult); + final success = await provider.submitPresensi(widget.type, photoFile); if (!mounted) return; @@ -948,7 +967,12 @@ class _PresensiMapScreenState extends State { } } - void _showFaceFailedDialog({double? confidence, required String message}) { + void _showFaceFailedDialog({ + double? confidence, + int? framesTotal, + int? framesApproved, + required String message, + }) { showDialog( context: context, builder: (ctx) => AlertDialog( @@ -965,7 +989,13 @@ class _PresensiMapScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(message, style: AppTheme.bodyMedium), - if (confidence != null && confidence < 1.0) ...[ + if (framesTotal != null) ...[ + const SizedBox(height: 12), + Text( + "Frame Cocok: $framesApproved/$framesTotal", + style: AppTheme.bodySmall.copyWith(color: AppTheme.textSecondary), + ), + ] else if (confidence != null && confidence < 1.0) ...[ const SizedBox(height: 12), Text( "Confidence: ${(confidence * 100).toStringAsFixed(1)}%", diff --git a/lib/screens/presensi/presensi_screen.dart b/lib/screens/presensi/presensi_screen.dart index 547f569..7ab94c2 100644 --- a/lib/screens/presensi/presensi_screen.dart +++ b/lib/screens/presensi/presensi_screen.dart @@ -101,8 +101,8 @@ class _PresensiScreenState extends State { ), body: RefreshIndicator( onRefresh: () async { - await homeProvider.fetchDashboardData(); - await attendanceProvider.fetchHistory(); + await homeProvider.fetchDashboardData(force: true); + await attendanceProvider.fetchHistory(force: true); }, child: SingleChildScrollView( padding: const EdgeInsets.all(AppTheme.spacingMd), @@ -508,8 +508,8 @@ class _PresensiScreenState extends State { if (!mounted) return; if (result != null && result['success'] == true) { - await context.read().fetchDashboardData(); - await context.read().fetchHistory(); + await context.read().fetchDashboardData(force: true); + await context.read().fetchHistory(force: true); _showResultDialog(true, "Absensi Berhasil!", result['message'] ?? "Data absensi Anda telah tercatat."); } } diff --git a/lib/screens/profile/face_test_screen.dart b/lib/screens/profile/face_test_screen.dart index 014f8b4..75a8196 100644 --- a/lib/screens/profile/face_test_screen.dart +++ b/lib/screens/profile/face_test_screen.dart @@ -34,16 +34,24 @@ class _FaceTestScreenState extends State { bool? _verified; double? _confidence; - double? _svmConfidence; + double? _svmDf; + int? _framesTotal; + int? _framesApproved; String? _statusText; String? _errorMessage; + String? _predictedName; late FaceDetector _faceDetector; bool get _allChecksValid => _isFaceDetected && _isDistanceOk && _isBrightnessOk; + // State recording + bool _isRecording = false; + int _recordingSecondsLeft = 1; + String get _qualityMessage { + if (_isRecording) return 'Tetap hadap kamera... ($_recordingSecondsLeft detik)'; if (!_isFaceDetected) return 'Arahkan wajah ke dalam bingkai'; if (_faceRatio < 0.20) return 'Terlalu jauh, dekatkan wajah'; if (_faceRatio > 0.70) return 'Terlalu dekat, mundur sedikit'; @@ -147,39 +155,62 @@ class _FaceTestScreenState extends State { } } - Future _captureAndVerify() async { + Future _recordAndVerify() async { if (_cameraController == null || _isVerifying || !_allChecksValid) return; setState(() { - _isVerifying = true; + _isRecording = true; + _recordingSecondsLeft = 1; _showResult = false; _errorMessage = null; }); try { - try { - await _cameraController!.stopImageStream(); - } catch (_) {} + await _cameraController!.stopImageStream(); + } catch (_) {} - final XFile photo = await _cameraController!.takePicture(); - final File imageFile = File(photo.path); + try { + await _cameraController!.prepareForVideoRecording(); + await _cameraController!.startVideoRecording(); - final result = - await FaceRepository().verifyFace(imageFile, tipe: 'test'); + for (int i = 1; i >= 1; i--) { + if (!mounted) return; + setState(() => _recordingSecondsLeft = i); + await Future.delayed(const Duration(seconds: 1)); + } + + if (!mounted) return; + final XFile video = await _cameraController!.stopVideoRecording(); + final File videoFile = File(video.path); + + setState(() { + _isRecording = false; + _isVerifying = true; + }); + + final result = await FaceRepository().verifyFace(videoFile, tipe: 'test'); if (mounted) { setState(() { _verified = result['verified'] == true; - _confidence = (result['confidence'] is num) + + final approvedRatio = (result['approved_ratio'] is num) + ? (result['approved_ratio'] as num).toDouble() + : null; + final rawConf = (result['confidence'] is num) ? (result['confidence'] as num).toDouble() : null; - _svmConfidence = (result['svm_confidence'] is num) - ? (result['svm_confidence'] as num).toDouble() + _confidence = approvedRatio ?? rawConf; + _svmDf = (result['svm_df'] is num) + ? (result['svm_df'] as num).toDouble() : null; - _statusText = result['verification_status']?.toString() ?? + _framesTotal = (result['frames_total'] as num?)?.toInt(); + _framesApproved = (result['frames_approved'] as num?)?.toInt(); + _statusText = result['verification_status']?.toString() ?? result['status']?.toString(); - _showResult = true; - _isVerifying = false; + _predictedName = result['predicted_name']?.toString(); + _showResult = true; + _isVerifying = false; }); if (_verified == true) { @@ -192,6 +223,7 @@ class _FaceTestScreenState extends State { if (mounted) { setState(() { _verified = false; + _isRecording = false; _errorMessage = e.toString().replaceAll('Exception: ', ''); _showResult = true; _isVerifying = false; @@ -203,14 +235,18 @@ class _FaceTestScreenState extends State { void _resetTest() { setState(() { - _showResult = false; - _verified = null; - _confidence = null; - _svmConfidence = null; - _statusText = null; - _errorMessage = null; + _showResult = false; + _verified = null; + _confidence = null; + _svmDf = null; + _framesTotal = null; + _framesApproved = null; + _statusText = null; + _errorMessage = null; + _predictedName = null; + _isRecording = false; _isFaceDetected = false; - _isDistanceOk = false; + _isDistanceOk = false; _isBrightnessOk = false; }); @@ -414,36 +450,58 @@ class _FaceTestScreenState extends State { ), child: Column( children: [ - Text( - "Confidence: ${(_confidence! * 100).toStringAsFixed(1)}%", - style: AppTheme.bodyMedium.copyWith( - color: AppTheme.textSecondary, - fontWeight: FontWeight.w600, - ), - ), - const SizedBox(height: 2), - Text( - _confidence! >= 0.75 - ? "Sangat cocok (≥ 75%)" - : _confidence! >= 0.55 - ? "Meragukan (55-74%)" - : "Tidak cocok (< 55%)", - style: AppTheme.bodySmall.copyWith( - color: _confidence! >= 0.75 - ? AppTheme.statusGreen - : _confidence! >= 0.55 - ? AppTheme.statusYellow - : AppTheme.statusRed, - ), - ), - if (_svmConfidence != null) ...[ - const SizedBox(height: 8), - const Divider(), - const SizedBox(height: 8), + // Mode video: tampilkan frame ratio + if (_framesTotal != null) ...[ Text( - "SVM Conf: ${(_svmConfidence! * 100).toStringAsFixed(1)}%", - style: - AppTheme.labelMedium.copyWith( + "Frame Cocok: $_framesApproved/$_framesTotal", + style: AppTheme.bodyMedium.copyWith( + color: AppTheme.textSecondary, + fontWeight: FontWeight.w600, + ), + ), + const SizedBox(height: 4), + // Progress bar frames + ClipRRect( + borderRadius: BorderRadius.circular(4), + child: LinearProgressIndicator( + value: _confidence ?? 0, + backgroundColor: AppTheme.statusRed.withValues(alpha: 0.2), + valueColor: AlwaysStoppedAnimation( + (_confidence ?? 0) >= 0.8 + ? AppTheme.statusGreen + : (_confidence ?? 0) >= 0.5 + ? AppTheme.statusYellow + : AppTheme.statusRed, + ), + minHeight: 8, + ), + ), + const SizedBox(height: 4), + Text( + "${((_confidence ?? 0) * 100).toStringAsFixed(0)}% frame terverifikasi", + style: AppTheme.bodySmall.copyWith( + color: (_confidence ?? 0) >= 0.8 + ? AppTheme.statusGreen + : (_confidence ?? 0) >= 0.5 + ? AppTheme.statusYellow + : AppTheme.statusRed, + ), + ), + ] else ...[ + // Mode foto: tampilkan SVM confidence biasa + Text( + "Confidence: ${(_confidence! * 100).toStringAsFixed(1)}%", + style: AppTheme.bodyMedium.copyWith( + color: AppTheme.textSecondary, + fontWeight: FontWeight.w600, + ), + ), + ], + if (_svmDf != null) ...[ + const SizedBox(height: 4), + Text( + "SVM Decision Function: ${_svmDf!.toStringAsFixed(3)}", + style: AppTheme.bodySmall.copyWith( color: AppTheme.textSecondary, fontFamily: 'monospace', ), @@ -452,6 +510,65 @@ class _FaceTestScreenState extends State { ], ), ), + + // Prediksi ML + if (_predictedName != null) + Container( + margin: const EdgeInsets.only(top: 12), + padding: const EdgeInsets.symmetric( + horizontal: 16, vertical: 12), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + const Color(0xFF6366F1).withOpacity(0.08), + const Color(0xFF8B5CF6).withOpacity(0.08), + ], + ), + borderRadius: BorderRadius.circular(AppTheme.radiusMd), + border: Border.all( + color: const Color(0xFF6366F1).withOpacity(0.25), + ), + ), + child: Row( + children: [ + Container( + padding: const EdgeInsets.all(6), + decoration: BoxDecoration( + color: const Color(0xFF6366F1).withOpacity(0.15), + shape: BoxShape.circle, + ), + child: const Icon( + Icons.psychology_rounded, + color: Color(0xFF6366F1), + size: 16, + ), + ), + const SizedBox(width: 10), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Prediksi ML', + style: AppTheme.labelMedium.copyWith( + color: const Color(0xFF6366F1), + fontWeight: FontWeight.w600, + ), + ), + Text( + _predictedName!, + style: AppTheme.bodyMedium.copyWith( + color: AppTheme.textPrimary, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + ], + ), + ), + if (_statusText != null) Padding( padding: const EdgeInsets.only(top: 12), @@ -459,8 +576,7 @@ class _FaceTestScreenState extends State { padding: const EdgeInsets.symmetric( horizontal: 14, vertical: 6), decoration: BoxDecoration( - color: - AppTheme.primaryBlue.withOpacity(0.1), + color: AppTheme.primaryBlue.withOpacity(0.1), borderRadius: BorderRadius.circular( AppTheme.radiusFull), ), @@ -497,22 +613,40 @@ class _FaceTestScreenState extends State { right: 20, child: Column( children: [ - if (!_showResult && !_isVerifying) + if (!_showResult && !_isVerifying && !_isRecording) SizedBox( width: double.infinity, child: CustomButton( - text: "Mulai Verifikasi", - icon: Icons.face_rounded, + text: "Mulai Rekam & Verifikasi", + icon: Icons.videocam_rounded, onPressed: _allChecksValid && _isCameraInitialized - ? _captureAndVerify + ? _recordAndVerify : null, backgroundColor: _allChecksValid ? AppTheme.primaryBlue : AppTheme.primaryDark.withOpacity(0.5), ), ), - if (_isVerifying) - const CircularProgressIndicator(color: Colors.white), + if (_isRecording) + Column( + children: [ + const SizedBox(height: 8), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 20, vertical: 10), + decoration: BoxDecoration( + color: Colors.red.withOpacity(0.8), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + 'Merekam... $_recordingSecondsLeft detik', + style: const TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold), + ), + ), + ], + ), if (_showResult) Row( children: [ diff --git a/lib/screens/profile/profile_screen.dart b/lib/screens/profile/profile_screen.dart index ae4963a..b860658 100644 --- a/lib/screens/profile/profile_screen.dart +++ b/lib/screens/profile/profile_screen.dart @@ -356,11 +356,7 @@ class _ProfileScreenState extends State { label: "Tanda Tangan Digital", onTap: () => Navigator.pushNamed(context, '/profile/signature'), ), - _buildActionItem( - icon: Icons.settings_ethernet, - label: "Pengaturan Server", - onTap: () => Navigator.pushNamed(context, '/settings/api'), - ), + _buildActionItem( icon: Icons.logout, label: "Keluar", diff --git a/lib/services/api_client.dart b/lib/services/api_client.dart index 3d9a447..aa7c626 100644 --- a/lib/services/api_client.dart +++ b/lib/services/api_client.dart @@ -18,6 +18,7 @@ class ApiClient { dio.interceptors.add(InterceptorsWrapper( onRequest: (options, handler) async { + options.baseUrl = ApiUrl.baseUrl; final token = CacheManager.authBox.get('auth_token'); if (token != null && token.isNotEmpty) { options.headers['Authorization'] = 'Bearer $token'; @@ -25,6 +26,22 @@ class ApiClient { return handler.next(options); }, onResponse: (response, handler) { + // Deteksi response HTML (redirect ke login page — token expired) + final contentType = response.headers.value('content-type') ?? ''; + final isHtml = contentType.contains('text/html') || + (response.data is String && + (response.data as String).trimLeft().startsWith(' firebaseMessagingBackgroundHandler(RemoteMessage message) async {} +Future firebaseMessagingBackgroundHandler(RemoteMessage message) async { + // Jika message sudah punya notification payload, + // FCM otomatis menampilkan system notification. + // Kita TIDAK perlu tampilkan lagi via local notification (mencegah dobel). + if (message.notification != null) return; + + // Hanya tampilkan manual untuk data-only messages + final title = message.data['title'] ?? ''; + final body = message.data['body'] ?? ''; + if (title.isEmpty) return; + + final plugin = FlutterLocalNotificationsPlugin(); + + await plugin.initialize( + settings: const InitializationSettings( + android: AndroidInitializationSettings('@mipmap/ic_launcher'), + ), + ); + + await plugin.show( + id: message.hashCode, + title: title, + body: body, + notificationDetails: const NotificationDetails( + android: AndroidNotificationDetails( + 'hris_channel', + 'HRIS Notifications', + importance: Importance.max, + priority: Priority.high, + icon: '@mipmap/ic_launcher', + ), + ), + ); +} class FcmService { static final FcmService _instance = FcmService._internal(); @@ -22,6 +55,9 @@ class FcmService { bool _initialized = false; Future initialize(BuildContext context) async { + // Selalu refresh token FCM ke server setiap initialize (tidak diblokir _initialized) + await _refreshAndSaveToken(); + if (_initialized) return; _initialized = true; @@ -38,10 +74,23 @@ class FcmService { onDidReceiveNotificationResponse: _onNotificationTap, ); - if (settings.authorizationStatus == AuthorizationStatus.denied) return; + const AndroidNotificationChannel channel = AndroidNotificationChannel( + 'hris_channel', + 'HRIS Notifications', + description: 'Notifikasi untuk sistem HRIS MP', + importance: Importance.max, + ); - final token = await _messaging.getToken(); - if (token != null) await _repository.saveDeviceToken(token); + final androidImplementation = _localNotifications + .resolvePlatformSpecificImplementation< + AndroidFlutterLocalNotificationsPlugin>(); + + await androidImplementation?.createNotificationChannel(channel); + + // Explicitly request notification permission for Android 13+ + await androidImplementation?.requestNotificationsPermission(); + + if (settings.authorizationStatus == AuthorizationStatus.denied) return; _messaging.onTokenRefresh.listen((t) => _repository.saveDeviceToken(t)); @@ -78,6 +127,19 @@ class FcmService { } } + /// Selalu ambil FCM token terbaru dan simpan ke server. + /// Dipanggil setiap kali initialize() agar token tidak kadaluarsa. + Future _refreshAndSaveToken() async { + try { + final token = await _messaging.getToken(); + if (token != null) { + await _repository.saveDeviceToken(token); + } + } catch (_) { + // Abaikan error saat refresh token (misal: tidak ada koneksi) + } + } + IconData _iconForTipe(String? tipe) { if (tipe == null) return Icons.notifications_outlined; if (tipe.contains('disetujui')) return Icons.check_circle_rounded; diff --git a/lib/services/websocket_service.dart b/lib/services/websocket_service.dart new file mode 100644 index 0000000..24f69ca --- /dev/null +++ b/lib/services/websocket_service.dart @@ -0,0 +1,162 @@ +import 'dart:async'; +import 'dart:convert'; +import 'package:flutter/foundation.dart'; +import 'package:web_socket_channel/web_socket_channel.dart'; +import '../core/cache_manager.dart'; +import '../core/constants/api_url.dart'; + +class WebSocketService extends ChangeNotifier { + static final WebSocketService _instance = WebSocketService._internal(); + factory WebSocketService() => _instance; + WebSocketService._internal(); + + WebSocketChannel? _channel; + Timer? _reconnectTimer; + bool _isConnected = false; + bool _disposed = false; + + final _eventController = StreamController>.broadcast(); + Stream> get eventStream => _eventController.stream; + + bool get isConnected => _isConnected; + + Future connect() async { + if (_isConnected || _disposed) return; + + try { + final baseUrl = ApiUrl.baseUrl; + final token = CacheManager.authBox.get('auth_token') ?? ''; + + final wsUrl = _buildWsUrl(baseUrl); + if (wsUrl == null) return; + + final uri = Uri.parse('$wsUrl/app/mpg-hris-key'); + + _channel = WebSocketChannel.connect(uri); + await _channel!.ready; + + _isConnected = true; + _reconnectTimer?.cancel(); + notifyListeners(); + + debugPrint('[WS] Terhubung ke $uri'); + + _channel!.stream.listen( + (message) => _handleMessage(message, token), + onDone: () { + debugPrint('[WS] Koneksi terputus'); + _isConnected = false; + notifyListeners(); + _scheduleReconnect(); + }, + onError: (error) { + debugPrint('[WS] Error: $error'); + _isConnected = false; + notifyListeners(); + _scheduleReconnect(); + }, + ); + + _subscribeToChannels(token); + } catch (e) { + debugPrint('[WS] Gagal connect: $e'); + _isConnected = false; + _scheduleReconnect(); + } + } + + String? _buildWsUrl(String apiBaseUrl) { + try { + final uri = Uri.parse(apiBaseUrl); + final scheme = uri.scheme == 'https' ? 'wss' : 'ws'; + + if (uri.host.contains('trycloudflare.com')) { + return '$scheme://${uri.host}'; + } + + return '$scheme://${uri.host}:8080'; + } catch (e) { + debugPrint('[WS] URL invalid: $e'); + return null; + } + } + + void _subscribeToChannels(String token) { + final userId = CacheManager.authBox.get('user_id'); + if (userId == null) return; + + _sendSubscribe('private-user.$userId', token); + _sendSubscribe('pengumuman', null); + } + + void _sendSubscribe(String channel, String? token) { + final data = { + 'event': 'pusher:subscribe', + 'data': { + 'channel': channel, + if (token != null) 'auth': token, + }, + }; + _channel?.sink.add(jsonEncode(data)); + debugPrint('[WS] Subscribe: $channel'); + } + + void _handleMessage(dynamic rawMessage, String token) { + try { + final message = jsonDecode(rawMessage as String) as Map; + final event = message['event'] as String?; + + if (event == 'pusher:connection_established') { + debugPrint('[WS] Connection established'); + _subscribeToChannels(token); + return; + } + + if (event == 'pusher_internal:subscription_succeeded') { + debugPrint('[WS] Subscription berhasil: ${message['channel']}'); + return; + } + + if (event != null && !event.startsWith('pusher')) { + final dataRaw = message['data']; + final data = dataRaw is String ? jsonDecode(dataRaw) : dataRaw; + + _eventController.add({ + 'event': event, + 'channel': message['channel'], + 'data': data, + }); + + debugPrint('[WS] Event diterima: $event'); + } + } catch (e) { + debugPrint('[WS] Parse error: $e'); + } + } + + void _scheduleReconnect() { + _reconnectTimer?.cancel(); + if (_disposed) return; + _reconnectTimer = Timer(const Duration(seconds: 5), () { + debugPrint('[WS] Reconnecting...'); + connect(); + }); + } + + void disconnect() { + _reconnectTimer?.cancel(); + _channel?.sink.close(); + _channel = null; + _isConnected = false; + notifyListeners(); + debugPrint('[WS] Disconnected'); + } + + @override + void dispose() { + _disposed = true; + disconnect(); + _eventController.close(); + super.dispose(); + } +} diff --git a/lib/widgets/molecules/pengumuman_card.dart b/lib/widgets/molecules/pengumuman_card.dart index 3894f04..862f2e1 100644 --- a/lib/widgets/molecules/pengumuman_card.dart +++ b/lib/widgets/molecules/pengumuman_card.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import '../../core/theme.dart'; import '../../models/announcement_model.dart'; import '../../screens/home/pengumuman_detail_screen.dart'; -import '../atoms/custom_avatar.dart'; class PengumumanCard extends StatelessWidget { final AnnouncementModel pengumuman; @@ -17,16 +16,29 @@ class PengumumanCard extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - width: 280, + width: 300, margin: const EdgeInsets.only(right: AppTheme.spacingMd), decoration: BoxDecoration( - color: AppTheme.bgWhite, - borderRadius: BorderRadius.circular(AppTheme.radiusLg), - boxShadow: AppTheme.shadowMd, + gradient: const LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + Color(0xFF1E293B), + Color(0xFF334155), + ], + ), + borderRadius: BorderRadius.circular(AppTheme.radiusXl), + boxShadow: [ + BoxShadow( + color: const Color(0xFF1E293B).withValues(alpha: 0.3), + blurRadius: 12, + offset: const Offset(0, 6), + ), + ], ), child: Material( color: Colors.transparent, - borderRadius: BorderRadius.circular(AppTheme.radiusLg), + borderRadius: BorderRadius.circular(AppTheme.radiusXl), child: InkWell( onTap: onTap ?? () { Navigator.push( @@ -36,38 +48,101 @@ class PengumumanCard extends StatelessWidget { ), ); }, - borderRadius: BorderRadius.circular(AppTheme.radiusLg), + borderRadius: BorderRadius.circular(AppTheme.radiusXl), child: Padding( - padding: const EdgeInsets.all(AppTheme.spacingMd), - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - CustomAvatar( - name: pengumuman.namaPembuat, - imageUrl: pengumuman.avatarUrl, - size: 40, - backgroundColor: AppTheme.primaryOrange.withOpacity(0.1), - ), - const SizedBox(width: AppTheme.spacingMd), - Expanded( + padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(pengumuman.title, style: AppTheme.labelLarge), - Text(pengumuman.jabatan, style: AppTheme.bodySmall), - const SizedBox(height: 8), + Row( + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppTheme.primaryOrange.withValues(alpha: 0.2), + borderRadius: BorderRadius.circular(10), + ), + child: const Icon( + Icons.campaign_rounded, + color: AppTheme.primaryOrange, + size: 18, + ), + ), + const SizedBox(width: 10), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + pengumuman.title, + style: AppTheme.labelLarge.copyWith( + color: Colors.white, + fontSize: 14, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 2), + Text( + pengumuman.namaPembuat, + style: AppTheme.bodySmall.copyWith( + color: Colors.white60, + fontSize: 11, + ), + ), + ], + ), + ), + ], + ), + const SizedBox(height: 10), Text( pengumuman.description, - style: AppTheme.bodyMedium.copyWith(color: AppTheme.textSecondary), + style: AppTheme.bodySmall.copyWith( + color: Colors.white70, + height: 1.4, + ), maxLines: 2, overflow: TextOverflow.ellipsis, ), + const Spacer(), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + pengumuman.date, + style: AppTheme.bodySmall.copyWith( + color: Colors.white38, + fontSize: 10, + ), + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3), + decoration: BoxDecoration( + color: AppTheme.primaryOrange.withValues(alpha: 0.2), + borderRadius: BorderRadius.circular(AppTheme.radiusFull), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + "Baca", + style: AppTheme.bodySmall.copyWith( + color: AppTheme.primaryOrange, + fontWeight: FontWeight.w600, + fontSize: 10, + ), + ), + const SizedBox(width: 2), + const Icon(Icons.arrow_forward_ios, color: AppTheme.primaryOrange, size: 9), + ], + ), + ), + ], + ), ], ), ), - ], - ), - ), ), ), ); diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 85a2413..3ccd551 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -8,6 +8,7 @@ #include #include +#include void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = @@ -16,4 +17,7 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin"); flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar); + g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); + url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 62e3ed5..9ce94c4 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -5,6 +5,7 @@ list(APPEND FLUTTER_PLUGIN_LIST file_selector_linux flutter_secure_storage_linux + url_launcher_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 207b65d..e48ef67 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -17,6 +17,7 @@ import package_info_plus import path_provider_foundation import shared_preferences_foundation import sqflite_darwin +import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) @@ -31,4 +32,5 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index 594e989..6fdfce7 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -612,18 +612,18 @@ packages: dependency: transitive description: name: google_mlkit_commons - sha256: "046586b381cdd139f7f6a05ad6998f7e339d061bd70158249907358394b5f496" + sha256: "7e9a6d6e66b44aa8cfe944bda9bc3346c52486dd890ca49e5bc98845cda40d7f" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.9.0" google_mlkit_face_detection: dependency: "direct main" description: name: google_mlkit_face_detection - sha256: a6ccff7d6ca8dfc2ab845ea7481645342e82aed31a81edd075169a3abbb25ed3 + sha256: "65988405c884fd84a4ccc8bded7b5e3e4c33362f6f4eaaa94818bdaaba7bab7d" url: "https://pub.dev" source: hosted - version: "0.9.0" + version: "0.12.0" gsettings: dependency: transitive description: @@ -1285,6 +1285,70 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 + url: "https://pub.dev" + source: hosted + version: "6.3.2" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: "3bb000251e55d4a209aa0e2e563309dc9bb2befea2295fd0cec1f51760aac572" + url: "https://pub.dev" + source: hosted + version: "6.3.29" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: cfde38aa257dae62ffe79c87fab20165dfdf6988c1d31b58ebf59b9106062aad + url: "https://pub.dev" + source: hosted + version: "6.3.6" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a + url: "https://pub.dev" + source: hosted + version: "3.2.2" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18" + url: "https://pub.dev" + source: hosted + version: "3.2.5" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f" + url: "https://pub.dev" + source: hosted + version: "3.1.5" uuid: dependency: transitive description: @@ -1341,6 +1405,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: "direct main" + description: + name: web_socket_channel + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 + url: "https://pub.dev" + source: hosted + version: "3.0.3" win32: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 85ac22e..fc2abe1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -56,7 +56,7 @@ dependencies: hive_flutter: ^1.1.0 path_provider: ^2.1.5 file_picker: ^8.1.4 - google_mlkit_face_detection: ^0.9.0 + google_mlkit_face_detection: ^0.12.0 image: ^4.0.17 http: ^1.6.0 hand_signature: ^3.0.2 @@ -67,6 +67,8 @@ dependencies: firebase_messaging: ^15.1.3 flutter_local_notifications: ^20.1.0 timezone: ^0.10.0 + url_launcher: ^6.3.1 + web_socket_channel: ^3.0.3 dev_dependencies: flutter_test: @@ -124,7 +126,7 @@ flutter: flutter_launcher_icons: android: "ic_launcher" ios: true - image_path: "assets/images/logo.png" + image_path: "assets/images/icon.png" min_sdk_android: 21 adaptive_icon_background: "#FFFFFF" - adaptive_icon_foreground: "assets/images/logo.png" + adaptive_icon_foreground: "assets/images/icon.png" diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 41dfcd2..d9d0deb 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -11,6 +11,7 @@ #include #include #include +#include void RegisterPlugins(flutter::PluginRegistry* registry) { FileSelectorWindowsRegisterWithRegistrar( @@ -23,4 +24,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("GeolocatorWindows")); PermissionHandlerWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); + UrlLauncherWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherWindows")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 9f724e6..5df6264 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -8,6 +8,7 @@ list(APPEND FLUTTER_PLUGIN_LIST flutter_secure_storage_windows geolocator_windows permission_handler_windows + url_launcher_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST