diff --git a/app/src/main/java/com/sopt/now/compose/ui/home/HomeScreen.kt b/app/src/main/java/com/sopt/now/compose/ui/home/HomeScreen.kt index 0caa85a..d1cec50 100644 --- a/app/src/main/java/com/sopt/now/compose/ui/home/HomeScreen.kt +++ b/app/src/main/java/com/sopt/now/compose/ui/home/HomeScreen.kt @@ -1,16 +1,18 @@ package com.sopt.now.compose.ui.home -import android.util.Log import androidx.compose.foundation.Image import androidx.compose.foundation.background -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.MutableState -import androidx.compose.runtime.mutableStateOf import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -19,18 +21,11 @@ import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import androidx.lifecycle.ViewModel import androidx.lifecycle.viewmodel.compose.viewModel import coil.compose.rememberImagePainter import coil.transform.CircleCropTransformation import com.sopt.now.compose.R import com.sopt.now.compose.data.Friend -import com.sopt.now.compose.data.ServicePool -import com.sopt.now.compose.data.dto.response.ResponseFriendDto -import com.sopt.now.compose.data.dto.response.ResponseUserDto -import retrofit2.Call -import retrofit2.Callback -import retrofit2.Response @Composable fun HomeScreen(userId: String, viewModel: HomeViewModel = viewModel()) { @@ -38,8 +33,8 @@ fun HomeScreen(userId: String, viewModel: HomeViewModel = viewModel()) { val friendList = viewModel.friendList.value LaunchedEffect(Unit) { - getFriendData(viewModel) viewModel.getUserData(userId) + viewModel.getFriendData() } LazyColumn { @@ -120,58 +115,4 @@ fun FriendProfileItem(friend: Friend) { fontSize = 14.sp, ) } -} - -class HomeViewModel : ViewModel() { - val userData: MutableState = mutableStateOf(null) - val friendList: MutableState> = mutableStateOf(emptyList()) - - fun getUserData(userId: String) { - ServicePool.userService.getUser(userId).enqueue(object : Callback { - override fun onResponse( - call: Call, - response: Response - ) { - if (response.isSuccessful) { - val data: ResponseUserDto? = response.body() - userData.value = data?.data - - Log.d("MyPageViewModel", "User data: ${userData.value}") - } else { - Log.d("MyPageViewModel", "Failed to load user data: $userId") - } - } - - override fun onFailure(call: Call, t: Throwable) { - Log.d("MyPageViewModel", "Failed to load user data: ${t.message}") - } - }) - } -} - -fun getFriendData(viewModel: HomeViewModel) { - if (viewModel.friendList.value.isEmpty()) { - ServicePool.friendService.getFriend(2).enqueue(object : Callback { - override fun onResponse( - call: Call, - response: Response - ) { - if(response.isSuccessful) { - val friend = response.body()?.data - - friend?.forEach { friendData -> - viewModel.friendList.value += Friend( - friendData.avatar, friendData.firstName, friendData.email - ) - } - } else { - Log.d("HomeViewModel", "Failed to load user data: ${response.message()}") - } - } - - override fun onFailure(call: Call, t: Throwable) { - Log.d("HomeViewModel", "Load friend data error : ${t.message}") - } - }) - } } \ No newline at end of file diff --git a/app/src/main/java/com/sopt/now/compose/ui/home/HomeViewModel.kt b/app/src/main/java/com/sopt/now/compose/ui/home/HomeViewModel.kt new file mode 100644 index 0000000..3d0a997 --- /dev/null +++ b/app/src/main/java/com/sopt/now/compose/ui/home/HomeViewModel.kt @@ -0,0 +1,67 @@ +package com.sopt.now.compose.ui.home + +import android.util.Log +import androidx.compose.runtime.MutableState +import androidx.compose.runtime.mutableStateOf +import androidx.lifecycle.ViewModel +import com.sopt.now.compose.data.Friend +import com.sopt.now.compose.data.ServicePool +import com.sopt.now.compose.data.dto.response.ResponseFriendDto +import com.sopt.now.compose.data.dto.response.ResponseUserDto +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response + +class HomeViewModel : ViewModel() { + val userData: MutableState = mutableStateOf(null) + val friendList: MutableState> = mutableStateOf(emptyList()) + + fun getUserData(userId: String) { + ServicePool.userService.getUser(userId).enqueue(object : Callback { + override fun onResponse( + call: Call, + response: Response + ) { + if (response.isSuccessful) { + val data: ResponseUserDto? = response.body() + userData.value = data?.data + + Log.d("MyPageViewModel", "User data: ${userData.value}") + } else { + Log.d("MyPageViewModel", "Failed to load user data: $userId") + } + } + + override fun onFailure(call: Call, t: Throwable) { + Log.d("MyPageViewModel", "Failed to load user data: ${t.message}") + } + }) + } + + fun getFriendData() { + if (friendList.value.isEmpty()) { + ServicePool.friendService.getFriend(2).enqueue(object : Callback { + override fun onResponse( + call: Call, + response: Response + ) { + if(response.isSuccessful) { + val friend = response.body()?.data + + friend?.forEach { friendData -> + friendList.value += Friend( + friendData.avatar, friendData.firstName, friendData.email + ) + } + } else { + Log.d("HomeViewModel", "Failed to load user data: ${response.message()}") + } + } + + override fun onFailure(call: Call, t: Throwable) { + Log.d("HomeViewModel", "Load friend data error : ${t.message}") + } + }) + } + } +}