w9j6em3UeJq}wmaM-#oOE0AP zm{jerL4716G=YP^Ej=;)hu(nNNx6hHD5?;-FruRrD6pgKv?7XnTtUA!xI-@UG#zds z(T{YAQy|-9Gn25_ga~M-j<#_+B0qS_Kh_Pu=iXwlKo*c8FweEAnkue$mQ0Wuo}>og z9mJgM`)ZVgg_Aq77B6tG2RtjN^v2`zsan1jyNV;h6=QOj8bW(ibxnpTypITpe7LlZ zCe(u7Z2-z)TS8j90LkHyuc>-oz}qQubuNPK&lKFZuUg>C0Ls%C;6ITDO&fWd{RMI@ zW!i-Vtm?knsp?2KXQ$*^tNir%)&%W;J>}I?Oiq9LZb^yc`;wL4N_+2xBVTIBZ4pB2 zXSWDdCGupJ+}`?u|GqY!p}WNFax;Eg18EoO6CKG}M#-2lwqDDspUOKr;{D$+v#qj` z(km|YyuG{B@g{PzO?8S}<4DL?xx$KUT3!+i38^coA<>`wcfDw4!x3qBb`$Bu1hG48 zTf3b@u{PMbw6Wsa6^q6ZJG7ue_{~i=iX56eCJIPB3!kW= zUtPlat#Hd5a44K^7FMZvvd|UQRvWFyt%|mVb8{3MGDzRi7FdUm`mC>#p(zK}^XX{= zk@6P0saOn;VDRJ(NZKf0$(_j=y7z8%P{U=R0{8#6T@IK=TBqI%b=-(NRqMI=?C>xj z{{}8pDaz<{0P_9#*K^@9qi$@u+wKr9t+g(x>}>PoSgmTjIn61Eqb;yHdD^af+I0x$ z_oF9D7U&60FoladRsb+0!_{}C8IL}@6a^vl?E(y6UhOue*=*&W-+iIapeA}b6_ZW= zkXhmA=%}H~cN%3;W_1+IwscG$q1qxQoT9H`c~fF3?$5xSgQHnBo{m@bp{H4|*lZ%G z<5gcXu-5SXa4-+p>7l+9pyd{+aJqtKl5u#FrI?D!$DY=kobJXZNOL&bD3+EsR8{ul z0*ObE76om3zJj-3qdP#Whec e8OVLb- z4$dNZ8kKKVijCHk*T`P0tV!l8;qcq5sTaHnE5**WNDdF*7e)h$Rb11XHbX}irWHFn z&K6hmR#!W8xZAMhpXyoSZB>!e7GSL#bov#S$#av5#$hN3V<}+j7HK7)H-aN7l>`v! zLB?*XKIbP=VG>R=&jbMU$VEqrs 8!;r}JzPvF(3kW)n zg h_e2Sd-j}fhx--{-(0D$yE4!qdvyN$(_vDb&=5VJqC9Xj}p z#lx}@oRD+(MXpeL764%XlFwd@xI6A1_#J88DqR$Bn@sr_h`gMvVvr%4pka`fH*QN9 zylXeP@T GC26HLiVft_tItK5`>$gM zxa>sioy}+OSt-V7RuQa6+=IYQaw50;R6PxF(K3K63(*dvNdU!9q^;#OO&F(QgF!%5 zaxWSpt>n>0kq?SH=CMe5I47$U=cAVGkm<<*&p9fjbldgT|G>cn@_Nd+K=cRxCdm}3 z@BM>_Ai_a%ZbO@d9ZenaufT-GSl|TJ#??~X*YWJ^{Rb=i5Jo95Th6S$+rnpNgwMdp z*cirT7@3@S|J8D=&9i45e{TY=?*)&vSBz6a2aa`+0*ail_`CLkrV1~<|Cm8TcF>q@ zR9f&Lm~@>;o(P3ugjZo_1Rgk7j*m~*iRHeE|KAf_r-%K?_O#E@`Y4*}?d=CLp{?ep z`%C*nP5v8WBe?aA4Llmsd7I`2*@NTIfV|ENVa2n>eA}XsbKEKBtjj}Z1B>{*fEU3p z30Lg9Png7adQ4T~fD$1l8yF&4Q|b|QB{Gb=Kl6J>Mgp+OTU?vg=E=gedBDvF;$p6B z?9K6VDxFgTGF2qex0QM>c^@vpE`F@gp>!PA#+3I1;^}z OV4$~I)@Pw1(HpZx&nP|ha`ZZvS$h^UI22^N(bX+HiKt(89t(wL6gk$a`tmvN}Em>)r=x+`Rt=SRDE`Tx dO_n;Yq1v!hK9- zWAEQa+F1ooR(J=z-MVPu#J)ohPej*r`X%RsEuRQA9+j}hK}x*F*IGVVlFFM|ULUFD zKaV0tEC&CS^qRCn{_cu1(Uy#9tZ$Vr_ofDarTLm2^^NIO*105)#;3&XYS=u_fI#Nr zcCnH9Ey%{n4lZR|!9)6eJv$H*2C KZO!qx$@n>&jfx^Gl3Glk zlGOV!)|#` fuvII=Rl-h#M~Al6R-GCWjg>;6)_xDxw0O#qk?eyUb^hl4 z4J7SDM!FlKJC iwgjO(z(zY(o;2@I3|#-g zp2gSYKDRoHA8QymX>2)$$nV=&x Jf)6| zOq)|Nt1eV^u0;t+!fs0YO~@{(lpxpvS3P)>;q&w0=dL6V6SZq@b$Tfq68KFI3H9aN z{^6W9srKBweHMfo>L{VJb=1byCCo07pO+T2!R+)`IyJNO81` _WH-xj_T{UXDpWSA6ImFkCps=FE$k-c# zdGvXfdnX!?Fd2y$8As`1qdTaPdS X z)1@s6BA06de;>Y8IObVoJkfBG^ue1uZxz~+LK78PlTg` KSQIF2_$#U2f$nB(TQB2!4#>9{_WieQabUZPq zXPtg>!ue4f)L)y=k>>6*6cFeB_l|#o#AeGlwmoh~AYd=x<6x7AcUhpR$^7QOlGCq8 zo6Uq+)uJHN<*-V_$P?C^24pS7b!|yVt5|~-ML;w4&ag*cS}+_X>U@DSbL34ovB1BU z{r56nVZJC7K@CnPjomz|B}>j~=(fv6T%?i4nfHwgz%hte)1>M|&R7fjVHD7;T|xr4 zWWmcU1NpQZ)ifcW#bDMYLI&-#bAzN{fF4k0W@#H7R&!~u)8~{%H}=W4%`xUJW2hty z*<<|h@f~r;0mrE`m){gQ=`9j=Ng`*@mlb>-gbCWkZA)^AX!is#+JIIyc r3%43kA198wkg3+S;A$OdM?kU`y+ZZF@2rf0)U}ny+$IS*2VEBCTfMh|t?Yx}d z3lbM&-#H{zvQ=OG&^O>{N_1Xx$kWu_9q^lVBXXwA=-~5N@dk|4?W>y3!|q!PZ6D9l zW1cfw4^FW0D<&)b_plLEGA3gw{X1dM$>G`ON4)$dtlPmSJbv}PrANLt6LFfkV KiNEk(kUz1tiCrbwLce?s@BAc?1q7rCzh4zm&gmM=4-4^$fZcA||EJhTN2iOTDb# z7oTB}CfkY*?%2or``};0mS8{AbeQ>%5@Tc^MEq$VM%)QrdvVVuJeptbKNhPi+dgL= zu4f3KR$EUW5LjE&V5E9TA?EN(#(UZ8MuC1>#qos!QXY(Jcc&|=Y<#B<0zHOys=Ub1 zqhvRv8>z@v{LyV7nLlyF#(e8;+DaJu(g(%}ER*aJl2Tbj1)nb-Jql`j7=XnG{dsU} z+DvO#&2oc<%RF)2`M+Rz-Tr&QXBp&wjoqHLluZFAgV2u$Rkv*G(W;3wju( K) z2%=O{lKVyToN>%E?pJi6<-vt}txzycNIjpo>AGrj;3!6t=?j0Yr!LKD$azat }JCx<;RXsYe!sdZ8Fnc=nWj#!eSEzJ~1@47% +RU-QL{$yQ z4U&u-%u*M#azQ*{q)$zZFzr-#1?`7uoG rggVG( 4V9=bp*C1jaW| zbvQKNOrosO!}Ynrv+i+4U+VJNlgdfhv26I^8vF4OogyrRg>SW#Ay0lSw{fSdM5rgw zcB!so)8OOS+lm1`>mZ${nmuX{VO>bfe#>NCy&?I@3wAtb_hay<^9+R`8Zu*g{$QM1 zPq4f7hwzogD*Pxtk4F0{(d0zTJDnaZnv{xc3o3u(rCla-nFkn07bR ;zlXfJ1D)MEv0&BwxC5uLFU3X+a(`|IrSWr zq3kz~-*MTRtU%M0j6Xq{6_8d+955?YDK!tbMimZoFc$kO=zFqD59{9n@-L*_)v=o& z`rH~`4et3JSlt@=^SEmTk<6KXqQz$~Jdqik*15SJ|Mo3V$~Y+%szo2{-r>L)UJyHg zdRh?GUovi#s8gfNpmcn$7Zd2tC)M0kS#R;6#NV{3r35QPA>_YnQ|vy%#tYu4xS#$| z**KfOFFCUn^; gZu%gkl@=;v)NVlP&MvQqujQ>o~ z<+iiF=1z6SX!p@Koy OJM|;18)+A49>pj-ym&tR=AU@B+>1DQc_0p>TzrPL08%M7z$3jizm8Ckt@_6nLKf zn;sr1dGCokf_|R=18q3E=vZY>IlctW9u@h(5WlQ7T&lSEPowSN_3NBJS4}b7zxHl9 z?anq=rK^McDJp)Q=6Yx}(&fR~bCYdI>w!ROZ_9#k7CejeaYr5Pj@ k|ed<~RYpQLv9pQI?SFO8W<#;XeId?{cS6H$M0c+N4lv ztIML3>1bKGO2!flaqIPYrtrM(L2tEEi4&*SwqW>K%G_dG$jWCxU|}Kl8+DFSFJkha z_}H5+#I_Dkuz_RecOKvVM!cU!jK+x3WJwkv Dqj1y=(ATJ)$x8rpCyRI;%qR4Y4{fC|VuYCsH>u$!ML(C4Nkty%o=H zXMN#?ja8e&bnKYkUVUgh;Q_O2w?FqXDnseOn+X-BteuIq_CzrG)f+k9Q-1Qqk(j|i z_m4ne8Tn!Rh8?PA@xfo4+$aCFrHnq#FMQ>T$H)hLe%SR$c(L~nZiaH!GmoRWH5NQF zLjf*8llSJVSXWiALbf2mPC5Dc2!gSYHYy2XqI^y+01+>0r=pz8&E;elXvL2@mU+FH zA(=OjUcaI%(C2(nJSH#>dn)f& 8CX~Y3xT_^^#6=>5=d1)?s44+7T=dbtq;aYuV#JC0qe>C%S zA9uceRCgamr=sJ^ncVSOB3UDgnVT1c%qp>YuDSn|zrOv@I;b~(Kkv7-)qz0JR~~q0 zf@Z)MtjyExs?v*WNr=)#XP|d0E$6v^$i$p=e@=#YTAE`R@y|r0ue4oj8cBO@WE? z>D TJkLKruZ#$Y}aGkvRpvG zzdkQ&xD2y8C 9d9i%=k&qg@ePk^1z2nzNRfeHtISB%G(Z(K|DE=s~J*`{jqN|#C&^GgV zm6WKykwp^hC0W--(nOamLs- ZB&%Qw0WbX;5$1x=IB^(?D3F- zBA_tz*F0hU>3)#!qjQ5}w^d2ZdXENtdM!5Wd{yrj0I$Z=67A8f Z<=JSHxj6WdBw(?j_4{UI@{>f+l)^J6MvjaX`T@TeG W5agNUv~;9g6KT}`CmM0 zCS ?j|KREJ>D&HoGYC&n1RufXPHIKx|*CUl(lCPCEnWzbwCoY;w%ngnX zGY<|wUw3SK_OeQD$P1YJD=wLikr?8>ep+BSAxwN}P-r-$8m~-Agyx(+xdg`}gH`z+ zF-LU~feG?SJ}=w2r|x}kat()C%WXG^AYl88-;{Sy)Jr4>iIaQQWL&vzR;C3Z^FRJD sDPk*&R ;M1& literal 0 HcmV?d00001 diff --git a/cta/play-store.png b/cta/play-store.png deleted file mode 100644 index 9bd58ae0c132e7fc2884c240bafd5bbc79f2d70b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5924 zcmZ{ocQD-1*YLk~R~IGPl4#MQZb7gjN^~0$y=T=By#@&uAuBd|SuI3aorLJbiq)dG z2q8_ENLC9W;_;hj=AC)xd7eMcIrp4%KlhxOJ9F>MNia6jy}-cB006)ReLXD`006 @>{&rUL0VdxySux- zzP_ZSBqt~5`N;wT0_RkIe!jfCd_+XVlP6DZ+_+(CYRbUCaE=QK3aYEC`}z5?va({a zSPTXOhr^AHjcGX +tXp zhr=-lvdU)YUy$VV^z^K)t!-;-J2*J_{rfkGMB3ck3=a?A-{0p@6ZrDw3xz@v@{rHY z&K9wEUR_=7=;%PYw4$EX@9gZLg5PV#?W?A>jE;^fl^PAzv-_BWP-RB%TiH)KA&X@Y zH5io&(Wo{CEC8iaEjNmE0I@OwKVCr`bU|vBMqNqZf)KEJrO|B_s-*j%l$4aBqN33p z@XMDkCnhGYSD3+ssT7EIZ7&tk(VKmthVO1$Z{1X&_zQ3N2)#sJRfaN*slfC(*%sB1 z!B;M&OA4_-z$$DPtavzzWkvbuXbqz`yA`GMu^adJxF3u0OJ88n!*1weH?*VHb##LB zPLwszuZJPX#K;sFIR2f2`ZZtw@3!Rnc@Us-GStR6}3lxm#UzEENYRNg|DTy z3uBZ3ir&XQkW5|D)HOHStz_n(z8&Zy?f1L^t|8^59}oxixP@fgd=|bunmZ+)`Gtc7 zzx^+DW~L)pk*1KE+xokA-tLcPLafz?i&PU5H27ioat&S^Lo`!vy=R9=(JE_hk_L(N zS60tZ*97zXwLSAh+QxGZ=tin~E-D{rtlxIRW@#Uak+6*5shK+fjZ3k@xw>*LBL9b! zmQnYI k+?(6bP4K!RHACA&n8HlpgPIw6_|E{vgeYJMn)xE_YaiN+Cez ^ S6-ghQWvqW@dB0t^>H~SvBEba4lU?h6enwJDwH@b88cY6?xHCekZ*YV*YQYD3gh&(DDx$J#eZN9*&x;{x~Sy8Kd0A((*h<9(WH!_WB- z5(AQ1=kHe<19p*PfO0SF z+cyB7@36r7ecv!p>KD)c8`=@wQeAftG^m@KaMH$hJXqlRG7`~@=(6UfCi%6$7Mgyg z+=dKU6lRh&eB%WW1mAofVz#7lS& Dt+yba0 ?)ur?s_)DF7qZ zlc%!%0(I$3`TRYQ^Rzc7{8G6k_GEz`1zw^oQkJ3TK`Rg%8OCCcO+l z=rC})Caa)!c _bZD;D=c~1E$$Q zfo^LD- c zICo94*5>JR_Me7Z2p+4Y^hTa9wKWW+4fbjB{pf8ad!O}^-gm@lR19B2^i5ya43T#i zAMiz<2P0zsg`9tDk|Zc= $0n2gDN8e9Gp&@+ohaU?1QkejkB@YTpGb3VPTyi!yoTD@2pbg`xicK zNEG{Lk&L---2@UABVx0yer57GeN5LNOux28wuHNyiq8>-*@sw4H`ji%(;k3?uMi2` zGq6mFj%k*@r(9G#_bdpJmDQrRuMv*F1qFV8=1C)V8_xwRne6BnZ7F|YcltZZtdtEi z@$pOIl#C4gIwH4|z&_3MSn>iY{?BY35li1YDp=?f7VVfYx#lX5%uVwzcT5$NdDuNl z#U39iyL1tJliis#ym2emq$4k`lMHj}Aj{LEbw(@zG2#Bl*^_!vR4QNEOa6V>n>0fg zo_5;LwcNqbA#6cVG@b`m(h@Z6C1;23$PlIPkF_gkE_I8h2VYwX0H W50xmn>~@bJy(%SMZ>nIV(OsNJtu`!IBAeTab6F`orcX8p%1|9 z!($FycQfmh6(A#&1GT@C8QH0y9{D~&!qP ZWdOp6wT zO0KZ~L0KzQ$75gNp3%>2@|xTvb)KzzMj>c)stvb1DGjXm8KArU_}TN69Esd%Cnv5` z&a{+LSx;?YN=h-Ryqi+TqX0s`O++AmZDt5DNHz6do`u3!3MBOA@VS6nf1(7!7y4RL z$vrCgPGdzAc-cn*LkDvscb2e+>1L%|e@5P}LSSlSXqfsE*$^mOy1`)utG}%%K!*hy z&kc5}+sYu-_bfM^`U`k$Nk}Pgln#j%sHeW$4%e52b^C~d#Wv6`*~TVVRt``sKY~Ak z<>~WR_$`|FW$iq|;cLyFp&D~*mi~jy;J6+wQ0#YYvj%tRHa ;1YzO0>2s1CQK_4D?QE7!Vkyss9Wn``d&% M zKsq;AOS-5VY?56VOWXrqglUNADGUY+E q#lN^0m*;#lc~7i3H3K%t5z z#P{HS;-Z*J;aHZM^R7wI2hUd&^HiftGqm^^ZVALM0-v@y6_nUTe6_?g%}lKkUAIeR za4q2||Kf24ONo9yeo06a6#vvFx&O^H-#wnh>v!KGT_tm_BvWJVC>^MdA8vR@-l%#^ z^$ ul3)l;i6s;gbrr*uk=2 zFhDF&l}5=qiuBnYz@zi*+DoB)Q|ll8s+#OYC-6?RydAGm wU=GeU<5!(9G)$~j)L zCVI)npG4kPjn*-T{TCkDMRdA1to&J4ZapyXswP*TY&DiJN@Y0P#nL}lc=_R-f< z 31w(C%?ss z5m)rP$l(l&T4gNDj9UtvaygvWp$>IsBYc!-b1sP@8A5=;)Yt5SnRqkHS_;grAoyg m^W_hX0-iSZY^{f`#Y3avaWf?zV;YCSvQyxGjcUB&h{?F$VikF zI)Cd!9K|@~UuwR6FzW7&2iamI?Rl3od{ABy60Xx}*YQtrDTZG3z<|?3ShgaSz3x>4 zYK8t1HLSx)aum&gp8IOq>dM9}8hxkMs#HSHz7)nnv{Z?CC3y}n9;vrjA+_5%b7q&c zyipaLZk+IpXOxv-X)ulRTb}GU^^7rYsJ8V&)$6i`-zwO+jn2U 4TG*F-3VvHXk-hxlsjP`$@2#N>mN3zS4jMr39S*TF^F;tPVerYmgIv z>d92_$tV6BQNB?VBNnH6p9h0`GLS#FrnPAL)#vIvre=+za8AsASldoQWWvllG(Nl* zkGG51=dP0*bqszkb!;wT*VZsn+Pn4oMbMa@3>Yu|2FGV%n*1XriU(3^4(Q}%=Lx)@ zyfiu^#95C@!>cS8H7BTunS5S1rO!^D5SU-M_hHU6A4%Ge>l^=g%j-({QT1TazhQ96 z=x}) S1Im3rcsz>Hy+Q<+6h_2nBBWo)WefyQd_+7Wx z=DdU`_ubvFTVsY6eKYTwchcK=OqCX&!7T>93HKyl5?3BsWr9Pr$KJH&r9u-VN$@!r z;qo7HKF$5^mKbY{d{~=x-d ja5RkKEEpEbu3g$8-MnAulQk&-jQ@%2JT zomOSaE#Ab1Y6keer dzav(32$ADB$f^ zz}!)z8<%4&lpETXje6+7S*(9rOtm?IyxPcmtI7jHa^aJpXDbWM9OxwgH>*T1_C1>- z!Q~$De&mzL1g#aKIu|QGhP^0dURWQ|v3ao1HCwrE7(?1rMCOLt`=T#NPlX4?`6ewd z5=U|iuhMniR7{<7gbh7laK#Q0FTZvF5yszg)#$DcZEc=+w=5XX3{&iOXXZ9+-G+<* zZmM<6qhDQ? ^J|G7xopzPM` _RIaQAVC?Se_*F+Vkal5&5lw5uVr?|YHhAKXk z@8 >CadKT zsFbj+g4?%>RY(7^j5qb32ohv}Q}eB%8JpP=uCTZ@_7UosIj=&tzfoi)*eo WgC=2-q58B8>Ym z#80*4?rDx!o0479YZ4=CA~y9^MC33vurQ}wCMPSaJN}SRT5Q3slk70x^(y_$x@lJE z_vP>Sy(ur&-nUN^F0Lj?*&Tfz6{I1~cnlCp =+ +YWI_bSU6z=)+}=|@jiEcQl+0dT{)a~<|au3`j2%E*LcJ$Ecq2TSdT3iCl2 z1F1pk77iL=X{?#<+!h_SQt(= |2S4oKsp(W6_=I@$>mVpqqtw4~ zd+%(>Yo@2Pv(+k=K8a@!i?)lgSsD+W%zj$U```Q9E$p35{rU)%3ngS`eq25iSo|E~ zp`KWGvpOL xPJQh3?yY!`f;@!jUcQguy){$E1D(39$izkk}=f(^k2ucN%Z zKS#$(@O*?iOl%yFnX~E@+dse<{bSkK-P~<(3@SYz4~hn9TLrl|2Dze~16
XC)f;_xk1A`pB c{r)GTp#0xOxIg=TIcETUZ6mEZO-#&x0bXOyW&i*H diff --git a/lib/app_router.dart b/lib/app_router.dart index 3999b4693..60e3fc998 100644 --- a/lib/app_router.dart +++ b/lib/app_router.dart @@ -37,7 +37,6 @@ class AppRouter { AppRouter(this._userManager); - GoRouter get router => _goRouter(_userManager); final _rootNavigatorKey = GlobalKey (); final _adminShellHomeNavigatorKey = GlobalKey (); final _adminShellLeavesNavigatorKey = GlobalKey (); @@ -47,13 +46,13 @@ class AppRouter { final _employeeShellLeaveNavigatorKey = GlobalKey (); final _employeeShellEmployeeNavigatorKey = GlobalKey (); - GoRouter _goRouter(UserStateNotifier userManager) { + GoRouter router() { return GoRouter( debugLogDiagnostics: true, errorPageBuilder: (context, state) => const CupertinoPage(child: PageNotFoundScreen()), - refreshListenable: userManager, - initialLocation: (userManager.isAdmin || _userManager.isHR) + refreshListenable: _userManager, + initialLocation: (_userManager.isAdmin || _userManager.isHR) ? Routes.adminHome : Routes.userHome, navigatorKey: _rootNavigatorKey, @@ -83,7 +82,10 @@ class AppRouter { ), StatefulShellRoute.indexedStack( builder: (context, state, child) { - return DashBoardScreen(tabs: adminTabs, child: child); + return DashBoardScreen( + key: ValueKey(_userManager.currentSpaceId), + tabs: adminTabs, + child: child); }, branches: [ StatefulShellBranch( @@ -94,7 +96,7 @@ class AppRouter { path: Routes.adminHome, pageBuilder: (context, state) { return CupertinoPage( - key: ValueKey(userManager.currentSpaceId), + key: ValueKey(_userManager.currentSpaceId), child: const AdminHomeScreenPage()); }, routes: [ @@ -160,7 +162,7 @@ class AppRouter { path: Routes.adminLeaves, pageBuilder: (context, state) { return CupertinoPage( - key: ValueKey(userManager.currentSpaceId), + key: ValueKey(_userManager.currentSpaceId), child: const AdminLeavesPage()); }, routes: [ @@ -189,7 +191,7 @@ class AppRouter { name: Routes.adminMembers, path: Routes.adminMembers, pageBuilder: (context, state) => CupertinoPage( - key: ValueKey(userManager.currentSpaceId), + key: ValueKey(_userManager.currentSpaceId), child: const MemberListPage()), routes: [ GoRoute( @@ -256,8 +258,10 @@ class AppRouter { ]), ]), StatefulShellRoute.indexedStack( - builder: (context, state, child) => - DashBoardScreen(tabs: userTabs, child: child), + builder: (context, state, child) => DashBoardScreen( + key: ValueKey(_userManager.currentSpaceId), + tabs: userTabs, + child: child), branches: [ StatefulShellBranch( navigatorKey: _employeeShellHomeNavigatorKey, @@ -266,7 +270,7 @@ class AppRouter { path: Routes.userHome, name: Routes.userHome, pageBuilder: (context, state) => CupertinoPage( - key: ValueKey(userManager.currentSpaceId), + key: ValueKey(_userManager.currentSpaceId), child: const UserHomeScreenPage()), routes: [ GoRoute( @@ -321,7 +325,7 @@ class AppRouter { path: Routes.userLeaves, name: Routes.userLeaves, pageBuilder: (context, state) => CupertinoPage( - key: ValueKey(userManager.currentSpaceId), + key: ValueKey(_userManager.currentSpaceId), child: const UserLeavePage()), routes: [ GoRoute( @@ -349,7 +353,7 @@ class AppRouter { path: Routes.userMembers, name: Routes.userMembers, pageBuilder: (context, state) => CupertinoPage( - key: ValueKey(userManager.currentSpaceId), + key: ValueKey(_userManager.currentSpaceId), child: const UserMembersPage()), routes: [ GoRoute( @@ -366,17 +370,17 @@ class AppRouter { redirect: (context, GoRouterState state) { final location = state.matchedLocation; final loggingIn = location == Routes.login; - if (userManager.state == UserState.unauthenticated) { + if (_userManager.state == UserState.unauthenticated) { return loggingIn ? null : Routes.login; } - if (userManager.state == UserState.authenticated && + if (_userManager.state == UserState.authenticated && !location.contains(Routes.joinSpace)) { return Routes.joinSpace; } - if (userManager.state == UserState.update || - (userManager.state == UserState.spaceJoined && + if (_userManager.state == UserState.update || + (_userManager.state == UserState.spaceJoined && location.contains(Routes.joinSpace))) { - return userManager.isAdmin || userManager.isHR + return _userManager.isAdmin || _userManager.isHR ? Routes.adminHome : Routes.userHome; } diff --git a/lib/data/core/extensions/string_extension.dart b/lib/data/core/extensions/string_extension.dart index 51b56be19..e4f2a8d15 100644 --- a/lib/data/core/extensions/string_extension.dart +++ b/lib/data/core/extensions/string_extension.dart @@ -1,3 +1,9 @@ extension NullCheckString on String? { bool get isNotNullOrEmpty => !(this == null || this!.trim().isEmpty); } + +extension StringExtension on String { + String capitalize() { + return "${this[0].toUpperCase()}${substring(1).toLowerCase()}"; + } +} diff --git a/lib/data/l10n/app_en.arb b/lib/data/l10n/app_en.arb index 76ff9eaa8..012cf2475 100644 --- a/lib/data/l10n/app_en.arb +++ b/lib/data/l10n/app_en.arb @@ -344,7 +344,7 @@ "cancel_leave_message": "Leave is cancelled successfully!", "user_settings_edit_select_tag": "Select", - "user_setting_take_photo_tag": "Take Photo", + "user_setting_camera_tag": "Camera", "user_setting_gallery_tag": "Gallery", "employee_designation_tag": "Designation", diff --git a/lib/main.dart b/lib/main.dart index 127f86942..1d259e3c5 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -46,7 +46,7 @@ Future main() async { class MyApp extends StatelessWidget { MyApp({super.key}); - final GoRouter _router = getIt ().router; + final GoRouter _router = getIt ().router(); @override Widget build(BuildContext context) { diff --git a/lib/ui/admin/members/edit_employee/admin_edit_employee_screen.dart b/lib/ui/admin/members/edit_employee/admin_edit_employee_screen.dart index bd0e4fc5d..752cc9d6a 100644 --- a/lib/ui/admin/members/edit_employee/admin_edit_employee_screen.dart +++ b/lib/ui/admin/members/edit_employee/admin_edit_employee_screen.dart @@ -22,7 +22,9 @@ class AdminEditEmployeeDetailsPage extends StatelessWidget { return BlocProvider( create: (context) => getIt () ..add(EditEmployeeByAdminInitialEvent( - roleType: employee.role, dateOfJoining: employee.dateOfJoining)), + roleType: employee.role, + dateOfJoining: employee.dateOfJoining, + dateOfBirth: employee.dateOfBirth)), child: AdminEditEmployeeDetailsView( employee: employee, ), diff --git a/lib/ui/admin/members/edit_employee/bloc/admin_edit_employee_bloc.dart b/lib/ui/admin/members/edit_employee/bloc/admin_edit_employee_bloc.dart index 45763be3d..da159293a 100644 --- a/lib/ui/admin/members/edit_employee/bloc/admin_edit_employee_bloc.dart +++ b/lib/ui/admin/members/edit_employee/bloc/admin_edit_employee_bloc.dart @@ -30,13 +30,15 @@ class AdminEditEmployeeDetailsBloc on (_validEmployeeId); on (_validName); on (_changeImage); + on (_changeDateOfBirth); } void _initRoleTypeAndDate(EditEmployeeByAdminInitialEvent event, Emitter emit) { emit(state.copyWith( role: event.roleType, - dateOfJoining: event.dateOfJoining ?? DateTime.now().dateOnly)); + dateOfJoining: event.dateOfJoining ?? DateTime.now().dateOnly, + dateOfBirth: event.dateOfBirth ?? DateTime.now().dateOnly)); } void _changeRoleType(ChangeEmployeeRoleEvent event, @@ -49,6 +51,11 @@ class AdminEditEmployeeDetailsBloc emit(state.copyWith(dateOfJoining: event.dateOfJoining)); } + void _changeDateOfBirth(ChangeEmployeeDateOfBirth event, + Emitter emit) { + emit(state.copyWith(dateOfBirth: event.dateOfBirth)); + } + void _validName(ChangeEmployeeNameEvent event, Emitter emit) { if (event.name.length < 4) { @@ -122,7 +129,7 @@ class AdminEditEmployeeDetailsBloc dateOfJoining: state.dateOfJoining!, phone: event.previousEmployeeData.phone, address: event.previousEmployeeData.address, - dateOfBirth: event.previousEmployeeData.dateOfBirth, + dateOfBirth: state.dateOfBirth, gender: event.previousEmployeeData.gender, imageUrl: imageUrl ?? event.previousEmployeeData.imageUrl, ), diff --git a/lib/ui/admin/members/edit_employee/bloc/admin_edit_employee_events.dart b/lib/ui/admin/members/edit_employee/bloc/admin_edit_employee_events.dart index e42f2be69..ef2520cfc 100644 --- a/lib/ui/admin/members/edit_employee/bloc/admin_edit_employee_events.dart +++ b/lib/ui/admin/members/edit_employee/bloc/admin_edit_employee_events.dart @@ -7,12 +7,15 @@ abstract class EditEmployeeByAdminEvent extends Equatable {} class EditEmployeeByAdminInitialEvent extends EditEmployeeByAdminEvent { final Role? roleType; final DateTime? dateOfJoining; + final DateTime? dateOfBirth; EditEmployeeByAdminInitialEvent( - {required this.roleType, required this.dateOfJoining}); + {required this.roleType, + required this.dateOfJoining, + required this.dateOfBirth}); @override - List