From ff58fd7dd37ee3b059d3481e1f61b6fd6f5ba624 Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Sat, 25 May 2024 00:10:25 +0900 Subject: [PATCH] =?UTF-8?q?[feat]=20#13=20=EB=B7=B0=EB=AA=A8=EB=8D=B8=20?= =?UTF-8?q?=EC=84=B8=ED=8C=85=20+=20UiState=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../now/presentation/Home/HomeViewModel.kt | 4 ++++ .../now/presentation/Login/LoginViewModel.kt | 4 ++++ .../presentation/Mypage/MypageViewModel.kt | 4 ++++ .../presentation/common/ViewModelFactory.kt | 24 +++++++++++++++++++ .../java/com/sopt/now/util/BaseResponse.kt | 14 +++++++++++ .../main/java/com/sopt/now/util/UiState.kt | 11 +++++++++ 6 files changed, 61 insertions(+) create mode 100644 app/src/main/java/com/sopt/now/presentation/Home/HomeViewModel.kt create mode 100644 app/src/main/java/com/sopt/now/presentation/Login/LoginViewModel.kt create mode 100644 app/src/main/java/com/sopt/now/presentation/Mypage/MypageViewModel.kt create mode 100644 app/src/main/java/com/sopt/now/presentation/common/ViewModelFactory.kt create mode 100644 app/src/main/java/com/sopt/now/util/BaseResponse.kt create mode 100644 app/src/main/java/com/sopt/now/util/UiState.kt diff --git a/app/src/main/java/com/sopt/now/presentation/Home/HomeViewModel.kt b/app/src/main/java/com/sopt/now/presentation/Home/HomeViewModel.kt new file mode 100644 index 0000000..2d79ffd --- /dev/null +++ b/app/src/main/java/com/sopt/now/presentation/Home/HomeViewModel.kt @@ -0,0 +1,4 @@ +package com.sopt.now.presentation.Home + +class HomeViewModel { +} \ No newline at end of file diff --git a/app/src/main/java/com/sopt/now/presentation/Login/LoginViewModel.kt b/app/src/main/java/com/sopt/now/presentation/Login/LoginViewModel.kt new file mode 100644 index 0000000..851d9bc --- /dev/null +++ b/app/src/main/java/com/sopt/now/presentation/Login/LoginViewModel.kt @@ -0,0 +1,4 @@ +package com.sopt.now.presentation.Login + +class LoginViewModel { +} \ No newline at end of file diff --git a/app/src/main/java/com/sopt/now/presentation/Mypage/MypageViewModel.kt b/app/src/main/java/com/sopt/now/presentation/Mypage/MypageViewModel.kt new file mode 100644 index 0000000..dc13c72 --- /dev/null +++ b/app/src/main/java/com/sopt/now/presentation/Mypage/MypageViewModel.kt @@ -0,0 +1,4 @@ +package com.sopt.now.presentation.Mypage + +class MypageViewModel { +} \ No newline at end of file diff --git a/app/src/main/java/com/sopt/now/presentation/common/ViewModelFactory.kt b/app/src/main/java/com/sopt/now/presentation/common/ViewModelFactory.kt new file mode 100644 index 0000000..8c1251c --- /dev/null +++ b/app/src/main/java/com/sopt/now/presentation/common/ViewModelFactory.kt @@ -0,0 +1,24 @@ +package com.sopt.now.presentation.common + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import com.sopt.now.presentation.Home.HomeViewModel +import com.sopt.now.presentation.Login.LoginViewModel +import com.sopt.now.presentation.Mypage.MypageViewModel +import com.sopt.now.presentation.Signup.SignupViewModel +import java.lang.IllegalArgumentException + +class ViewModelFactory: ViewModelProvider.Factory { + override fun create(modelClass: Class): T { + if(modelClass.isAssignableFrom(SignupViewModel::class.java)) { + return SignupViewModel() as T + } else if(modelClass.isAssignableFrom(LoginViewModel::class.java)) { + return LoginViewModel() as T + } else if(modelClass.isAssignableFrom(HomeViewModel::class.java)) { + return HomeViewModel() as T + } else if(modelClass.isAssignableFrom(MypageViewModel::class.java)) { + return MypageViewModel() as T + } + throw IllegalArgumentException("Unknown ViewModel Class") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/sopt/now/util/BaseResponse.kt b/app/src/main/java/com/sopt/now/util/BaseResponse.kt new file mode 100644 index 0000000..7598058 --- /dev/null +++ b/app/src/main/java/com/sopt/now/util/BaseResponse.kt @@ -0,0 +1,14 @@ +package com.sopt.now.util + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class BaseResponse( + @SerialName("code") + val code: Int, + @SerialName("message") + val message: String, + @SerialName("data") + val data: T, +) diff --git a/app/src/main/java/com/sopt/now/util/UiState.kt b/app/src/main/java/com/sopt/now/util/UiState.kt new file mode 100644 index 0000000..84d36f8 --- /dev/null +++ b/app/src/main/java/com/sopt/now/util/UiState.kt @@ -0,0 +1,11 @@ +package com.sopt.now.util + +sealed class UiState { + object Loading : UiState() + + object Empty : UiState() + + data class Success(val data: T) : UiState() + + data class Error(val message: String?) : UiState() +}