From 27e73667cb0a120a4e39f6a634710d9387172404 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Tue, 19 Aug 2025 16:15:44 +0900 Subject: [PATCH 01/10] =?UTF-8?q?[refactor]:=20splash=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EA=B8=B0=EB=B3=B8=20splash=20=EB=9C=A8?= =?UTF-8?q?=EB=8A=94=EA=B1=B0=20=EC=97=86=EC=95=A0=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thip/ui/signin/screen/SplashScreen.kt | 17 +++++++++----- .../ui/signin/viewmodel/SplashViewModel.kt | 23 +++++++++++++++++++ app/src/main/res/values/themes.xml | 6 ++++- 3 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/com/texthip/thip/ui/signin/viewmodel/SplashViewModel.kt diff --git a/app/src/main/java/com/texthip/thip/ui/signin/screen/SplashScreen.kt b/app/src/main/java/com/texthip/thip/ui/signin/screen/SplashScreen.kt index 318a5fa3..ad79335c 100644 --- a/app/src/main/java/com/texthip/thip/ui/signin/screen/SplashScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/signin/screen/SplashScreen.kt @@ -10,6 +10,7 @@ import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color.Companion.Unspecified @@ -20,23 +21,27 @@ import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.withStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.texthip.thip.R +import com.texthip.thip.ui.signin.viewmodel.SplashViewModel import com.texthip.thip.ui.theme.Purple import com.texthip.thip.ui.theme.ThipTheme.colors import com.texthip.thip.ui.theme.ThipTheme.typography -import kotlinx.coroutines.delay @Composable fun SplashScreen( + viewModel: SplashViewModel = hiltViewModel(), onNavigateToLogin: () -> Unit = {} ) { - LaunchedEffect(key1 = Unit) { - //3초 delay - delay(3000L) + val navigateToLogin by viewModel.navigateToLogin.collectAsStateWithLifecycle() - // 로그인 화면으로 이동 - onNavigateToLogin() + LaunchedEffect(navigateToLogin) { + if (navigateToLogin) { + onNavigateToLogin() + } } + Column( Modifier .background(colors.Black) diff --git a/app/src/main/java/com/texthip/thip/ui/signin/viewmodel/SplashViewModel.kt b/app/src/main/java/com/texthip/thip/ui/signin/viewmodel/SplashViewModel.kt new file mode 100644 index 00000000..72b07245 --- /dev/null +++ b/app/src/main/java/com/texthip/thip/ui/signin/viewmodel/SplashViewModel.kt @@ -0,0 +1,23 @@ +package com.texthip.thip.ui.signin.viewmodel + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel +import jakarta.inject.Inject +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch + +@HiltViewModel +class SplashViewModel @Inject constructor() : ViewModel() { + private val _navigateToLogin = MutableStateFlow(false) + val navigateToLogin = _navigateToLogin.asStateFlow() + + init { + viewModelScope.launch { + delay(3000) + _navigateToLogin.value = true + } + } +} \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 7a737375..8fc4a58c 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,5 +1,9 @@ - \ No newline at end of file From 6c618a8830b46347a83df94a6c954f8e4f99efbd Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Tue, 19 Aug 2025 16:37:03 +0900 Subject: [PATCH 02/10] =?UTF-8?q?[refactor]:=20=EC=95=B1=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=EC=BD=98=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/ic_launcher-playstore.png | Bin 0 -> 16279 bytes .../res/drawable/ic_launcher_background.xml | 236 ++++++------------ .../ic_launcher.xml | 5 +- .../ic_launcher_round.xml | 5 +- app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 1404 -> 1002 bytes .../mipmap-hdpi/ic_launcher_foreground.webp | Bin 0 -> 1018 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 2898 -> 2212 bytes app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 982 -> 986 bytes .../mipmap-mdpi/ic_launcher_foreground.webp | Bin 0 -> 654 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 1772 -> 1554 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 1900 -> 1468 bytes .../mipmap-xhdpi/ic_launcher_foreground.webp | Bin 0 -> 1408 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 3918 -> 3092 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 2884 -> 2176 bytes .../mipmap-xxhdpi/ic_launcher_foreground.webp | Bin 0 -> 2142 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 5914 -> 4850 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 3844 -> 2868 bytes .../ic_launcher_foreground.webp | Bin 0 -> 2854 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 7778 -> 6496 bytes 19 files changed, 74 insertions(+), 172 deletions(-) create mode 100644 app/src/main/ic_launcher-playstore.png rename app/src/main/res/{mipmap-anydpi => mipmap-anydpi-v26}/ic_launcher.xml (56%) rename app/src/main/res/{mipmap-anydpi => mipmap-anydpi-v26}/ic_launcher_round.xml (56%) create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..1ed697a641ee45635602d2824fac7c15b858c460 GIT binary patch literal 16279 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns:android="http://schemas.android.com/apk/res/android"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 56% rename from app/src/main/res/mipmap-anydpi/ic_launcher.xml rename to app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 6f3b755b..c4a603d4 100644 --- a/app/src/main/res/mipmap-anydpi/ic_launcher.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,6 +1,5 @@ - - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 56% rename from app/src/main/res/mipmap-anydpi/ic_launcher_round.xml rename to app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 6f3b755b..c4a603d4 100644 --- a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,6 +1,5 @@ - - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp index c209e78ecd372343283f4157dcfd918ec5165bb3..52323eb50c83d29540974a135bc30a83759f4881 100644 GIT binary patch literal 1002 zcmVMXNQkh^W$@i+g&$Jn-Q z+qR9(b~bJqGuqB(JMHexcKba~@WWWV^>=g%2)AvU%H^%>`fS^_ZQHiZY`gl;z-=Q% z?lCUiJwi6`27&t(#?osJU5GGs3<5-iC_3tnuA}YfMB4s#Ifwuf{2YZxoE^Z@?E=uz ze}xEfae(8)l2~q|!^@{%VM3G~uoISc1Q^Ny9lZc18f?Te0NC$B4EY!q7eBy=5g*O+ z6F`jlSXLp#gpXzYy^9iDC*&s%4az0Ok&s4C)LX*;C5ibms0z9LB_!%qyTI@8myq~> zm)sRj5i*Hwef-}qoTwM~RqaAbAOX$Xba#I8l4J!8Ya(AnAxUPH^uSY83j3^^yhq3y z)-~B-@nTZ#CXEtM%Sv-zCex=|8gvQbet5aZ8c4AlryT(nFe=LQBgN77pOQ$0tH}`i z&C9P(B{fl>VvYaH34z>5!hez_*{qfCdk7NrN?M;?kZ91+?gGZq%})1#g2c@1^jydH zW>@!9rcbB%`dEop0V|`0eup6Ro)t4<&0JpYy^U%Tc85wF|EsRq0t};>k?sQJ!56Yd zY@@FguEgc5jdh&brc>S|;N&9pQZ+JB(?zcTtpw9}sD*DI9> zD-OE_(eJ!MfEIsTW)t*ip{3pdjG>i*7GjO9|E@IL^Vn#N{$OPiQPL*r(HKxoCxjOG z9)Q>%PVT+}67>e!eQvSF2KSjmFFV~M$cu+RW_m?YjQ`guqL7G24jNE-G2Idh!UzM; zLF_jtb6*C@HodfX3TdZ}T%yr0$n*i5K9w}nCfh;NW+g2pkc@G?h+@@42rCYIK(AEN zp~q%;^fCu|%6oo4rVHbWte_x2;W#0U@7jI@b6+Hclf{04G>2Ax=pD$3TI8()hexn( z%8fuNymzF*qCNNu#deT_uu|`BD1iU5W`WxxA%p~9s%N`0z!n?yV1_|u&=r)zX;Oav z!(WD2b#slS&qpx{(Ny^6*%Z}JuZ#N(0s{&{hCA1Mt$2Ybp#Fal9VoDpWEC$0IL9_umo!j YUf;HA_g?wmA9?T31E9GAm?7Dq5^v??X#fBK literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..38e2f4cc46ccae943e71b712bd4018fcdcd3d1d5 GIT binary patch literal 1018 zcmVK` z?Hz4RHa6R~>-)X``qbztJIXPS|F1dP&4$0Px> zz8@^bGQfH;&AGT^P9fH~rAjSf8{8|#C_@I3U|yQZa(n}+Pniv*0!*~(9wMnu4k#s5 z$i1TWF+dgKyNFD810-5wQjq*G=BWEf%yFdz^SD>U4*JMLoKj3+vRxq7B%_05gkRi{ zTd004BKf~7pG(d^d#g$U+1)E#6P=O~#{@FT77(S6VL)CpbPQ{_G9h7_vGDt!j{UQ= zLyAN~MO5OyLgZZfyENxHevw>4+N*one?)%M)`a*i<-rVhK!jEX28j!Ud7&mVOGRD1 z1-_(n?CGyRB5|fva{0X9@&lx6M$TU#P#tL|^N}05H((8|)JURrb6F6FfMMeF3la?m zwj+7|rW!$-tMMRQrt3)@=gwUcJ3H*Q@!K9nrFpO#^W0MVIwq~nD?pBYDE|;Ju-m-Np6d!?qv8U4CAfdwa4-yjw zsD|?Wbn5I=)n-IWJavietGgi|y=AM%ccFm6JUW(Y0mC)Z-m)7A6Js!t1Tc^tLK7@e zJ@=4kgE}?_#3hYPaR7vGW<-!wFsKJef1CLQNPB6mQ&8MlB>BFMLjq!JBoi(Jk-PbK z8Pn)Q74njY3Up)wMs^r745U1=x5k^@t&vmsVy&fu(p@3hKTXA2u9=8q0-0nJh(5x< zMX|vYf5adbfiT089HfQ!fz&6YmBwF1m{{cQ$UPwgjtO+D8Z4DL{}6FZ((+w|_{bqs zod9v?NIPmUf~6RSF`fpvKt|~W(%;eD)!;2l-~iQH0qc-&WTr>p4Q=Uzp*s{GFxDh+ z_Oa3e+p(}sS|LM7s4&fCyMfea%#Hz8f{9iE`L4A4Sj8l9IDI7Ls`!$`8Sa2}&GZNILv@r4bi*S@4t?7 oRrnUQ){;?Z$^fP?l_9htKIG$g3va=IwMtX{I{&Rz+dBU%9dR@7NB{r; literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp index b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9..95e5d1e999b720d5ede915206197a665f74c2c1a 100644 GIT binary patch literal 2212 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 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp index 4f0f1d64e58ba64d180ce43ee13bf9a17835fbca..f5ecfd18564325237b935fd36df189894d39cdc7 100644 GIT binary patch literal 986 zcmV<0110=YNk&G}0{{S5MM6+kP&iD+0{{RoFTe{Bp9VLQB*j)Oz4yMvtbNDOyzkT3 zm>CXs$_==YBq_FP>4C)GfN$D2`pKV3W8Rs997&QQDVC3!WH^0Jg;N`U%vfC+aBJIE zt;}=Z_aC}{=!-&ViHu^1A#!);+yDRp1Q0+Q2%rEBFzV5#J=*`zugK`pRFR>Y=kWJ^ zMsa-y#lthcKXCtq;TOMOQ2hTO5+D@_l&j|1KpLRP1_G%-+CVBDw5cF+eKGtl^!V1} zpEey7k^dl6AQeR9zaGCppvV?kw1Bi}fV9o?2ZTzSh87KNJ$`{yI?VGMNF%a)jH5@Pm}|7?*kfiU0V5r|IQ+e`vqw z!yntZnk)fJA5mw+|JUqwyg&T>PtFmfKwu(-0u!hV6(v*(P-sm|GnGl&CvECX{8UMO za+H}Q>h1q~{I|^+Ab0v8a(SHVR8!1Yb@%a8=^As=MuxyDw7X&BxNAwN>u3fznx)cg&#$67m=II;< zp>T-}(TTUde|pcm&j4TE0?$LhyJtZ73&7`heERXw_6GojZv{?qd4xK<$n}o}h542Z z%d+*3vA_*(ewBQ&Y*309H`Gg_!GS$wVlPNP6 zh{)_6y92wnsg7mld;{)2bug@n+CE)GT25*q(&21bf6@`vu{3Kx#ekO%hNsk4K*GIx zf_-``=y*E8U;1D@pn9-cn}x=esUwCYEA$>cp)WKT+z`5*Nbr~0m#R>sQq?MdGt3N0 zPf-|OApI1m1N1oNV6Po&R;XO@-z+nXQ(%ZlUr3$YT%qf!Qc30ZH&w9Ltrh5>r{DZS z#Q+7mWy}BOwARq^(3$hc_tb}8{;|^*n|beYJ1fw3k#vH_6B|LhlZgrC4cX&Gx%JP2i-D98ooq6K)JZHy9|Cd9;V*<{(x@kH9thF`I9mJR;CfUY<0 ITQ-P?2v*|ijsO4v literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!T*tTukwrzVRPO5aa zZQC{$z#UANW6JQm-~T&~ylI_h1xe|8)Tc@}SpmN;>fb7LK$IlOv{l!(Z9UtzZQHhO z`~7bJC*av*)YW)&KFObBX4byUtUV23(((WdZr2cJ?hQb%@=mS*cVc26P%&*Ia>yZF zUC4!7e$BtksxNgx#*TnNtyFj;pl9iL?gB5Os}`zf?d$1yaLSZZ{zmaL$gO}<*O5bN zJ!n58m0zlf^ldc(2X@JFiXSMVAK9l++%&TE7lJlHMfZ$`?+tx3)@uJ2Pp=pgmO&1z zBckLXZL{zO)%<1dX6{vd7F<$r8*(qE^i5=J&j77}a?eox&yCQ&h7V_oE@!vB3cp$o z^fYE3B5g(0H;9`d`fn8?|3*}J9ok*}hYXC#pv6$u0h+yhTiEhG=2n@yFGN^32eAAD zg!hv43sO;EmjGG>W$rSRKGXVs<(7J5ulUNzt6v~t4*1ofU*&JC6wne_uP&kJRir^i<{@kq;*0wy@_U>y0Lqs+4gdfE literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp index 62b611da081676d42f6c3f78a2c91e7bcedddedb..0c1ec6a147dfd9e146ffd291ec98f1a305af8d7c 100644 GIT binary patch literal 1554 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

FJ$wK}0tWNB{uH;AM~i diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp index 948a3070fe34c611c42c0d3ad3013a0dce358be0..a6eef5ec1492db0fce663ca070ba5a9a0a178157 100644 GIT binary patch literal 1468 zcmV;t1w;B$Nk&Gr1pok7MM6+kP&iDd1pojqU%(d-^@f794Vccq@2empCV;A}wZ8e3 zV{MyaML*8-jleE zY+G$sO{zGxpb%|G%*+%sWSqH;BuSCd^|NQ4I0u;d8Ablr+*$xYD0i1_+qN zdX4SPP4zXlCfha}w~ZW$d#Ov^%@5>k+kXDbd$4WWwr&6a*|s$qb4Qb{&26?P+jdRA z`}4==XmouV-Dcai>yvG*^$Oe)5G6@6ZPm4X@3U>&wr$(C?RWgW{b%5|ks|jPcaQH2 z)Xu6Rh@grvz$EaoAuTRaBQoXgORF)QD0h?~@`{;Xl#NnvQc9|M>pRI?UEazdnR%a&^{j+zDRs_!xEz(8)l2~Wx z34n`yEpkIedW!Kx-pEG+!)FTVJ7G|H9AF|L8HK!%pOV7fiDG00`bf!#3B{r@oUQ8-;vj=~fwRooE4IksAPJw-0*cEK`h&9f#%zK$)G@AXSXB4d)HN zmDK*$B-hS{d!+>`b#*eyf6?Jp>hxr4_Pc5~O*PTFBe|H?NV!dFumF}VQXcgbq9~df z?vw@NfKJZ(B(mM0R4H0mM~8VsMlHES+{lFmA9G0T%O>MWjnSO@`_*6?H!c`F;D@mw+}Nml5YnAvRx z1@4LH<-^kn;G#yFA7}y2=;kFM_fMf$o<%NkpGkEZ6*f>9(aGaHgL*NEV||eaABz|q z22sGCu>M-we~?~Mi94_mFdJLcQ@0T+9Ca(KH=5_WO=IVh9RHDbKPmVSc5dHiSYp|f z_=Ehmub9<&EO{)Ru<1h44+>F6Wfwu3f2A0E<^iT*iAsEW85MdR8e3~Ji`=TYUuJfJ zrxRp@6o?p~GR9US)da?vsF_){a7^?QQQO3C#i%uN08_9)IVPQes_f0O-da02{$Bo% z*BKP~2wL}D;674KWP(^U^W>87tq`?lHUy>Ev;r!3InB9HHz>7N?!GzZqEBglWdf9l z7@{7KK`F3oK^e5r)7UqnqZpaQ2-$gEW3fkm&H3UF9m_h@W|dZoSt!{Q|B3ATg>(Wo z?I`?8+M}Jd4O~)+c7j;MhGTDu%kOm-`8Ch1d`l;2Wim>%v(t&lZ|jEuar3ShMlO{2 z3yvtq`ZAY3w4g36>CbE&QA=72VqfhCq8~G8ob$L>!?NqNST?ukul z{=hc1#4V9{6Hiv+@Z`TCTA3WYl?_Pyv@*==t=bLC9&e`h-gloTZ@XWNvCZF6@X05| z=nOK4XlKb&osrCE-`nAoM+Sppl;&qO?f;IDQ%*!9RdA#DZJ~%;DUW74M@Hol;39K4 zyA5SfmE$PC7oNtwk&G)DW8${pW8&anOX9hDU<}};HSah^uZS{nYv4iH1rg&4#+ZcD zYX!>?bfgerT1}M3qFDqlnlOS145vOW?6mD9N@7^L7{1p;k>kn|uKykF{QnghXQ5IC zC$n5T8y=C8Cs!@9l_`Ur9UH%jAc9sRUoQruDbrlWLl5Asl!pOEJY`XW07xEk63vwu ze;4_os_7m-03U$eV5Clv_pJnmPn3sA0B(Sgxo(mC05Iux$N#YryZ$1_?u(mgFsVOJ zT41ne0dznfOu$LO!_eTsxW1m7>h;{o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..320763b6a1cc37fca3b500f00e96275e2d06af11 GIT binary patch literal 1408 zcmV-`1%LWdNk&F^1pok7MM6+kP&iC$1pojq*T6LpwNTo&?RX^phqz)i%eHOXuIlcw z?UlK*ZQHhO+g2lZpL})9+qIk2J$CyYJu?*$B}p=E)xouGJ=?Zz+qP}n_}%_Ha@)v} z=+kWMo>)`!gPCb75&uP|p<`u~i2ow~i}+7EPP@maF%~VXCTbvVH{h^SBXQUeO)f;{ z0+%za8F;*Qt3j4a!}8?6#w6t-yPg_I+a6FcMvbI$412Q-BAbDxbq+5Rf4x^#Q;9i7 zr95h8wTjC?d?uxQ7|5)q`&9l@*yFmNw6@oUi{4#Fo`f!nRo@T*xPh3s0b zY!;yNL~Q(L9f0mLv9T|`2oHpJFafJ!@{hLY@6hFY(=KZC+u`=|nrA{Ae=#Q)NFlvk zqltfu4rtjVt`SBBfWB+7!6(4XQp8>bFsaACNn1ZXn55n@ojkyNde5iIFU4E)zG1GK zltOZ0!0gcD=m%~1W%&7bW}f{As9z!vbePq%V!c;@iBAxF24LOjJ7v?47rpA9^v&Ox z&uL%A`}%!$n3=mzrI3(4{?)jWUg7l{l{&#FQy0VG=lQXEQ7@P^^P+Pa+Yd%R3^GtN zO(^N3cdgD7z`(nRJqCc`XUYZ5>K)T2pUgYnd@ifQW;tNwb(IWkCaVDe0G&V_ta&XV zgK@jRqsy8#WrKxXV_$^!J->Gldl&!%50n?Z>X{HTpW3I?UdKVkzKtrW>g|Rl>KZRf z`3P%F%Qm3rRm2_yK<_o>eZ5*LoYTJ9J73tO)MK%`od+FmCY4kg*Tj+wr?O&b-lE+{ z82EX=QtA`c)fFcXD5aJPFM7ATXC8jli&E)47R#=iVg}xXSO^23)v1(HZ&|j#`(7!f z4qjz$+ks40jl7DL4GWbGPKC9aZS;Ltrr*U4e8lwkO1Eu4N7j^*K1e0EnTa^;BDJ#wy9F>vBX45er+}Shi2Y{(I^i#| zp%+TWp-Cl|`bA27rbxqz*y!gf`qb8U11u!SHy<0oYiOtMi4NF|J(0uS8l1p#UgiZb{OJ`iiztc4!@*v=We$Wr`o zKEnxA^CNzQ%S~w7kh*V~RZaJ-qV%B*;>a7p;{yy5RhZhXKr}ZX`sDd|0Omze6}i+Z zMwra}m{2D58bWk3U^T8G_=2$T5K5S9Fo4)}!tkrqTDEDa#i1P5FvjBx&>f@>6p?(8 zT0-6wOH3yW+|dd_wpbV_m|+M(p3Be#(nnJ*+UqhkDrRy`FeE`#nWBeRNb zYgu>@v8&O8vH?m$j>PQdaJq}3GAhC-uS@zUr31i1u0!NJ{tu(L$f=i@%h|S1r+PY6 zS{XH-+F78elNw23Cjc~a8ZY3tl&3kCN`ji#)X1{yR`SoM9K;cemFeqwV#I$D|3&=w ORWxlS;=ix+Hv<5v_@}r4 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp index 1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f..dd8083cfc665dc51273b015ea295cf03c48a46f1 100644 GIT binary patch literal 3092 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 literal 3918 zcmV-U53%r4Nk&FS4*&pHMM6+kP&il$0000G0001A003VA06|PpNSy@$00HoY|G(*G z+qV7x14$dSO^Re!iqt-AAIE9iwr$(CZQJL$blA4B`>;C3fBY6Q8_YSjb2%a=fc}4E zrSzssacq<^nmW|Rs93PJni30R<8w<(bK_$LO4L?!_OxLl$}K$MUEllnMK|rg=f3;y z*?;3j|Nh>)p0JQ3A~rf(MibH2r+)3cyV1qF&;8m{w-S*y+0mM){KTK^M5}ksc`qX3 zy>rf^b>~l>SSHds8(I@hz3&PD@LmEs4&prkT=BjsBCXTMhN$_)+kvnl0bLKW5rEsj z*d#KXGDB4P&>etx0X+`R19yC=LS)j!mgs5M0L~+o-T~Jl!p!AJxnGAhV%~rhYUL4hlWhgES3Kb5oA&X z{}?3OBSS-{!v$nCIGj->(-TAG)8LR{htr41^gxsT8yqt2@DEG6Yl`Uma3Nd4;YUoW zTbkYl3CMU5ypMF3EIkYmWL|*BknM`0+Kq6CpvO(y$#j94e+q{vI{Zp8cV_6RK!`&C zob$*5Q|$IZ09dW=L!V zw@#2wviu|<#3lgGE8GEhcx+zBt`} zOwP8j9X%^f7i_bth4PiJ$LYtFJSCN$3xwDN;8mr*B;CJwBP2G0TMq0uNt7S^DO_wE zepk!Wrn#Z#03j{`c*Rf~y3o7?J}w?tEELRUR2cgxB*Y{LzA#pxHgf}q?u5idu>077 zd^=p)`nA}6e`|@`p?u}YU66PP_MA}Zqqe!c{nK&z%Jwq1N4e_q<#4g^xaz=ao;u|6 zwpRcW2Lax=ZGbx=Q*HhlJ`Ns#Y*r0*%!T?P*TTiX;rb)$CGLz=rSUum$)3Qyv{BL2 zO*=OI2|%(Yz~`pNEOnLp>+?T@glq-DujlIp?hdJeZ7ctP4_OKx|5@EOps3rr(pWzg zK4d3&oN-X2qN(d_MkfwB4I)_)!I_6nj2iA9u^pQ{;GckGLxBGrJUM2Wdda!k)Y>lq zmjws>dVQ*vW9lvEMkiN3wE-__6OWD0txS&Qn0n22cyj4Q*8(nG4!G{6OOwNvsrPIL zCl-$W9UwkEUVuLwyD%|inbOF*xMODZ4VMEVAq_zUxZ+K#Gdqf!DW$5f)?7UNOFMz! zrB~tuu=6X2FE(p^iqgxr+?ZK;=yz`e;C$#_@D9Lj-+TDVOrva>(#*PVbaHO>A)mhl z07OJWCqYC60518$!&c`eNBcBW%GnfaQ*$eazV^2_AW?j)h;J1nUjN(I9=0+!RVx~% z3@Tf!P0TE+98jA?WceK-}A1% zW!K)lyKcGqy#M~})315-A#2NXQ`?6NR#Apo=S!oF=JfpX>iR*49ec{7AN$xxpK{D$ z2d%Fz&rdfSqourN$~Y^NFIMV1CZ?J*bMx~H3k&meGtH@q9ra2vZxmA$S(#jaaj-g4 ztJmxG+DLV<*q<|sDXPp$X>E)#S}Vm&sRaO5P&goh2><}FEdZSXDqsL$06sAkh(e+v zAsBhKSRexgwg6tIy~GFJzaTxXD(}|+0eOwFDA%rn`X;MVwDHT9=4=g%OaJ9s%3b9>9EUTnnp0t;2Zpa{*>mk~hZqItE_!dQ zOtC>8`$l|mV43Jbudf0N6&&X;{=z}Zi}d1`2qmJ}i|0*GsulD3>GgQXHN)pkR6sf1 z?5ZU%&xtL}oH;YiAA)d*^Ndw2T$+Mjuzyzz@-SM`9df7LqTxLuIwC~S0092~+=qYv z@*ja;?Wt!T!{U?c*Z0YtGe)XbI&y-?B&G2$`JDM)(dIV9G`Sc#6?sI60de6kv+)Qb zUW~2|WjvJq3TA8`0+sWA3zRhY9a~ow)O~&StBkG2{*{TGiY~S8ep{V&Vo2l<6LWsu z^#p0-v*t2?3&aA1)ozu|%efSR=XnpX$lvTeRdKlvM!@|pM5p2w3u-6 zU>}t2xiYLS+{|%C65AzX+23Mtlq?BS&YdYcYsVjoiE&rT>;Necn6l^K)T^lmE`5u{ zm1i+-a-gc;Z&v-{;8r)z6NYfBUv+=_L}ef}qa9FX01)+Aaf+;xj(mL6|JUzGJR1|fnanb%?BPPIp>SCjP|8qE5qJ{=n5ZGw?81z3(k;pzH%1CtlX50{E7h)$h{qGKfzC`e2o`*IqA#tjA z`Fz&^%$b9F*N`)U-#6>a)Z`55`$Dd0cfcs0$d13^ONrdCu9xcv_=n#WQo8stcz3jP9|2EvdI-RhJM3%Q%oM&!OlShM|0 z?gz?wHZSnm45njLtsz8PVT1S&jAlbKg5kVam$p16=EK@Sj4EP0OtH zmJDmdc^v)x>56Qg_wmYHz6h)>kl_h$>0@J!ypv%APmjZTAQVLy6Fu50RGY&JAVNhx zrF_qG6`x9MkT;1SFWo$)l{M$;3qUDn9JwE}z zRl#E_bDRJFii61kPgBybIgp8dNW!Cc1b*^YYk-#oWLJvtM_v^hQx~9?8LD4VFFxBF z3MlrsSC%f9Oupn*ctPL0U1fwfX?`tRhPD{PSLFPQOmIt$mDy0SgpNVvHS+f#Do>h1Gn?LZU9(KaN>Q_=Y*_T zvtD7%_u^^+{g`0VGzg(VZrpVQ6Ub5M=tI_p7T93R8@3Zulu3|#{iNcu!oiHxZ4Rf*( zfmiN$$ru(*_Zqn=`Gq#OuHRTSwp7uH_SokR&|)RuW5yo=Z|_4?qU-JU+tpt>!B&Is z@N(=SG;bpVc;AO@zbmMM zScqq1)b-ZQIrs={oD}|?6y{$HNB1U0^LsBh8JI&3!GBZxOXI<}&5-$lgkAaYqhOTb z?2vEnZ$-kk;*M_17(upJF3%+iH*s0-r{vttXVB2OUwI1s^+G(Ft(U8gYFXC}#P&E^ z>T@C^tS`Z7{6HT4_nF~n>JlZtk5&qDBl6r|^kzQYe`wq!C)n@$c>WOPA61NDFj<<6 zGW71NMMhwAl!U-yqrq2xrSFqRCI8acw7?}3j;ynxo*-b7Co;g5r%^j=H@9({PXXBf z@r>U>>N;E)81wx`B4f%{PB~MHka_);%kBCb(d|Jy5!MqJ%2p`t&@L)4$T2j&-WHvG zv3(uyA_gwqNu(k?jQTtv3dgPKRZoH8prxe7>pQBW5L&dpumS&5Ld2?(sCpJjvc4L5 zEnh&?91WVm)ZdTj=fjJ$pPDdgAttLXuke+?KdKxu{O|&5ja&cm#mcOFH76EH$Mk%BPmi+%gl850m|F9ACjH_VTxnh zwv8U!>Yk(6HdomuJKMHx+qP{~zg;=M-p1cDt}LC@F1DTgV%xUuBp^z%ZQ7Y@#I|kQ zwr$(C?c^fg+kXdcBPo*W7;Aa=?gwHaHM261tSo|N*%IlN+@pS}n!-jYcWHxTy%EF^V@8WwbYnEzAe!eBNx=p0@lU{K zD_2TsP~y&B@kYv1l8mRM3D8LjpKn3}AQ;Da1*I6A0gM0;9u6x;jR96lQm!-s5gKaj zI3T!AMY|Xqa!8%6KRSW&G^>vL8-Z~ppV8u(G`I`FP*ptDk^NP{c#}tHaYP!t2QlrM zk;gEOF8;{jtXoMBgC7l-KfMeH4vL44SHmfSXn2Y_r~#+}^W97l4d0en%8)$tpYIlm zX!vKT05nbN=IH3Zxmsp9^xy23Sx@VQ-nlyKX;`QO#qjjk8xLPmloZ&)-A52a#lsJ^ zaQ79&0HQ%rk#&caJ^bB#R1ZmU5!gvKkGjKR4 z$;1}+|GrX$*1z7b)?3R)YQsI(vyxml@UJ&rFCPA`UN)D56i*AHn|JFq2dO(SrsY^b zjv|1Nl)fKs#h%ZMR!L`;QF$Nh)pjSz z_toqo!HGoIA*qej2(l?MlG1kX$fzHqy=!0Be(&nVL_}u4rPu$0aDDkQaxGC-ClX&q zWgu(uz0rJuy*z*SE@5*G@KHYJ?cFJ2!A@?qqH>uCP3iyP18(1M_gnw3gGHeG!)kHf zbVk<~O(T)nL`9Qmj*QNuT#yx!pt=KSjMw$E5Ad3E@a2)e*2z2P?=fFE&+cI&Fs}K$ zWInz;D8Vl>EUo1VDI5=o@sA8mO>L^)wyctoKY|p`NUCRG%Qawg!ZRryWN9R*Y8zUp z<0xsq9?s|PKU%zPu){eoTVO)b-F*azh*BE>tEHMmM565JPe#rF@|b0<;l$>m1tct$ zl0lZ_L=|huh(B8;oH^sp!fTF(#FW{;d;~m7m`BpAd4bF zXhJJjU$1Re~b7vd*YV+h{gfr*w=2q(` zhJLfGBavD5?nPRzg5nb^d%y9+*&xf~;9<^(T9aN(c=OW9uX~rjsu&Di)OLqtv>SGw zL=r0uQM9a~w}od=G019sPgR@1C2*_P_Z^i-40#6HY@~cikhBDfCUvieZEjR9)pC-< z*_+)tkfSlp4UwVReW2s1XsYiUtUZ(Ko?$662X7H1RqOh)1;jU;D7_i2hvSN=i+xy- z5y&TrKX0pH8rETJ6sYkG=y>!A4NWeYX}RwGx`SWR^=4TQO?`t{%Id(|UpH^9`>HmP zpg0Fhd2$WqP>2U9v@;G9Ga}`L5fbI zZ;_;GqKZ`{ZtV ze8Mbis71;AMI=+jY;3|q2k`YuOhE)h;ThFCs8V*H;T!}}R&gZ7&{5_JLlAC2Ep9M~ z=zCv62qh3t1c*o!VL?egmEQkur+U|avs)JUx$o+`Jgkf#f}|7RAyy>ty6)?XiQ@m@ zG`w|V%Yd-X=mb{R=Kkg~Zt49`(BLr*d0n>vw+?`|?=BcXGucYUFD*P15Mc+ zaL{Ld!nry_au|Rh6Sv*vg6BZBJwX8qP#9dxm6TX1BRl}j(>lcgKx97dbRY;&e@iJV zr4G<&U;b6hgAee450oKBm*SpBKsOR(fQE%)%kI_+wb`;Ay&zFcRwz#EmnfZI{*d9 zfOin+Q!uAsO(&|6N+;)dHPV+-u-ygvgN@#nJAw-ZV09kg0(t2F)2IF!fiVR$0bAT- zFL!u#yOiJ#AOgl$AW8dCg`Pi+`TFY}@8+~0*;kTC(r!tQk6;gxj4h%FdHAt(^M3YvYj(!tOeN)+Hvj6+< zzyJRG?^lZfWuR#t!tUKP&(?%3v&Zd$R2YN>lB(Lq`OInY48%4%yTv2 zYe1{G`3)(PDEio5Y@-I5tUf`c%%OCJMtSW56g3iEg%3`$7XSJJHyA z<|7&N)5Xrlgv~%BO24eFd;Hd;uiK%D`EdK|quUeRZDqbh9l)%j%J#0lfrZumvA<_w zu&=AVvdChf6}eqh(bUz`(`Ue*p01{fBAcTgKyDYLs_I+YyJEk+rM@avU~>fB$n)HS zM7pfJydu`i%gfS<{PF94kZDv$t>06sAkheDzu40NJ$5CMW%n^Lls?8^p^QGWURbKu3ZduZQZ((s2? zzE`}<{;Zt7<$C|9R8A~DJ~@%x>TfP zF>TX8)@v|t)q4GjRt<}5s6hLHwRel7>V@&r-O|Av(yh;Q1A{E>Ir>p+%dHD|=l+lT zpr(Dg&>#Nu=!)6bCLr-ZS%|;h)Ij$+e@r8_{qO19QvDe=&1tmpY*0lcA^Cc-#{9fQ z<~$*<&P$Q<_jy#<$40PMofM7aQ}C=jphI`4kLg}Z7CIN#26D{-4v-_CA-LiE@(%{y!BzsU%gG`Q?sjLUf%qFSl0y)2#ae*+EI>s|i`d^V$Dn)qmzqRq6VJRY|{4ujsIU%#bnqU6MR&-1I_43=|5(6Jr;Jvert) zE?S|Tmn}Tv<-??sxV5@9t}3D=>YZ0JrQe$CO~|EY=Lj9RM&4svQHPQL6%pV5fPFiH zfXDx;l@~et{*{U*#c#Dvzu)|znDO7$#CRx)Z&yp-}SrD{&|(MQtfUz~n35@RLfUy=aqrhCX0M}J_r5QsK~NmRCR|Nm&L z41UdsLjWxSUlL41r^0K&nCCK>fdR-!MYjFg(z9_mF^C|#ZQw?`)f6uVzF^`bRnVY& zo}@M06J&_+>w9@jpaO4snmU;0t-(zYW1qVBHtuD!d?%?AtN7Plp><-1Y8Rqb20ZaP zTCgn*-Sri4Q8Xn>=gNaWQ57%!D35UkA@ksOlPB*Dvw}t02ENAqw|kFhn%ZyyW%+t{ zNdM!uqEM^;2}f+tECHbwLmH*!nZVrb$-az%t50Y2pg(HqhvY-^-lb}>^6l{$jOI6} zo_kBzj%8aX|6H5M0Y<)7pzz_wLkIpRm!;PzY)9+24wk2&TT{w--phDGDCOz{cN_ca zpnm7`$oDy=HX%0i-`769*0M6(e5j-?(?24%)<)&46y0e&6@HCDZAm9W6Ib#Y#BF6- z=30crHGg+RRTe%VBC>T00OV6F+gQDAK38Ne3N9bm|62tPccBJi)5{B z4zc^Db72XiBd}v$CF|yU{Z=M|DZ%-(XarYNclODlb1Kz1_EKLy(NSLCN`eUl(rBCL zT*jx@wNvze0|TSqgE(QArOZU)_?qH(sj#TwzElLs9q)(0u!_P|R%Cy_0JFQxgGV>1 zz4?_uq<8_gM0`c*Hh|;UMz~vrg1gQXp{ufg`hM_qU;U>+zmvc5blCLSq@PrEBSGR# z&8=2Z4uXN`F3p73ueD1l{s{k$WipAvSh5W7ABe?4)t;r@V?y`bNB5FvBuE|0VRTb< zM1Hn^?DSsJY+sX@T5xW=#>T9VEV|?<(=6|ge$X6Sb05!LFdjDcoq*gM(Zq=t;_)Le&jyt(&9jzR73noru`a# zN*<`KwGa^gZU3-)MSLF0aFag#f0<>E(bYTeHmtdbns#|I)-$)mJ`q9ctQ8g0=ET?| zdO}eZ*b_p>ygRTtR^5Ggdam=Zb5wmd{}np+Jn1d_=M`~P=M67jj})fH4ztb5yQqQW z^C|C&^LHAK-u+ooIK)yM)QM?t;|<{P;;{`p=BclzAN#JzL4jCwXkQB1Dy{=^KR`=~ zTrr)y7eiYBzSNs_DvO=4A6#EgGS-zY%Vi)N*Yb`U;6o}KR}dq{r9pT5wqZ@3NOE8- z9-(}D|Nc5732CSYQbL)!gPQ#RbD8BhK3dl{sUuPvei0tkvnJBxDEAYTesU8H$)g(Plra{VH(v3u^CO1~(+ zU0O7#)jaS4{NcwA+LuSm&VBcX2#Im3xg)W}ySNw%->orn1taZ&+d)}8gJTqA!u|5P z{yv?zol_3|(1(%M(EVU=cp?L`{Pi|ixk{U)*guFML3P!OSlz;zGA#T+E@8@cgQ_mv1o7RSU=Zo_82F?&&2r;WE z@wk}JHYEZ9nYUc(Vv~iTCa3u8e4q(yq<29VoNbKk|`mq%I6u)My=gPIDuUb&lzf4`MEA9^g8u z)vp8|$$HE9m_BTV?lOosIGa4jud=jIbw)O2eCMfyw2*S8?hjWw^nqws$O*M$3I1)x zR0PWFb3$ySOcGTe1dz%N0l;RPc`x%05FtT^f^j{YZQHi3thX}mi0$L;{uZ;>a%|gt*Lc?fQIaInRvldXKHIi!+qP}n_R;&@ z{zGshNs;7SKB_tBX}S+wy;_*We~JGR|0VugH7H<}mc)OF{}TTt{!9Fq_%GQ?flz3Q zIe`d)q*j!YfRwD36bJ;AA*PV%hg~RJQe{BXSIp^M0{v>#iiURq)7RCKYU1h47x^k$ z7C@1?;XUGEHh$H=F1nntK60$!DrF@kY2#7ow$xSt&AQl zvDr)@#;tP(T$5Hc8Ku|?)W(Y*D-htFXueB(VEm+yEz2Hj6D{Vh=D(QLCII(oZU88A zXLQZJmvzD58HZTImd{nsteVj4bU)*%X*f2x_e1(1^J-!$V!f%DLO6rgvRk1=Vr zHql<6X!%RL{@6AYn6{?>fZ%@3&^F*0G;amyl;-2ivd0pewJf=fSJtQu0LG1L2Dccd zE@}E!0{ftODM0%OA8SVSS!;Z>;4EG@mbrjoU7Fsdpns~a*}(Q_E&?d`X7yM#{gk?F zW$r<|GHQ_(7*Mb2nq?T?si}P?wlZ@& zUeBgPpjWY`Q;K15v(|RE3jwldjsoDB2sZe+sO#%4_d{vx#}>Pty)FAkqI+{*i#hwY zGHo?p%|8HLvNYZE3?q6aS*_d$EJL#&0Lz|q`y6~B(7ErMUR}1;)6cA}UDo4o1A-J@(wrN`)l4% z=-dzF^Ly7-ypft%OBpwAo+TEZPhXojGhu zq@-uHK6y$8rlZ*rfVoGiZSTKrbM8Oav{Z0ONA7yiR-RL)rHmf(X=V1#z{aZRn*oZg zQB!hO{{qF3oilM28(0NHo?GiUef#rFc!_`0La+S}mnd`GDHzX`K>Bfbf> zZxL(?!1OiIhTk_i_wF>Kf^!C(bBC?vF{LM|w-KyC6nmT)g@!Bz(qC6>RPcqs zm)88nFrvqXW^70^w}s}F*v3S${_l4!&dlMfe{jxxU~~@pRoT#jGeuS}b^iQCc{vLI z%8FLb8rtmb+cwj$9x?i*7WBM!La&NiIXoP{Yrha^__6Tx8vmzEm_CsBznrG;lx#ue zo{T2xSro3+l{Hoxn-PiM^7&oqPqmDTy!Xe=ea)To`JnA@ea^%gET}HoONMvF^@-}= zdX@fSSjTTPD_#Mn5n+5ZWzoy|-;USE&;Dzh2eVN=aQl>rLpIj?Gp0>z<85d_t!CPq z@K>UFtS%84+#I1_It$INn0@;=Gh?Gbu%U_5;>`awq1py(W^Dr$nV*&XiHP$>GdJVZ z^xY;H8(MU!$*5)SQ0*f$0~^sBg!FG902w08Th7^&sFN;PqelTYRAkAhUQ4IcP&Kid zE}4d*9g?*21h65RQvg_SDj74X4Lq}Y|2nLwCf%BC1AG&be9;1Ay&L<8o#aq z%G_C9GkpzsGy4A9p{=6M>DKn3xuPoeEb}WgrT;V;t;7LT#dt5DnO=hC%M<})M@0Q= ztgY0MRwC$k7C?dEHfe_`_$f6zD2;noWVW${D2oR7mUGpT2W_t1JT+~dY45=T~dA>BGuYz z6M)~UB~^Ga(}86i!V7peAK~M?kC$^SYtxkgOlqaQN>lRc;s5+5{!9Fq_%HEa;=jay U36xd~llU+3U*f;Sf2#yn0~N?!!vFvP literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp index 9287f5083623b375139afb391af71cc533a7dd37..3db28c64e57df8f66746eef7bc501ee8355e0d94 100644 GIT binary patch literal 4850 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp index 9126ae37cbc3587421d6889eadd1d91fbf1994d4..d5507d6a25c5f27b401a3781920c89dc273a9633 100644 GIT binary patch literal 6496 zcmV-m8K34-Nk&Fk82|uRMM6+kP&iCX82|t;zrZgL6^G-tksL|t{ImAEXWkJp0rV>W zw`XPA|1q61J(sw{13EnC~3#+KuT1ACWk zS$}nRU_>{P`@gKRt0aT|Q9$88G&*5sW>T1OE6mJEGqcjns4z4*oLN(aNnvjEayYqw zli^ug%{>T#K#CLDYDoY95Kv>=wr$(CZQH$U+qP}nwq3J#CPdj*;xG>^3Xhj`i+240 zOVhTkt>nA|I_FsEK4He)Ec*}4Hni;htY#Pb2lLPJ)4K9W{+irgcbcpYIG~^d+Bu*a za#!k<0tz}{hlUh%KmnIGs*nOMZxn2@L)tW`M*#(gR1PTMa=<$We9EcvMnMN0bik#6 zH%w#Oj&jl@^*|f65X)lYq9WsHV6!`hZ6sT5wsq>E38?@=B6)8sfJ71m0AwRgZDVb3 zjJ0j+wL7+L+qP|;ZMNj!=7BWZ8O-mmW|l9 zZQHhO+qP{RW6V9ie~o%k zb#QH)&$eybwr$(?``-RbkR(ZNn{1snuz?$cfnK0*O~Ez?l+7VfH#d=X$^E*Pj*X{3 z{gQtm34j7nH^oRhH=%EY@!ZC)tqS+Dk3Q*TE}+H*Xls~x0E0uaisnr)+yHbVER#6i z7?)K%4}9vw|NWQi_FpD&7swfd64jXmj;`2^5Hnm;I#cc-5j21aun8`~JNOO200xi% z1<+*uyC43%2mEgRQx{zP(5Jm*o326cML< zF<1cKiHK+b@WERvAFcJX8zUm3SH0=thyA^B-)cW8V$gaC6hRu;nSxYn-cloGeYLdZ ziAVfrS-E+2wP(DSfC#WsX8f?I)>LWmW#SbFzoeu)Rkg#E7HIlwRhL?^s_b7M|HGi7 zw2NB*opa$9iO9}p+Dcd=`o|G}*E%}YbO0F_2#!nsV5w!ZLrH%p7sQdPBok(gZTA5e zCErp9Z0`2&a-VH8LQvx(K?lwW>@S#gX!23cG3a2_$QIPV43QOUw=Zpp-uG|?lC#-P zm~H@2qI**Z?cPLZ-|%s*W7o3^6(QbF_bkb;DUKvWpX&~(V7&hdOy`f1(iCpdSI;qQuv zsCOa_9;GxCxGeYd?`~|N!RRUNsc-adQqbN_0qA$(y20s!832?+P5*zvO1sedJp37e z>E5KM-J2c`>_Xeq7&z0)P}mvk5L+HkeR4Teb`J3LRy_tr3VbPt+Wyy^LW>^t@l*GU z)l?PZ9y0>EEjOB>1bgLB-wTH++LjKHP6seBUsb($SEF4U7t{gdlD8PZdJbJE2|Bc) z06d92p*?gkA{bRUaJw4RN><#4RV5ZTzhrkl4AOd4$Ub7dm@VsER6-v z#)1hG^x&o%u}Kx~SFkqa#+^e0A!NhIR6Em9Zb}{i$YTUg9I&9-h+qhg8=24H)56Te z5SqvV>jgddv=q=8_XbifBna2bh*e_ z=8y!_OhhcO>XK)jD2fj;m+Y3vo^bwUF^}vDTgwx$!dM7BUO_gixo>DW6Rq zH?&0tmea2zVhmS4uY#FKuEm%db-)T<5CrX+;d4uAm@RW`;>w!b&{8QbDsYAueuSF5lfEZE5 z##eeL?nIUpS%iv^nz&6a-XGdT?cmqhke+Oq6Hsm+43 zVfD@lYg{IIbjf7wvlJ9u+EA2%dF9IIv+26D>`&u;+RIw$k z=#omn;k0Fm1A0x)KhNtAY0u%!rbZUI{RGvPm+LJtruLAagtS?&Oc_ZMK zayPB6A)rfWOOqd{1R0L6?4LrjW=56?H{lNgJR3`5m>H!fi_#{>)JJ(#1x$^ZAGD}; z09R&y(n9Ni)}Sp(AVAy+&wFzJimm8W^qsQ+SY-$> S-citX0z+&u$U$W}dDG%}} zFac(t88rBP&@|eZV-QCU`d;5PyaT(PREls?LLuY<^WRRFMKnXC63W%~5R*5skv|3K-o*9$7VCGy(v$YPY1=KDT5+L<=qb#lJ`;zDi$A zc-)DZ2?%B}NTVS*uoA;W6J{&Qxt#OMXALUvwtZN^s)je7Nhy3#pvpbxp4G(xuqhz$ zRSb>tDpU}cgl8#VNG#FouR}QTIi1YU`191qnzV99LiG{I&rBY8me$C}C5kdw+dG`M zczuWReGfCY8=lKi?Ih+$0-Nc1X=da24ZtBGz;E&-ZT5lmS8^AENN6pWC-<)b_%T1E zkrB8hT|jH}eG!wQd^b>6v-b^tw{r2lqRiv!b-bykcf>D|tt95}3eNr(V6g&#I&g>_ zPo6@Q;HvZFQD&FT2r#H@HM0g4Axo>rDL8I1gD}!wOX!Aa*pu@uLu!na0*JyL&kF$V zQ2?%k)5r=r3jhB*ZeK#Ss$JmpfC^$Z(~#5 zIXLbccaFi}0AO|CS47sZ&+D`m3EL!$cuQAvc|^Ola?#=T9-^ren|R^;UP}jwfs^iI-zU(yQA9|GeI^m9|(@xwqQD?pk8!~2d5DLkjs(5|8Ilbv6rSHt`m^YgZ2(}vyb}<3?lN~Qc?BJCArF;UXof+~UlnOZ=IN@%+9N8q zOm9sqC(r;j#;0u}u*VE7Y7V+bhXt;bpf_e^QS1OhYU#$ufzT=)!cm>2cav_ettpn> z$#=z8ee-oHBa__S5@zzbX=dZtSTJNj0e0kJqARn<^tdFg#5%oIzY>+)BHeu!kV%WI zf6zh4TH{SL`MKEz3qHojF?53mKx8W?dFKFtUT5obP4vkND64&gXVzCbHEZXXIR!N2 zb1Ehl1CSTyRrsXU$U%!X}rFm&fppX-o^YZB9aA?{RiMwOU&MSBUrRrGAvI1UhZ{3n$}~ z4}9MV2NGk=!Q+DBtF+hwdEVVlG-gX!0NN@-K+43(|HeX059cg1x+Y3lgW<6-wqNX< zZBDBVB(XdSm07U`D1XFoQm6zu-W~R-jPeFVYglfw;{%eMGf8`qB_`S5zJ*e(-TSfi zEuCVszG+e2KvyvIEeir;${nrDj$SLnCo!lMA*~x91bA+?K0H92QkVXrv+)Zixqsn} zQWHAGT}&&zrI7*eT!wBy{t2K%XiITFuDX~Oe`e{Buf>HXH77qH1P0__4Fa%XG^o^3PUxiAH9bkFypjG1IROV)5>9-D}5DM@WgUk=N zl)M|p%wB>`2iO307Y=|aCFl$Fvas>)$M_U|h{SOn)yYtnr9C;tK&z_CApTq^91%mG zEKG$ydZrER5zBU&Q-xo#98&$)O8^rOz>pGjOe|SB;={q!7c#}KP@<2h5?m5P>ga{K z)WVKKc3@ak{}R0p08H_xQF`a<@tKfu8J?rd@!mZK`(=L#a|p@tmkSfwFOdQ)-8mrm zea1|oUl}yP4hR0er(*x{;Dr0{^?4Uhw6>8L_kifn%_;M?Bc-+DTL7T>S0tFZX-t1^ z{=@|P6~-E#hO(AmWU|Rx9ARyrsy%p3X>@nt8_&Fc!U@2!TzX;hE~ zpQ4G8dE1flv6W7|(EwzCR+8<^3CoE|)`&p>1F-vmIzy2tRx)BmbSYYk_SA^rOh62% zuHc;HRc74UBFDRB0>hT+f)*7b8_-R1OkB^9-*p5S*b!e56@0tSQJxWpRw^9-DLU)6 zKMz8zDdpndR(Y8TFSbRFx6Ak!v&vTdI+lj1Yk*#oeHjs#;q+Kbd8bz>x+t(@iJ9;4 zVvVG#5T;BOik6E6*edrkAS3g%f&4S?T2Yl)9xqmt3}it1Oxp*ac~-fWT59!Wyf^Rx zJNLx=TVb>N^>b^9=3x;qZ;`W3McJnyXPnM;xk$m^#tn>1h+ zb4LlG-H)APOOmDfm?nJ#|1#OnO>_K9P%?h(mN~X08Q|Fkz>MS6Xgzc7ESGl|j(u3k zmJie6H4a4#$InbvZj1jTNpFU)SkjQV-Ngr;Xysi5@r($fdyepFSiRhDLB0Aaa0dL%|C7KS?jF}_9; z)a!*n&gKUcu^hidk57)}*ZT(ftczNiN2Zn`m#cdKMjilI!JXxy>OS-=PnYrOm9EL+-ra4K11Ji+n_VC56#^L8)s^kqid6#%E(gbE-Bf zCNYr9aQ^LaoG+FiCLE1lk3UcY0Zy~5m=EKwG@G%iR{3RSqiwg)L4Z!=UNe(dNIwUj zC~Bf&j{zbcvDkSZU zmfGCJ=vVt4nuJ3GVDPIGE-eagO^98!fn=(Z0rtN0N$>kRud3ZZDj{~&TMG+Gc-C&X zFWGemfMNoSB%a}RZS=^r7Aub&xioi4lGGT0oI0S8e8K97&!@-xvpfKFngo^%bN_Y4 zG#1;U%kurow>3Mx{H%X`I_FpV916e(q?VWK5Fi8?Ng~VD+9+L{+U=3caQ)Y6@0~f% zDn|-h>GdbIO?kMeI{?@rKnci~v%IK{*3&R)ua9aEpc(pevjc!meKC~HwEN@S-L=5i z`?Kl*i6nvlITxEU(bPe9c}y4-rKQXyXcor#szQ`GKyaC1c-+B5Gm0N|4ZAv9ww z_y6XO#PuB`RNCv}$mRIM@_=UIdX&8r050=p_E1*P% z%QM#4Jd#tLR-euL9#&_)$|Iz>wP5*dnagBFbsRQ6mHU11u zZh!Jzpgf_Pw@0EUxUYQ`_6Cbm_`=XL{#KsXy`l2n>O zniHpgT66oc@)nXZOGM+W_S4fWCq6=wb~Y|CuXK93e8IBunOc)b%7)i?&Y;)%vx-Ut z#G@~I#KWKa=#N~pYbiI5i~7fz_5H5beB{y3efT3N;vP*vqMG_=0NFioylcX&6ydU+ zEeWQEj_h?LlmPfb0=%iJalGG-RPVJ(@T#1@q`NDkv$Va}t*I_UJ z8gus0++3zFRknTt#M315Re3xzxwSm0SUqqL?noM;^&|Gs^9+V&+qKSC{z>|0w@4C4_!9)uCcVT zz;EizRCor?=n5~`;jDm4gHjKG-bwrwB_PQkN&XeP|6R1jh+p@wcYX>$0jO6Rpju%T z+PtD5zgw75mCg&YKFr!-u|BDeo!sD1Y4_3xT>3!NS&#$CvmytRXTeY$Jb2*1OONd? z9UA1EadlEJhIV$S%SgfbF-VwGL)N8oUkj~Sy)f~r`LW|Tm!UwD#`&r@Db#0HsP)T| zE*n!5ui%gnloa2Hj!VN08ogCH#A4mU}enR_!cGmIYQ;qwfchWtFEXL)AK%*;=j znYne+hS4EMy3S)C*mZ1KI>!+)0V@9!N6H$Y}~MJ{rYuf zz^KljIWvFi-?#?V@LPR&c6Nn{!=XM z>}-h$S76;$H{E{Y%@^zlmOl^efBwa%UU+jJD9UVukQ3ti_kH-?H*RC0?M1W%FCvMB zM_+v6fk$6X2sx)-p~B3&Kl{nscK}pNLM*qjtpaf9>AU{-iPKQZR8yCg!TY}Qg*(;) z)gdvCcB%kppZc$VdvsK@)3l1{&DG!d_6OHOS`y=ITLEVu`unSKA2E%JD*DVX{LJ}K z9l>hMRDqxQh0lnpGHpVYneX}eA3Pt|2v%=q;rt)``R|#bDyB)OXY&vI_@|*}h}G?^ z@aZ4_!7cQPX`!fW_?{oT1NTwHs#l5L-0`E|y@48<3Q^HFf8=Idi zpJYD%1MkII!~|7I^WGo)IF=?{>ACnjJ_WUi39C}!Q{QnheVJqeKKqq5^o5CBde(g9 zvw$X6^jz_^E2$wSw4!q5*RG(C2_^XO$HBn_55vbl44OnTTRwRaePP0vo{K)U1#99& z<>rq7V&V(<&@I%MFoN5zrY}sz=(*-L&}1QQ*a%`u25h{cFj===17eB_uGuzG&byQ< zrm8BJZl4r_E$3k|Wo6FW0-6M7>qac5uFQsQcmkLWGfeH74S3Z_rJ!jgN++!@i=HW8 zkyjI(oPH-+-N#Qc^-mpNO`bc6r=2-<%&Wy5K1vfFJB(L_IkpS6fY^NmuL8qsgj>MD zn~BHH9WM~32_3vd=W&B)k7F9q%stJx+b_L_X-4zr^LVUMCmyCTA3sWtkvsmME?Xiy z?xOSfB=_$oY06~J-HcCq&)qcW{j;uP;?Dm}=hkq?zh&n!;m((-G-u_t|6x399Q;>A zgNpxoJNj{u|MFDH7Rhq@FCAl0dE|ddnl!oh9{Lq?@JDoR6L;C941IK`ISfdE$4S zE0AUQ8+2|Ncl_q5QkSp#AODp~(^mfP&%Au@@|TBQwoP`UU+V{6u8|)6ZA{~uKmQ*M zmrMTDU8S~8Eqi{^v0Ug&5Upcm#y7Z1(RbgZAG8jB$eRwCspQ)>5;U)oGZ&E5aeR*K z8Yt`Y0$G))Yd(Y3KH}tA4`-_QmNke5hU_|nq=xtyjwW(_o?itz>B>WM&^63bNdQ)k@-IgDHW*RW$Xo9#RzrTrCn7L2H{9Amq|qNg@#eZY=|P zCoI?2s+L)zsM%WX(NbVEY^`C>lFjIBYmJ6@DKJ0ZT4&F&WHW!dwa%QzOG!?jY_2(S zDcEzZbz*2Q!43|z))9yOP9X1Xt%DXzwY(3tl-TR=Qb_MbZYRrooh;dYYmS!U_as1(=YVB?Q_A|tNu5Ut&_q3jbfDM zoFxT^uEuH`nX3*sB%K?GuHUkweYReBwnHqh3P)~`+s3+Tj!rDA1e)8vuBv5J*IsxC zkd^~b(aGzArj08{>cnzOuy04C+C`}gb|Yz-1avxeWzev3NzcHbz_&4W@QCr$z3~w=8Ua- z`;vfG1~BP8CyLb=F7t1am~ph_#|O%$khSJ9%Vtcn)YmpgQxF?xM^_Vb+5fnpB^W0I`f%X8gb9#X{Q-yJG0{Z56aWeI&zPxnf5pdJA38bM`cYnS#x)% z`n1tFf$i)W-hGm(f9mde^=X@NcV_lFb=P`4&CI&H=IArijGwdCk&X@uQ$5xmj!~^? z#$ROCI)V-~t%L%GS#wo@U27ddR`4`3)WoB{R-4snfNrfee|kI8^bu#yDgYqOwas9# zmcb`3!kRJ`Cr=_tq)8aMt{aGtUZsqwVlj6DgCGre>AEt&x8H_in!x@uwgExIh|-mA zjdaC(29~CTVSaaF7HPbql&*9Uo8P@f)>LqCXclr}peS7_1BQ28u9PO8Eq1@`l3q9o zkfKCaO2?T?ZyA6loW<#9_c^O=m<&h}CA!ineAD@=(gbq`vyT|tiJ6#^B1$P;;qax` z55k&Q?wEh#87niLo*+n4L@65J(Nz~=Ya%7^(miLb(E>A3B@|Jjl;FU&D>o|9#7PJH z?|ago!o;WC^h=|T7PVBg(DAB}72cyUS zb(f>Bwbr!F1eTCO5fpj<{PqhY5>143p?~5ZA5H40);=@M#MYvrB6gqHbU_!GSY??i z%s=>-ciA4*zOOZHds0a(kWewZ4h(k8h(ua7HX)Au&mY~H8KY6(_cb$_&fA@QjIW-*heP3%$d!m5^AdnT}`12qA^c@!g3DOwZ5WwE2?)-yU z!)Vx#Mtxt?FzFTwK!77sy7)sMzUd->w4^bxtpM2j!b1pjgyk zGKwWGeb4)^zjy{9Es&PU1}gwg?|J#L$KJB7ett9@4M%-nGtIQr0>Fl@8-yh`-+1ed zS6r}(MeSvgSoFmH*_WPu@i?}!AB~2?;i&IxrkNg~cQ9Som98tcq)k^|eeER|Zl77t za-TVUc;DNvzVXJ%w52+#weN?+;i#{f#!Oc&z?81*N>^e~ltRS%ZI@lR{rs()HmqG! zx*}ZrI-EZ}ckJMiy>A^oofwDfC~IH)z8{VHKGT@#E5I(Ll&+MnMCl>~AV7+>Gi%mF zkU1QlKASdR0B80!YhP<$Ywi0?W2Ux45oPfxv9QolWzJPD^weBfvo4SONxP35106sAmh(e+vAs0GboFD@PvNs)jNPvarhW}0YliZEg{Gazv z+JDIpoojRVPr<*C|BTq<`6ga{5q^8^!|0cxe=rZ!zxH3%f5ZO0cQ*Z<^$Yt2{|Ek0 zyT|*F+CO@K;(owBKtGg!S^xj-Z~rga2m6nxKl9J=fBSuNKW_dLKWhJKeg^-Xe`^1? z`TyJj)8E!#>_3Y?uKrwqq3LJ#SGU>AzUO|6`nR^u&3FNN_jGOc zw)Nw`wr3yIKhgcee6IaN=ws>M{6677%)hPwx&HzC(f&u~&)6@b2kNRzBDQAP0*H73 zq%McOmRk{B3i47qRe=DA*$&odrbEJZ*pV9XXa&p@wlW~@Yfs>V{yiTtplMhgM*-Bz zsSnlq&pG;z0OUN%$~$3=g1UF+G*>+17eRbBf3=y79J}KR8owon@$1Z7MIrvvWWH)34nK2SD)GsrJ{l z1Cl#oVo3A8qY3e=aF)qzms~FG#2$LzT=gs&aVMOj>(%{y<&O0cG!nCiESl~x=^dF{ zKvj8F1K8Ng171wwM5Fh4KoQw`_c6#y$(5cAm7e}~nJ#A*fx+c9;y#&W!#VukR)ugk zKp3=+;Ut+IYn%m+r4d*<`L2h%aDnX5}^!5R|H;(34AoVWjRx(msBZvk;rCI*|~ zdOijqI@9Z{Vu!~jvHW{lBa$rnl4+!s_5sfK3bCGk-B%iDe&@-}+%fOKU|(9?V1 zHE8&@4z)Kx!RAvAs z!Wic9=o#(bg?kc-G68-m(jZ`^=XGUXb)}t(%&~sjFnV^sEX%hSy6UKC4iOhgV=BHV z2w`4g7Y=s#Vu2B_?#VQ|hP39@eArgfX>-0S+dd&^mx0*wp}>)x;c4RUgxz%;oNe?& z-7-lJ@Y^2^C;=qJsxx5|xF)*pTGhch2B&kxtn;f!7=gznk}I3}Dh}(CoMXgA5-p&kS202!l?!fT3t|HG*rIP~mS* z$Wjo}jq3}z$Qq!9yrtd3fM0N629ZM?LU$nv@Tv9b7I;D|;0H2dsA~g7Z7zp1| zB)XmrkMgF6OQr|R)HHD^TE{Y#j!~SR?b`Xt3Qs`B+x<hxexYeAjMUWdZ-*n9%(1)Wb(n2U<><7&9dwGJmrob)4%H? zlQ%z+L-^$dFhhH|@u$%97Qz?*Ynh2VG@q|?8vY&L74&fs&_b&3$x&Oyjl~LQDRRap zJU4U*R+(2Dd!G+lh8!V{pT_UJn+^1Qg6$` zqkNm(a#hWyc6SP+p5=C4HL8-m`pO`5o~`-LI?_h5CsH?F_%?nDodmz&pWR20WTpJE z?N|wSzLjMUK8E)a2tI}Lf;+;*M|h3Y(U#>)g1>zk9|Hd}oZAa2 zLYBWBoSW!Ts!RwXr^8h+U*@{9{zqS^iH)Op<;r`Uw~nc}<^$V~_i%$GFjaG?X1@E|M`h)nekvFKt`Dh-f>@|0-`Xoq)o` zx;JmzDfOV9qCx|EVpogEe0LK~tGS?5$$L_i6P$P6wIsCQaP_;d{{N=iV@+8LI}o#( zvo*Ejy=IIn{rdIQh1&q-{EuohpVOjJ^Q3lD*YTp37$^RRgn8ihpdu5{Ct%5-KO!VL zcNB6dUajXI9jkm-P|i3~GB-A(X`P1Oqqb$tcku)UJw0w3GeUijb__#QT4j%64z%EeB7S?jlWwx_7&+EEvB|6N=kV}DwnyAlX=?j`) zmU#!$*^@NIu#n_d7;WoJV@*Fbv9|yJO4;n|BNF2xy(54RyB>t~8lUOUW$&2%Nwi1y zx6JxW88>U2$#qhl^6KUbtmg9}D0o5vYDT7kWJthLGkpGnN4T>{St^_EU>4;DmLF9o zr|LqsA8_MoNLQ=}w?8u!ziSZ@PC#Y<#9uJFo-ozVo6D;<8j^1$c|qAE3ZTE5i~zmE z$BU5lw6l=EWsg^y^;8>r9qH{xfL|~PZYK#md$zZ0?o11gV<*WSW~cgy2GYGQir%wf zt4iW8D+;s*;RGrmd(-T<@2&j(Cb9xhV*l-x`TpK`xq|7p?5R%5*s!69?2c!cC*VY* z2DE^9pvOPLU!1e}wA8S8opcTJ3`NB>hY=JQnL~QFXR4K8A$BqJnoEB$wn-%u@E6Mh zCfMF4kusv3N!(aHC}4)Xs^xoOwXd%e^6pi5|DZo=Q25j+6HlJ^7FodH6y1bMROR^q zGu6)fopS`h%Sw<;ZH%TEPf+#81-#_v+@8nlR0jLcIDKQtLleOC)6yLZgC!D9X3GgS zohwU{v$jl=quD#Go^hB{`@Qw*a%`(^jyT~=q^bWgGzRj;|12J55HWdCWV}EB|K=%N z3Nq-qxJJ`>^|1MNN+q}zTB&ooE3j==AgK@^UW<^oSbeALa2peF)Th6{@sj0KyMNHZ zksk1+MXN2tv+22A%cQOGpS9)77(uP9mh+!5T5ERLvF@b}$+WvXM45Z?-kCa)fb~f1 znVbTD$Gx-0Zxc`0D@YgHakge6SL0H`-vN_x?AP0>iGH0_EE&=v83hMJgaKAI0jJXm zVxVz;X<$v6WW7}fxROO7vr#YLP;;lij5VrX{;>7kK6TtOH&6|Ar^xo>00%+u$C4@# z>!jOt6*3><171+WxoZnKDTzJtDRw+T030;yI}~uV@9fCnei^I*j>Bp&mzP2d=FPb_ zCM*l_+$LDR3B*a!A$g#>xsrZvw0lckxmMg>0aQd7tPyN=t{dgXb;Ie+T8{fZH=gdu zM7Rg9c(kg(Jg0?ARRRl=AONFKrvFj)lTY$KfT%6^6s`mk*ABGhsce*LsoD>K{z_M2 ziPpnu+lw22PfF!CoId^6n*G4H(Ix+#+N{C(da7t1BYMGEaE#PdpOLxsVD5riQXHp@OX;`S`8VnpM~)I920w~<3|mo0 zf8~Az`*?2?H&gZ&*K&bRkV@qzvMlRHXys8*Ze2+1c?5o!^+$&MHxB@4Ee5cke52R! zmn7AZtY6ST%ixgU5)%$%QcwHj7Es-Qu^kLAPwy%7pGBw_4Q9#da^W2$}axNHr03)_nw z5?yuNmXrI5HgS46)c5&}B)Tts49oU92>3xBLLy}FMUW=84DQbVq^;7_e7|(Sdz|&J z73N+M`rc2rt*oSWu#7S{*s~nH6HRHJS1SmzeXk|;CA)FI4bat3<%}nkB%;;?=F>B7ms9QSxv#@+69;@>QaR?REYX4&)=itG>rM{<{A79Rmk)`5ON#GL`*KX%}Ihk3w(RtM-WLt z?f&FLF}4N^yE!(pZ&Yj&Bc`~K0@4_}*0Om?wN|}4WJ>WL;G^H2*QpgEkGA~OET-Km zkwz|5{6dnz1U<2Pe9DNL>3g5FEIvp1jzP&2K#z~j%g6!7B;^zF+o95?fV{3mnB8*RMhCDNp>Am-3e@jNfMj?jHV$MWjk!DDKP zkAz$Y?Sr)!GUOX}qTQ5aMh|wq1uq}~joWyKl=b_LboM#wi{CMuz5x6BKlA-qy++cM01D3b7`uD z#l6M4pI;JCypO8JZ6?U&wNxR!{4oB_ zlV!x9+-&Qy6{%MQ{~yoZGkKiTSC`YS_j22~G;xUV855g2&C(zm^V!(wpcm@zn{%!g z4}JGo(sGZ1O~to-}le

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s From 4dbe7f1fa8ce949d10821f9ec7092058eaddef52 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Tue, 19 Aug 2025 17:25:26 +0900 Subject: [PATCH 03/10] =?UTF-8?q?[refactor]:=20=EB=82=B4=20=ED=94=BC?= =?UTF-8?q?=EB=93=9C=EC=97=90=EC=84=9C=20=EB=9D=B1=20=EB=AA=A9=EB=A1=9D?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=9D=B4=EB=8F=99=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/feed/response/FeedMineInfoResponse.kt | 2 +- .../com/texthip/thip/ui/feed/screen/FeedScreen.kt | 4 ++++ .../ui/feed/screen/OthersSubscriptionListScreen.kt | 13 ++++++------- .../extensions/FeedNavigationExtensions.kt | 4 ++++ .../thip/ui/navigator/navigations/FeedNavigation.kt | 11 +++++++++++ .../texthip/thip/ui/navigator/routes/FeedRoutes.kt | 3 +++ 6 files changed, 29 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/data/model/feed/response/FeedMineInfoResponse.kt b/app/src/main/java/com/texthip/thip/data/model/feed/response/FeedMineInfoResponse.kt index 9a6777f4..5417e0d5 100644 --- a/app/src/main/java/com/texthip/thip/data/model/feed/response/FeedMineInfoResponse.kt +++ b/app/src/main/java/com/texthip/thip/data/model/feed/response/FeedMineInfoResponse.kt @@ -5,7 +5,7 @@ import kotlinx.serialization.Serializable @Serializable data class FeedMineInfoResponse( - @SerialName("creatorId") val creatorId: Int, + @SerialName("creatorId") val creatorId: Long, @SerialName("profileImageUrl") val profileImageUrl: String?, @SerialName("nickname") val nickname: String, @SerialName("aliasName") val aliasName: String, diff --git a/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedScreen.kt b/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedScreen.kt index e1ee0d57..feeb0980 100644 --- a/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedScreen.kt @@ -68,6 +68,7 @@ fun FeedScreen( onNavigateToFeedComment: (Int) -> Unit = {}, onNavigateToBookDetail: (String) -> Unit = {}, onNavigateToUserProfile: (userId: Long) -> Unit = {}, + onNavigateToOthersSubscription: (userId: Long) -> Unit = {}, resultFeedId: Int? = null, onResultConsumed: () -> Unit = {}, feedViewModel: FeedViewModel = hiltViewModel(), @@ -226,6 +227,9 @@ fun FeedScreen( modifier = Modifier.padding(horizontal = 20.dp), followerProfileImageUrls = myFeedInfo?.latestFollowerProfileImageUrls ?: emptyList(), onClick = { + myFeedInfo?.creatorId?.let { creatorId -> + onNavigateToOthersSubscription(creatorId) + } } ) Spacer(modifier = Modifier.height(40.dp)) diff --git a/app/src/main/java/com/texthip/thip/ui/feed/screen/OthersSubscriptionListScreen.kt b/app/src/main/java/com/texthip/thip/ui/feed/screen/OthersSubscriptionListScreen.kt index d34d19af..27b1d21f 100644 --- a/app/src/main/java/com/texthip/thip/ui/feed/screen/OthersSubscriptionListScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/feed/screen/OthersSubscriptionListScreen.kt @@ -29,7 +29,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel -import androidx.navigation.NavController import com.texthip.thip.R import com.texthip.thip.data.model.users.response.FollowerList import com.texthip.thip.ui.common.header.AuthorHeader @@ -42,8 +41,8 @@ import com.texthip.thip.ui.theme.ThipTheme.typography import com.texthip.thip.utils.color.hexToColor @Composable -fun OthersSubsciptionListScreen( - navController: NavController, +fun OthersSubscriptionListScreen( + onNavigateBack: () -> Unit, viewModel: OthersSubscriptionViewModel = hiltViewModel() ) { val uiState by viewModel.uiState.collectAsState() @@ -64,14 +63,14 @@ fun OthersSubsciptionListScreen( } } - OthersSubsciptionContent( + OthersSubscriptionContent( uiState = uiState, lazyListState = lazyListState, - onNavigateBack = { navController.popBackStack() } + onNavigateBack = onNavigateBack ) } @Composable -fun OthersSubsciptionContent( +fun OthersSubscriptionContent( uiState: OthersSubscriptionUiState, lazyListState: LazyListState, onNavigateBack: () -> Unit @@ -167,7 +166,7 @@ private fun OthersSubsciptionListScreenPrev() { } ThipTheme { - OthersSubsciptionContent( + OthersSubscriptionContent( uiState = OthersSubscriptionUiState( isLoading = false, followers = mockUsers, diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt index 85c3cff7..c91a228c 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt @@ -43,5 +43,9 @@ fun NavHostController.navigateToFeedWrite( // 유저 프로필(피드)로 fun NavHostController.navigateToUserProfile(userId: Long) { navigate(FeedRoutes.Others(userId)) +} +// 띱 목록으로 이동 +fun NavHostController.navigateToOthersSubscription(userId: Long) { + navigate(FeedRoutes.OthersSubscription(userId)) } \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt index 906166ca..3aaddb4d 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt @@ -11,11 +11,13 @@ import com.texthip.thip.ui.feed.screen.FeedOthersScreen import com.texthip.thip.ui.feed.screen.FeedScreen import com.texthip.thip.ui.feed.screen.FeedWriteScreen import com.texthip.thip.ui.feed.screen.MySubscriptionScreen +import com.texthip.thip.ui.feed.screen.OthersSubscriptionListScreen import com.texthip.thip.ui.feed.viewmodel.FeedWriteViewModel import com.texthip.thip.ui.navigator.extensions.navigateToBookDetail import com.texthip.thip.ui.navigator.extensions.navigateToFeedComment import com.texthip.thip.ui.navigator.extensions.navigateToFeedWrite import com.texthip.thip.ui.navigator.extensions.navigateToMySubscription +import com.texthip.thip.ui.navigator.extensions.navigateToOthersSubscription import com.texthip.thip.ui.navigator.extensions.navigateToUserProfile import com.texthip.thip.ui.navigator.routes.FeedRoutes import com.texthip.thip.ui.navigator.routes.MainTabRoutes @@ -44,6 +46,9 @@ fun NavGraphBuilder.feedNavigation(navController: NavHostController, navigateBac }, onNavigateToUserProfile = { userId -> navController.navigateToUserProfile(userId) + }, + onNavigateToOthersSubscription = { userId -> + navController.navigateToOthersSubscription(userId) } ) } @@ -136,4 +141,10 @@ fun NavGraphBuilder.feedNavigation(navController: NavHostController, navigateBac } ) } + + composable { + OthersSubscriptionListScreen( + onNavigateBack = navigateBack + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/routes/FeedRoutes.kt b/app/src/main/java/com/texthip/thip/ui/navigator/routes/FeedRoutes.kt index e70faa67..437d700e 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/routes/FeedRoutes.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/routes/FeedRoutes.kt @@ -25,4 +25,7 @@ sealed class FeedRoutes : Routes() { ) : FeedRoutes() @Serializable data class Others(val userId: Long) : FeedRoutes() + + @Serializable + data class OthersSubscription(val userId: Long) : FeedRoutes() } \ No newline at end of file From 9c970187c7469ae2489fb2eecfa4d89f9674235c Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Tue, 19 Aug 2025 17:39:26 +0900 Subject: [PATCH 04/10] =?UTF-8?q?[refactor]:=20=EB=9D=B1=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=EC=97=90=EC=84=9C=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=ED=81=B4=EB=A6=AD=ED=95=98=EB=A9=B4=20=EC=9C=A0=EC=A0=80=20?= =?UTF-8?q?=ED=94=BC=EB=93=9C=EB=A1=9C=20=EC=9D=B4=EB=8F=99=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../texthip/thip/ui/common/header/AuthorHeader.kt | 11 ++++------- .../ui/feed/component/LiveSearchPeopleResult.kt | 2 +- .../ui/feed/screen/OthersSubscriptionListScreen.kt | 14 +++++++++----- .../ui/navigator/navigations/FeedNavigation.kt | 5 ++++- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/ui/common/header/AuthorHeader.kt b/app/src/main/java/com/texthip/thip/ui/common/header/AuthorHeader.kt index 7cd96399..ded4c777 100644 --- a/app/src/main/java/com/texthip/thip/ui/common/header/AuthorHeader.kt +++ b/app/src/main/java/com/texthip/thip/ui/common/header/AuthorHeader.kt @@ -45,12 +45,13 @@ fun AuthorHeader( thipNum: Int? = null, profileImageSize: Dp = 54.dp, onButtonClick: () -> Unit = {}, - onThipNumClick: () -> Unit = {} + onClick: () -> Unit = {} ) { Row( modifier = modifier .fillMaxWidth() - .padding(horizontal = 20.dp), + .padding(horizontal = 20.dp) + .clickable(onClick = onClick), verticalAlignment = Alignment.CenterVertically ) { if (profileImage != null) { @@ -98,7 +99,6 @@ fun AuthorHeader( } if (showThipNum && thipNum != null) { Row( - modifier = Modifier.clickable(onClick = onThipNumClick), verticalAlignment = Alignment.CenterVertically ) { Text( @@ -139,10 +139,7 @@ fun PreviewAuthorHeader() { badgeTextColor = colors.Yellow, showButton = false, showThipNum = true, - thipNum = 10, - onThipNumClick = { - - } + thipNum = 10 ) } } diff --git a/app/src/main/java/com/texthip/thip/ui/feed/component/LiveSearchPeopleResult.kt b/app/src/main/java/com/texthip/thip/ui/feed/component/LiveSearchPeopleResult.kt index 438aeb9c..07978b37 100644 --- a/app/src/main/java/com/texthip/thip/ui/feed/component/LiveSearchPeopleResult.kt +++ b/app/src/main/java/com/texthip/thip/ui/feed/component/LiveSearchPeopleResult.kt @@ -34,7 +34,7 @@ fun SearchPeopleResult( showButton = false, showThipNum = true, thipNum = user.subscriberCount, - onThipNumClick = { onThipNumClick(user) } + onClick = { onThipNumClick(user) } ) if (index < peopleList.size - 1) { Spacer( diff --git a/app/src/main/java/com/texthip/thip/ui/feed/screen/OthersSubscriptionListScreen.kt b/app/src/main/java/com/texthip/thip/ui/feed/screen/OthersSubscriptionListScreen.kt index 27b1d21f..eed1ee27 100644 --- a/app/src/main/java/com/texthip/thip/ui/feed/screen/OthersSubscriptionListScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/feed/screen/OthersSubscriptionListScreen.kt @@ -43,6 +43,7 @@ import com.texthip.thip.utils.color.hexToColor @Composable fun OthersSubscriptionListScreen( onNavigateBack: () -> Unit, + onNavigateToUserProfile: (userId: Long) -> Unit = {}, viewModel: OthersSubscriptionViewModel = hiltViewModel() ) { val uiState by viewModel.uiState.collectAsState() @@ -66,14 +67,16 @@ fun OthersSubscriptionListScreen( OthersSubscriptionContent( uiState = uiState, lazyListState = lazyListState, - onNavigateBack = onNavigateBack + onNavigateBack = onNavigateBack, + onProfileClick = onNavigateToUserProfile ) } @Composable fun OthersSubscriptionContent( uiState: OthersSubscriptionUiState, lazyListState: LazyListState, - onNavigateBack: () -> Unit + onNavigateBack: () -> Unit, + onProfileClick: (userId: Long) -> Unit ) { Column( Modifier @@ -119,7 +122,7 @@ fun OthersSubscriptionContent( showThipNum = true, profileImageSize = 36.dp, thipNum = user.followerCount, - onThipNumClick = {} + onClick = { onProfileClick(user.userId) } ) if (index < uiState.followers.lastIndex) { @@ -153,7 +156,7 @@ fun OthersSubscriptionContent( } @Preview @Composable -private fun OthersSubsciptionListScreenPrev() { +private fun OthersSubscriptionListScreenPrev() { val mockUsers = (1..10).map { FollowerList( userId = it.toLong(), @@ -174,7 +177,8 @@ private fun OthersSubsciptionListScreenPrev() { isLastPage = false ), lazyListState = rememberLazyListState(), - onNavigateBack = {} + onNavigateBack = {}, + onProfileClick = {} ) } } \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt index 9aa93b05..f32d21a8 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt @@ -147,7 +147,10 @@ fun NavGraphBuilder.feedNavigation(navController: NavHostController, navigateBac composable { OthersSubscriptionListScreen( - onNavigateBack = navigateBack + onNavigateBack = navigateBack, + onNavigateToUserProfile = { userId -> + navController.navigateToUserProfile(userId) + } ) } } \ No newline at end of file From 66e3a39ee5640d5a6ce2757973ab1afd4b29edc4 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Tue, 19 Aug 2025 17:47:33 +0900 Subject: [PATCH 05/10] =?UTF-8?q?[refactor]:=20=EC=9C=A0=EC=A0=80=20?= =?UTF-8?q?=ED=94=BC=EB=93=9C=EC=97=90=EC=84=9C=20=EB=9D=B1=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=EC=9C=BC=EB=A1=9C=20=EC=9D=B4=EB=8F=99=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/feed/response/FeedUsersInfoResponse.kt | 2 +- .../texthip/thip/ui/feed/screen/FeedOthersScreen.kt | 12 ++++++++---- .../thip/ui/navigator/navigations/FeedNavigation.kt | 3 +++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/data/model/feed/response/FeedUsersInfoResponse.kt b/app/src/main/java/com/texthip/thip/data/model/feed/response/FeedUsersInfoResponse.kt index ac5c5b06..a10cde7f 100644 --- a/app/src/main/java/com/texthip/thip/data/model/feed/response/FeedUsersInfoResponse.kt +++ b/app/src/main/java/com/texthip/thip/data/model/feed/response/FeedUsersInfoResponse.kt @@ -4,7 +4,7 @@ import kotlinx.serialization.Serializable @Serializable data class FeedUsersInfoResponse( - val creatorId: Int, + val creatorId: Long, val profileImageUrl: String, val nickname: String, val aliasName: String, diff --git a/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedOthersScreen.kt b/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedOthersScreen.kt index 84d14767..0691fe1a 100644 --- a/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedOthersScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedOthersScreen.kt @@ -39,6 +39,7 @@ import com.texthip.thip.utils.color.hexToColor @Composable fun FeedOthersScreen( onNavigateBack: () -> Unit, + onNavigateToSubscriptionList: (userId: Long) -> Unit = {}, viewModel: FeedOthersViewModel = hiltViewModel() ) { val uiState by viewModel.uiState.collectAsState() @@ -46,7 +47,8 @@ fun FeedOthersScreen( FeedOthersContent( uiState = uiState, onNavigateBack = onNavigateBack, - onLikeClick = { feedId -> viewModel.changeFeedLike(feedId) } + onLikeClick = { feedId -> viewModel.changeFeedLike(feedId) }, + onNavigateToSubscriptionList = onNavigateToSubscriptionList ) } @@ -54,7 +56,8 @@ fun FeedOthersScreen( fun FeedOthersContent( uiState: FeedOthersUiState, onNavigateBack: () -> Unit, - onLikeClick: (Long) -> Unit + onLikeClick: (Long) -> Unit, + onNavigateToSubscriptionList: (userId: Long) -> Unit ) { val userInfo = uiState.userInfo @@ -96,7 +99,7 @@ fun FeedOthersContent( FeedSubscribeBarlist( modifier = Modifier.padding(horizontal = 20.dp), followerProfileImageUrls = userInfo.latestFollowerProfileImageUrls, - onClick = {} + onClick = { onNavigateToSubscriptionList(userInfo.creatorId) } ) Spacer(modifier = Modifier.height(40.dp)) Text( @@ -187,7 +190,8 @@ private fun FeedOthersScreenPrev() { feeds = mockFeeds ), onNavigateBack = {}, - onLikeClick = {} + onLikeClick = {}, + onNavigateToSubscriptionList = {} ) } } \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt index f32d21a8..e59cbc0d 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt @@ -121,6 +121,9 @@ fun NavGraphBuilder.feedNavigation(navController: NavHostController, navigateBac FeedOthersScreen( onNavigateBack = { navigateBack() + }, + onNavigateToSubscriptionList = { userId -> + navController.navigateToOthersSubscription(userId) } ) } From 3438fc5b8d2282b17ad3d7b3329d85e5b8f4e07d Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Tue, 19 Aug 2025 17:55:38 +0900 Subject: [PATCH 06/10] =?UTF-8?q?[refactor]:=20=EB=82=B4=20=EB=9D=B1=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=EC=97=90=EC=84=9C=20=EC=9C=A0=EC=A0=80=20?= =?UTF-8?q?=ED=94=BC=EB=93=9C=EB=A1=9C=20=EC=9D=B4=EB=8F=99=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../texthip/thip/ui/feed/screen/MySubscriptionListScreen.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/ui/feed/screen/MySubscriptionListScreen.kt b/app/src/main/java/com/texthip/thip/ui/feed/screen/MySubscriptionListScreen.kt index 6bbbdbe7..c1cea5d8 100644 --- a/app/src/main/java/com/texthip/thip/ui/feed/screen/MySubscriptionListScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/feed/screen/MySubscriptionListScreen.kt @@ -1,7 +1,6 @@ package com.texthip.thip.ui.feed.screen import androidx.compose.foundation.background -import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues @@ -152,7 +151,7 @@ fun MySubscriptionContent( items = uiState.followings, key = { _, user -> user.userId } ) { index, user -> - Column(modifier = Modifier.padding(horizontal = 20.dp).clickable { onUserClick(user.userId) }) { + Column(modifier = Modifier.padding(horizontal = 20.dp)) { AuthorHeader( profileImage = user.profileImageUrl, nickname = user.nickname, @@ -162,6 +161,7 @@ fun MySubscriptionContent( buttonWidth = 64.dp, profileImageSize = 36.dp, onButtonClick = { onToggleFollow(user.userId, user.nickname) }, + onClick = { onUserClick(user.userId) } ) if (index < uiState.followings.lastIndex) { From a5e4453d49187d7cf951925cbb34841d664b516e Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Tue, 19 Aug 2025 19:07:55 +0900 Subject: [PATCH 07/10] =?UTF-8?q?[refactor]:=20=EB=8B=B5=EA=B8=80=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=ED=96=88=EC=9D=84=20=EB=95=8C=20=EA=B8=B0?= =?UTF-8?q?=EC=A1=B4=20=EB=8B=B5=EA=B8=80=20=EC=82=AC=EB=9D=BC=EC=A7=80?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../group/note/viewmodel/CommentsViewModel.kt | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/ui/group/note/viewmodel/CommentsViewModel.kt b/app/src/main/java/com/texthip/thip/ui/group/note/viewmodel/CommentsViewModel.kt index dc6cdd01..87ef951e 100644 --- a/app/src/main/java/com/texthip/thip/ui/group/note/viewmodel/CommentsViewModel.kt +++ b/app/src/main/java/com/texthip/thip/ui/group/note/viewmodel/CommentsViewModel.kt @@ -137,20 +137,11 @@ class CommentsViewModel @Inject constructor( currentState.comments.indexOfFirst { it.commentId == parentId } if (parentCommentIndex != -1) { - val updatedParentComment = CommentList( - commentId = res.commentId, - creatorId = res.creatorId, - creatorProfileImageUrl = res.creatorProfileImageUrl, - creatorNickname = res.creatorNickname, - aliasName = res.aliasName, - aliasColor = res.aliasColor, - postDate = res.postDate, - content = res.content, - likeCount = res.likeCount, - isDeleted = res.isDeleted, - isWriter = res.isWriter, - isLike = res.isLike, - replyList = res.replyList + val originalParentComment = + currentState.comments[parentCommentIndex] + + val updatedParentComment = originalParentComment.copy( + replyList = originalParentComment.replyList + res.replyList ) val newCommentsList = currentState.comments.toMutableList().apply { From 38bf5fd934a6f2f3081265069cc1ef4e8456d85b Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Tue, 19 Aug 2025 20:05:36 +0900 Subject: [PATCH 08/10] =?UTF-8?q?[refactor]:=20=EB=8C=93=EA=B8=80=20?= =?UTF-8?q?=ED=82=A4=EB=B3=B4=EB=93=9C=20=ED=81=B4=EB=A6=AD=20=EC=8B=9C=20?= =?UTF-8?q?=ED=82=A4=EB=B3=B4=EB=93=9C=20=EC=98=AC=EB=9D=BC=EC=98=A4?= =?UTF-8?q?=EA=B3=A0,=20=EB=82=B4=EB=A6=AC=EB=A9=B4=20focus=20=EC=9E=83?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thip/ui/feed/screen/FeedCommentScreen.kt | 22 ++++++- .../note/component/CommentBottomSheet.kt | 61 +++++++++++++------ .../ui/group/note/screen/GroupNoteScreen.kt | 13 +--- .../group/note/viewmodel/CommentsViewModel.kt | 11 ++++ 4 files changed, 77 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedCommentScreen.kt b/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedCommentScreen.kt index 99fb656a..41177047 100644 --- a/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedCommentScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedCommentScreen.kt @@ -9,15 +9,18 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.ime import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Text @@ -31,8 +34,11 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.blur +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview @@ -147,6 +153,18 @@ fun FeedCommentScreen( var selectedCommentId by remember { mutableStateOf(null) } val focusManager = LocalFocusManager.current + val focusRequester = remember { FocusRequester() } + val listState = rememberLazyListState() + + val isKeyboardVisible = WindowInsets.ime.getBottom(LocalDensity.current) > 0 + + LaunchedEffect(isKeyboardVisible) { + if (!isKeyboardVisible) { + replyingToCommentId = null + replyingToNickname = null + focusManager.clearFocus() + } + } Box( modifier = Modifier @@ -179,6 +197,7 @@ fun FeedCommentScreen( ) LazyColumn( + state = listState, modifier = modifier .fillMaxWidth() .weight(1f), @@ -334,6 +353,7 @@ fun FeedCommentScreen( replyingToCommentId = commentId replyingToNickname = nickname selectedCommentId = null + focusRequester.requestFocus() }, onCommentLongPress = { comment -> selectedCommentId = comment.commentId @@ -353,7 +373,7 @@ fun FeedCommentScreen( // 댓글 입력창 CommentTextField( -// modifier = Modifier.align(Alignment.BottomCenter), + modifier = Modifier.focusRequester(focusRequester), input = commentInput, hint = stringResource(R.string.reply_to), onInputChange = { commentInput = it }, diff --git a/app/src/main/java/com/texthip/thip/ui/group/note/component/CommentBottomSheet.kt b/app/src/main/java/com/texthip/thip/ui/group/note/component/CommentBottomSheet.kt index eae22f65..91ca3229 100644 --- a/app/src/main/java/com/texthip/thip/ui/group/note/component/CommentBottomSheet.kt +++ b/app/src/main/java/com/texthip/thip/ui/group/note/component/CommentBottomSheet.kt @@ -3,11 +3,14 @@ package com.texthip.thip.ui.group.note.component import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.ime import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.CircularProgressIndicator @@ -22,9 +25,14 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.blur +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel import com.texthip.thip.R import com.texthip.thip.data.model.comments.response.CommentList import com.texthip.thip.data.model.comments.response.ReplyList @@ -34,6 +42,7 @@ import com.texthip.thip.ui.common.bottomsheet.MenuBottomSheet import com.texthip.thip.ui.common.forms.CommentTextField import com.texthip.thip.ui.group.note.viewmodel.CommentsEvent import com.texthip.thip.ui.group.note.viewmodel.CommentsUiState +import com.texthip.thip.ui.group.note.viewmodel.CommentsViewModel import com.texthip.thip.ui.group.room.mock.MenuBottomSheetItem import com.texthip.thip.ui.theme.ThipTheme import com.texthip.thip.ui.theme.ThipTheme.colors @@ -43,10 +52,9 @@ import com.texthip.thip.utils.rooms.advancedImePadding @Composable fun CommentBottomSheet( uiState: CommentsUiState, - onEvent: (CommentsEvent) -> Unit, onDismiss: () -> Unit, - onSendReply: (text: String, parentCommentId: Int?, replyToNickname: String?) -> Unit, - onProfileClick: (userId: Long) -> Unit = {} + onProfileClick: (userId: Long) -> Unit = {}, + viewModel: CommentsViewModel = hiltViewModel(), ) { var inputText by remember { mutableStateOf("") } var replyingToCommentId by remember { mutableStateOf(null) } @@ -57,6 +65,21 @@ fun CommentBottomSheet( val isOverlayVisible = selectedCommentForMenu != null || selectedReplyForMenu != null + val focusRequester = remember { FocusRequester() } + val listState = rememberLazyListState() + + val focusManager = LocalFocusManager.current + + val isKeyboardVisible = WindowInsets.ime.getBottom(LocalDensity.current) > 0 + + LaunchedEffect(isKeyboardVisible) { + if (!isKeyboardVisible) { + replyingToCommentId = null + replyingToNickname = null + focusManager.clearFocus() + } + } + Box( if (isOverlayVisible) { Modifier @@ -98,15 +121,18 @@ fun CommentBottomSheet( EmptyCommentView() } else { CommentLazyList( + listState = listState, commentList = uiState.comments, isLoadingMore = uiState.isLoadingMore, isLastPage = uiState.isLast, - onLoadMore = { onEvent(CommentsEvent.LoadMoreComments) }, + onLoadMore = { viewModel.onEvent(CommentsEvent.LoadMoreComments) }, onReplyClick = { commentId, nickname -> replyingToCommentId = commentId replyingToNickname = nickname + + focusRequester.requestFocus() }, - onEvent = onEvent, + onEvent = viewModel::onEvent, onCommentLongPress = { comment -> selectedCommentForMenu = comment }, @@ -118,19 +144,23 @@ fun CommentBottomSheet( } CommentTextField( - modifier = Modifier.fillMaxWidth(), + modifier = Modifier + .fillMaxWidth() + .focusRequester(focusRequester), hint = stringResource(R.string.reply_to), input = inputText, onInputChange = { inputText = it }, onSendClick = { - onSendReply( - inputText, - replyingToCommentId, - replyingToNickname + viewModel.onEvent( + CommentsEvent.CreateComment( + content = inputText, + parentId = replyingToCommentId + ) ) inputText = "" replyingToCommentId = null replyingToNickname = null + focusManager.clearFocus() }, replyTo = replyingToNickname, onCancelReply = { @@ -162,7 +192,7 @@ fun CommentBottomSheet( is ReplyList -> item.commentId else -> null } - commentId?.let { onEvent(CommentsEvent.DeleteComment(it)) } + commentId?.let { viewModel.onEvent(CommentsEvent.DeleteComment(it)) } selectedCommentForMenu = null selectedReplyForMenu = null @@ -192,6 +222,7 @@ fun CommentBottomSheet( @Composable private fun CommentLazyList( + listState: LazyListState, commentList: List, isLoadingMore: Boolean, isLastPage: Boolean, @@ -202,11 +233,9 @@ private fun CommentLazyList( onReplyLongPress: (ReplyList) -> Unit, onProfileClick: (userId: Long) -> Unit ) { - val lazyListState = rememberLazyListState() - val isScrolledToEnd by remember { derivedStateOf { - val layoutInfo = lazyListState.layoutInfo + val layoutInfo = listState.layoutInfo if (layoutInfo.totalItemsCount == 0) return@derivedStateOf false val lastVisibleItemIndex = layoutInfo.visibleItemsInfo.lastOrNull()?.index ?: 0 lastVisibleItemIndex >= layoutInfo.totalItemsCount - 1 @@ -219,7 +248,7 @@ private fun CommentLazyList( } } - LazyColumn(state = lazyListState) { + LazyColumn(state = listState) { items( items = commentList, key = { comment -> @@ -310,9 +339,7 @@ private fun CommentBottomSheetPreview() { isLoadingMore = false, isLast = false ), - onEvent = {}, onDismiss = { showSheet = false }, - onSendReply = { _, _, _ -> } ) } } diff --git a/app/src/main/java/com/texthip/thip/ui/group/note/screen/GroupNoteScreen.kt b/app/src/main/java/com/texthip/thip/ui/group/note/screen/GroupNoteScreen.kt index 9b39a3f5..893ca1b5 100644 --- a/app/src/main/java/com/texthip/thip/ui/group/note/screen/GroupNoteScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/group/note/screen/GroupNoteScreen.kt @@ -57,7 +57,6 @@ import com.texthip.thip.ui.group.note.component.CommentBottomSheet import com.texthip.thip.ui.group.note.component.FilterHeaderSection import com.texthip.thip.ui.group.note.component.TextCommentCard import com.texthip.thip.ui.group.note.component.VoteCommentCard -import com.texthip.thip.ui.group.note.viewmodel.CommentsEvent import com.texthip.thip.ui.group.note.viewmodel.CommentsViewModel import com.texthip.thip.ui.group.note.viewmodel.GroupNoteEvent import com.texthip.thip.ui.group.note.viewmodel.GroupNoteSideEffect @@ -503,23 +502,13 @@ fun GroupNoteContent( } CommentBottomSheet( + viewModel = commentsViewModel, uiState = commentsUiState, - onEvent = commentsViewModel::onEvent, onDismiss = { isCommentBottomSheetVisible = false selectedPostForComment = null onEvent(GroupNoteEvent.RefreshPosts) }, - onSendReply = { text, parentId, _ -> - if (text.isNotBlank()) { - commentsViewModel.onEvent( - CommentsEvent.CreateComment( - content = text, - parentId = parentId - ) - ) - } - }, onProfileClick = onNavigateToUserProfile ) } diff --git a/app/src/main/java/com/texthip/thip/ui/group/note/viewmodel/CommentsViewModel.kt b/app/src/main/java/com/texthip/thip/ui/group/note/viewmodel/CommentsViewModel.kt index 87ef951e..4d254c96 100644 --- a/app/src/main/java/com/texthip/thip/ui/group/note/viewmodel/CommentsViewModel.kt +++ b/app/src/main/java/com/texthip/thip/ui/group/note/viewmodel/CommentsViewModel.kt @@ -6,7 +6,9 @@ import com.texthip.thip.data.model.comments.response.CommentList import com.texthip.thip.data.model.comments.response.ReplyList import com.texthip.thip.data.repository.CommentsRepository import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch @@ -20,6 +22,10 @@ data class CommentsUiState( val comments: List = emptyList() ) +sealed interface CommentSideEffect { + data class ScrollToItem(val parentCommentId: Int?) : CommentSideEffect +} + sealed interface CommentsEvent { data object LoadMoreComments : CommentsEvent data class LikeComment(val commentId: Int) : CommentsEvent // 댓글 좋아요 이벤트 @@ -36,6 +42,9 @@ class CommentsViewModel @Inject constructor( private val _uiState = MutableStateFlow(CommentsUiState()) val uiState = _uiState.asStateFlow() + private val _sideEffect = MutableSharedFlow() + val sideEffect = _sideEffect.asSharedFlow() + private var nextCursor: String? = null private var currentPostId: Long = -1L private var currentPostType: String = "RECORD" @@ -153,6 +162,8 @@ class CommentsViewModel @Inject constructor( } } } + + _sideEffect.emit(CommentSideEffect.ScrollToItem(parentId)) } }.onFailure { throwable -> _uiState.update { it.copy(error = "댓글 작성 실패: ${throwable.message}") } From e61a43b234b47b2250d3299fa5e45c8eb77ec8bb Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Tue, 19 Aug 2025 21:23:32 +0900 Subject: [PATCH 09/10] =?UTF-8?q?[refactor]:=20=EC=9C=A0=EC=A0=80=20?= =?UTF-8?q?=ED=94=BC=EB=93=9C=20=ED=99=94=EB=A9=B4=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=ED=94=BC=EB=93=9C=20=EC=83=81=EC=84=B8=EB=A1=9C=20=EB=84=98?= =?UTF-8?q?=EC=96=B4=EA=B0=80=EA=B2=8C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../texthip/thip/ui/feed/component/OthersFeedCard.kt | 11 +---------- .../texthip/thip/ui/feed/screen/FeedOthersScreen.kt | 9 ++++++--- .../thip/ui/navigator/navigations/FeedNavigation.kt | 3 +++ 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/ui/feed/component/OthersFeedCard.kt b/app/src/main/java/com/texthip/thip/ui/feed/component/OthersFeedCard.kt index d8aef755..41333397 100644 --- a/app/src/main/java/com/texthip/thip/ui/feed/component/OthersFeedCard.kt +++ b/app/src/main/java/com/texthip/thip/ui/feed/component/OthersFeedCard.kt @@ -8,10 +8,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale @@ -35,12 +31,11 @@ fun OthersFeedCard( val hasImages = images.isNotEmpty() val maxLines = if (hasImages) 3 else 8 - var isLiked by remember { mutableStateOf(false) } - Column( modifier = modifier .fillMaxWidth() .padding(horizontal = 20.dp) + .clickable { onContentClick() } ) { ActionBookButton( bookTitle = feedItem.bookTitle, @@ -56,7 +51,6 @@ fun OthersFeedCard( modifier = Modifier .fillMaxWidth() .padding(vertical = 16.dp) - .clickable { onContentClick() } ) if (hasImages) { @@ -86,9 +80,6 @@ fun OthersFeedCard( isSaveVisible = true, onLikeClick = { // onLikeClick(feedItem.feedId) - }, - onCommentClick = { -// onCommentClick() }, onBookmarkClick = { diff --git a/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedOthersScreen.kt b/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedOthersScreen.kt index 0691fe1a..f52d41a7 100644 --- a/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedOthersScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/feed/screen/FeedOthersScreen.kt @@ -40,6 +40,7 @@ import com.texthip.thip.utils.color.hexToColor fun FeedOthersScreen( onNavigateBack: () -> Unit, onNavigateToSubscriptionList: (userId: Long) -> Unit = {}, + onNavigateToFeedComment: (feedId: Long) -> Unit = {}, viewModel: FeedOthersViewModel = hiltViewModel() ) { val uiState by viewModel.uiState.collectAsState() @@ -48,7 +49,8 @@ fun FeedOthersScreen( uiState = uiState, onNavigateBack = onNavigateBack, onLikeClick = { feedId -> viewModel.changeFeedLike(feedId) }, - onNavigateToSubscriptionList = onNavigateToSubscriptionList + onNavigateToSubscriptionList = onNavigateToSubscriptionList, + onNavigateToFeedComment = onNavigateToFeedComment ) } @@ -57,7 +59,8 @@ fun FeedOthersContent( uiState: FeedOthersUiState, onNavigateBack: () -> Unit, onLikeClick: (Long) -> Unit, - onNavigateToSubscriptionList: (userId: Long) -> Unit + onNavigateToSubscriptionList: (userId: Long) -> Unit, + onNavigateToFeedComment: (feedId: Long) -> Unit = {}, ) { val userInfo = uiState.userInfo @@ -140,7 +143,7 @@ fun FeedOthersContent( OthersFeedCard( feedItem = feed, onLikeClick = { onLikeClick(feed.feedId) }, - onContentClick = { /* TODO: 피드 상세 댓글 화면으로 이동 */ } + onContentClick = { onNavigateToFeedComment(feed.feedId) } ) Spacer(modifier = Modifier.height(40.dp)) if (index < uiState.feeds.lastIndex) { diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt index e59cbc0d..e8121c84 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt @@ -124,6 +124,9 @@ fun NavGraphBuilder.feedNavigation(navController: NavHostController, navigateBac }, onNavigateToSubscriptionList = { userId -> navController.navigateToOthersSubscription(userId) + }, + onNavigateToFeedComment = { feedId -> + navController.navigateToFeedComment(feedId) } ) } From 97f650a7fec0c554059b4c6d831e30dd19b6bdae Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Tue, 19 Aug 2025 21:30:31 +0900 Subject: [PATCH 10/10] =?UTF-8?q?[refactor]:=20=ED=94=84=EB=A1=9C=ED=95=84?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=EC=97=90=EC=84=9C=20unfocusd=20text=20col?= =?UTF-8?q?or=20white=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/texthip/thip/ui/common/forms/WarningTextField.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/com/texthip/thip/ui/common/forms/WarningTextField.kt b/app/src/main/java/com/texthip/thip/ui/common/forms/WarningTextField.kt index d5f433d2..bec351f1 100644 --- a/app/src/main/java/com/texthip/thip/ui/common/forms/WarningTextField.kt +++ b/app/src/main/java/com/texthip/thip/ui/common/forms/WarningTextField.kt @@ -73,6 +73,7 @@ fun WarningTextField( modifier = Modifier.fillMaxSize(), shape = RoundedCornerShape(12.dp), colors = TextFieldDefaults.colors( + unfocusedTextColor = colors.White, focusedTextColor = colors.White, focusedIndicatorColor = if (showWarning) colors.Red else Color.Transparent, unfocusedIndicatorColor = if (showWarning) colors.Red else Color.Transparent,