Skip to content
This repository has been archived by the owner on Aug 5, 2024. It is now read-only.

Commit

Permalink
feat: Add init after variable declaration (#49)
Browse files Browse the repository at this point in the history
* Add init after variable declaration

Signed-off-by: Hernand Azevedo <hernand.azevedo@zup.com.br>

* Add init after variable declaration

Signed-off-by: Hernand Azevedo <hernand.azevedo@zup.com.br>

* Add init after variable declaration

Signed-off-by: Hernand Azevedo <hernand.azevedo@zup.com.br>

Signed-off-by: Hernand Azevedo <hernand.azevedo@zup.com.br>
  • Loading branch information
hernandazevedozup committed Dec 9, 2022
1 parent 00db85c commit 06d556a
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 44 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,6 @@ internal class NimbusViewModel(
json: String = ""
) : ViewModel() {


init {

if (viewRequest != null) {
initFirstViewWithRequest(viewRequest = viewRequest)
} else {
initFirstViewWithJson(json = json)
}
}


private var _nimbusViewModelModalState: MutableStateFlow<NimbusViewModelModalState> =
MutableStateFlow(NimbusViewModelModalState.RootState)

Expand All @@ -59,6 +48,37 @@ internal class NimbusViewModel(

val nimbusViewNavigationState: StateFlow<NimbusViewModelNavigationState>
get() = _nimbusViewNavigationState
var serverDrivenNavigator: ServerDrivenNavigator

init {
serverDrivenNavigator = object : ServerDrivenNavigator {
override fun dismiss() {
setNimbusViewModelModalState(NimbusViewModelModalState.OnHideModalState)
}

override fun popTo(url: String) {
popNavigationTo(url)
}

override fun present(request: ViewRequest) {
setNimbusViewModelModalState(NimbusViewModelModalState.OnShowModalModalState(request))
}

override fun pop() {
popNavigation()
}

override fun push(request: ViewRequest) {
doPushWithViewRequest(request, this)
}
}

if (viewRequest != null) {
initFirstViewWithRequest(viewRequest = viewRequest, serverDrivenNavigator)
} else {
initFirstViewWithJson(json = json, serverDrivenNavigator)
}
}

companion object {
fun provideFactory(
Expand All @@ -75,28 +95,6 @@ internal class NimbusViewModel(
}
}

private val serverDrivenNavigator: ServerDrivenNavigator = object : ServerDrivenNavigator {
override fun dismiss() {
setNimbusViewModelModalState(NimbusViewModelModalState.OnHideModalState)
}

override fun popTo(url: String) {
popNavigationTo(url)
}

override fun present(request: ViewRequest) {
setNimbusViewModelModalState(NimbusViewModelModalState.OnShowModalModalState(request))
}

override fun pop() {
popNavigation()
}

override fun push(request: ViewRequest) {
doPushWithViewRequest(request)
}
}

fun setModalHiddenState() {
setNimbusViewModelModalState(NimbusViewModelModalState.RootState)
}
Expand All @@ -110,12 +108,12 @@ internal class NimbusViewModel(
}
}

fun initFirstViewWithRequest(viewRequest: ViewRequest) {
doPushWithViewRequest(viewRequest, initialRequest = true)
fun initFirstViewWithRequest(viewRequest: ViewRequest, serverDrivenNavigator: ServerDrivenNavigator) {
doPushWithViewRequest(viewRequest, serverDrivenNavigator, initialRequest = true)
}

fun initFirstViewWithJson(json: String) {
doPushWithJson(json)
fun initFirstViewWithJson(json: String, serverDrivenNavigator: ServerDrivenNavigator) {
doPushWithJson(json, serverDrivenNavigator)
}

fun getPageBy(url: String?): Page? {
Expand Down Expand Up @@ -165,7 +163,9 @@ internal class NimbusViewModel(
}
}

private fun doPushWithViewRequest(request: ViewRequest, initialRequest: Boolean = false) =
private fun doPushWithViewRequest(request: ViewRequest,
serverDrivenNavigator: ServerDrivenNavigator,
initialRequest: Boolean = false) =
viewModelScope.launch(CoroutineDispatcherLib.inputOutputPool) {
val stateInstances = request.params?.map { ServerDrivenState(it.key, it.value) }
val view = ServerDrivenView(
Expand Down Expand Up @@ -209,7 +209,8 @@ internal class NimbusViewModel(
}
}

private fun doPushWithJson(json: String) =
private fun doPushWithJson(json: String,
serverDrivenNavigator: ServerDrivenNavigator) =
viewModelScope.launch(CoroutineDispatcherLib.inputOutputPool) {
val view = ServerDrivenView(
nimbus = nimbusConfig,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ class NimbusViewModelTest : BaseTest() {
coEvery { nimbusConfig.viewClient.fetch(any()) } throws expectedException

//When
viewModel.initFirstViewWithRequest(viewRequest)
viewModel.initFirstViewWithRequest(viewRequest, viewModel.serverDrivenNavigator)
val observer = pageObserverSlot.last()

//Then
Expand Down Expand Up @@ -125,7 +125,7 @@ class NimbusViewModelTest : BaseTest() {
)

//When
paramsViewModel.initFirstViewWithRequest(viewRequest)
paramsViewModel.initFirstViewWithRequest(viewRequest, viewModel.serverDrivenNavigator)

val page = paramsViewModel.getPageBy(pageUrl)
assertNotNull(page)
Expand All @@ -143,7 +143,7 @@ class NimbusViewModelTest : BaseTest() {
shouldEmitRenderNodeFromCore(serverDrivenNode)

//When
viewModel.initFirstViewWithRequest(viewRequest)
viewModel.initFirstViewWithRequest(viewRequest, viewModel.serverDrivenNavigator)
return pageObserverSlot.last()
}

Expand All @@ -160,7 +160,7 @@ class NimbusViewModelTest : BaseTest() {
shouldEmitRenderNodeFromCore(serverDrivenNode)

//When
viewModel.initFirstViewWithJson(json)
viewModel.initFirstViewWithJson(json, viewModel.serverDrivenNavigator)

val observer = pageObserverSlot.last()

Expand All @@ -187,7 +187,7 @@ class NimbusViewModelTest : BaseTest() {
shouldEmitExceptionFromCore(expectedException)

//When
viewModel.initFirstViewWithJson(json)
viewModel.initFirstViewWithJson(json, viewModel.serverDrivenNavigator)

val observer = pageObserverSlot.last()

Expand Down

0 comments on commit 06d556a

Please sign in to comment.