Skip to content

Commit

Permalink
[feat] #13 뷰모델 세팅 + UiState 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
Hyobeen-Park committed May 24, 2024
1 parent 677469d commit ff58fd7
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.sopt.now.presentation.Home

class HomeViewModel {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.sopt.now.presentation.Login

class LoginViewModel {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.sopt.now.presentation.Mypage

class MypageViewModel {
}
Original file line number Diff line number Diff line change
@@ -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 <T: ViewModel> create(modelClass: Class<T>): 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")
}
}
14 changes: 14 additions & 0 deletions app/src/main/java/com/sopt/now/util/BaseResponse.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.sopt.now.util

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class BaseResponse<T>(
@SerialName("code")
val code: Int,
@SerialName("message")
val message: String,
@SerialName("data")
val data: T,
)
11 changes: 11 additions & 0 deletions app/src/main/java/com/sopt/now/util/UiState.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.sopt.now.util

sealed class UiState<out T> {
object Loading : UiState<Nothing>()

object Empty : UiState<Nothing>()

data class Success<T>(val data: T) : UiState<T>()

data class Error(val message: String?) : UiState<Nothing>()
}

0 comments on commit ff58fd7

Please sign in to comment.