mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-02-01 19:56:47 +01:00
Add a message when migrating the data (after 1 seconds)
This commit is contained in:
parent
b7826c02a3
commit
0bedfc8087
@ -21,6 +21,7 @@ import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.os.Parcelable
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.airbnb.mvrx.viewModel
|
||||
@ -49,6 +50,7 @@ import im.vector.app.features.signout.hard.SignedOutActivity
|
||||
import im.vector.app.features.start.StartAppAction
|
||||
import im.vector.app.features.start.StartAppViewEvent
|
||||
import im.vector.app.features.start.StartAppViewModel
|
||||
import im.vector.app.features.start.StartAppViewState
|
||||
import im.vector.app.features.themes.ActivityOtherThemes
|
||||
import im.vector.app.features.ui.UiStateRepository
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@ -127,6 +129,9 @@ class MainActivity : VectorBaseActivity<ActivityMainBinding>(), UnlockedActivity
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
startAppViewModel.onEach {
|
||||
renderState(it)
|
||||
}
|
||||
startAppViewModel.viewEvents.stream()
|
||||
.onEach(::handleViewEvents)
|
||||
.launchIn(lifecycleScope)
|
||||
@ -134,6 +139,13 @@ class MainActivity : VectorBaseActivity<ActivityMainBinding>(), UnlockedActivity
|
||||
startAppViewModel.handle(StartAppAction.StartApp)
|
||||
}
|
||||
|
||||
private fun renderState(state: StartAppViewState) {
|
||||
if (state.duration > 0) {
|
||||
views.status.setText(R.string.updating_your_data)
|
||||
}
|
||||
views.status.isVisible = state.duration > 0
|
||||
}
|
||||
|
||||
private fun handleViewEvents(event: StartAppViewEvent) {
|
||||
when (event) {
|
||||
StartAppViewEvent.AppStarted -> handleAppStarted()
|
||||
|
@ -24,8 +24,12 @@ import im.vector.app.core.di.ActiveSessionSetter
|
||||
import im.vector.app.core.di.MavericksAssistedViewModelFactory
|
||||
import im.vector.app.core.di.hiltMavericksViewModelFactory
|
||||
import im.vector.app.core.platform.VectorViewModel
|
||||
import im.vector.lib.core.utils.flow.tickerFlow
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
|
||||
class StartAppViewModel @AssistedInject constructor(
|
||||
@Assisted val initialState: StartAppViewState,
|
||||
@ -50,10 +54,20 @@ class StartAppViewModel @AssistedInject constructor(
|
||||
}
|
||||
|
||||
private fun handleStartApp() {
|
||||
startTimer()
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
// This can take time because of DB migration(s), so do it in a background task.
|
||||
activeSessionSetter.tryToSetActiveSession(startSync = true)
|
||||
_viewEvents.post(StartAppViewEvent.AppStarted)
|
||||
}
|
||||
}
|
||||
|
||||
private fun startTimer() {
|
||||
setState { copy(duration = 0) }
|
||||
tickerFlow(viewModelScope, 1.seconds.inWholeMilliseconds)
|
||||
.onEach {
|
||||
setState { copy(duration = duration + 1) }
|
||||
}
|
||||
.launchIn(viewModelScope)
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- The background of this Activity is in the theme (so just added as tools here, for preview),
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- The background of this Activity is in the theme (so just added as tools here, for preview),
|
||||
so we just add a ProgressBar here -->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
@ -22,4 +21,20 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/status"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/layout_horizontal_margin"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="@dimen/layout_horizontal_margin"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/palette_white"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/progressBar"
|
||||
tools:text="@string/updating_your_data"
|
||||
tools:visibility="visible" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
@ -1625,6 +1625,7 @@
|
||||
<string name="error_no_network">No network. Please check your Internet connection.</string>
|
||||
<string name="change_room_directory_network">"Change network"</string>
|
||||
<string name="please_wait">"Please wait…"</string>
|
||||
<string name="updating_your_data">Updating your data…</string>
|
||||
<!--TODO: delete-->
|
||||
<string name="group_all_communities" tools:ignore="UnusedResources">"All Communities"</string>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user