Skip to content
Snippets Groups Projects
Commit bd1addbd authored by Kamal Bramwell's avatar Kamal Bramwell
Browse files

FE-956: Components initializing screen

parent 444f8eec
No related branches found
No related tags found
3 merge requests!84Version 2.92 build 629,!77v2.9 b627,!73FE-956: Components initializing screen
......@@ -11,6 +11,7 @@ import android.graphics.Color
import android.os.Bundle
import android.view.*
import android.view.inputmethod.InputMethodManager
import android.widget.ProgressBar
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.os.bundleOf
import androidx.core.view.WindowInsetsCompat
......@@ -50,11 +51,13 @@ import io.xxlabs.messenger.ui.base.BaseFragment
import io.xxlabs.messenger.ui.global.BaseInstance
import io.xxlabs.messenger.ui.global.ContactsViewModel
import io.xxlabs.messenger.ui.global.NetworkViewModel
import io.xxlabs.messenger.ui.main.chat.setVisibility
import io.xxlabs.messenger.ui.main.chats.ChatsFragment
import io.xxlabs.messenger.ui.main.chats.ChatsViewModel
import io.xxlabs.messenger.ui.main.contacts.PhotoSelectorFragment
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.component_menu.*
import kotlinx.android.synthetic.main.fragment_delete_account.*
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import timber.log.Timber
......@@ -84,6 +87,7 @@ class MainActivity : MediaProviderActivity(), SnackBarActivity, CustomToastActiv
var isBackBtnAllowed = true
var isMenuOpened = false
private val intentQueue: MutableList<Intent> = mutableListOf()
override fun onStart() {
super.onStart()
......@@ -163,7 +167,9 @@ class MainActivity : MediaProviderActivity(), SnackBarActivity, CustomToastActiv
handleIntent(intent)
}
private fun handleIntent(intent: Intent) {
if (mainViewModel.areComponentsInitialized.value == true) {
intent.getBundleExtra(INTENT_NOTIFICATION_CLICK)?.let {
// PendingIntent from notifications
handleNotification(it)
......@@ -175,6 +181,9 @@ class MainActivity : MediaProviderActivity(), SnackBarActivity, CustomToastActiv
invitationIntent(username)
return
}
} else {
intentQueue.add(intent)
}
}
private fun invitationIntent(username: String) {
......@@ -417,6 +426,17 @@ class MainActivity : MediaProviderActivity(), SnackBarActivity, CustomToastActiv
}
private fun observeUI() {
mainViewModel.areComponentsInitialized.observe(this) { ready ->
enableUi(ready)
if (ready) {
// LIFO ordering.
intentQueue.removeLastOrNull()?.run {
handleIntent(this)
}
}
}
contactsViewModel.showToast.onEach { toast ->
toast?.let {
showCustomToast(toast)
......@@ -446,6 +466,11 @@ class MainActivity : MediaProviderActivity(), SnackBarActivity, CustomToastActiv
}
}
private fun enableUi(enabled: Boolean) {
initializingBackground?.setVisibility(!enabled)
initializingProgressBar?.setVisibility(!enabled)
}
private fun dismissNetworkStatusMessage() {
for (status in cachedNetworkStatus) {
dismissIndefiniteToast(status)
......
package io.xxlabs.messenger.ui.main
import android.content.Context
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
......@@ -54,6 +55,9 @@ class MainViewModel @Inject constructor(
private var isLoggingIn: Boolean = false
private var hasManagerStarted: Boolean = false
val areComponentsInitialized: LiveData<Boolean> by ::_areComponentsInitialized
private val _areComponentsInitialized = MutableLiveData(false)
@Volatile
var wasLoggedIn = false
......@@ -331,6 +335,7 @@ class MainViewModel @Inject constructor(
wasLoggedIn = true
enableDummyTraffic(preferences.isCoverTrafficOn)
loginProcess.postValue(DataRequestState.Success(true))
_areComponentsInitialized.value = true
} else {
loginProcess.postValue(DataRequestState.Error(err))
}
......
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mainLayout"
......@@ -10,12 +11,21 @@
<include
android:id="@+id/mainMenuView"
layout="@layout/component_menu"
android:visibility="gone" />
android:visibility="gone"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/contentCoordinatorLayout"
android:layout_width="0dp"
android:layout_height="0dp"
android:focusable="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:context=".ui.main.MainActivity">
<com.google.android.material.card.MaterialCardView
......@@ -46,13 +56,44 @@
</com.google.android.material.card.MaterialCardView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<View
android:id="@+id/initializingBackground"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="visible"
android:background="@drawable/bg_splash_screen"
android:clickable="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:visibility="visible"/>
<ProgressBar
android:id="@+id/initializingProgressBar"
style="@style/XxProgressBarCircularBlue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
android:indeterminateTint="@color/neutral_off_white"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintVertical_bias="0.80"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/mainBlurryImg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_height="0dp"
android:src="@drawable/bg_white"
android:translationZ="@dimen/spacing_10"
android:visibility="gone" />
android:visibility="gone"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/mainReportBtn"
......@@ -64,5 +105,7 @@
android:layout_marginBottom="@dimen/spacing_30"
android:src="@drawable/ic_bug_report"
android:visibility="gone"
android:tint="@color/white" />
</RelativeLayout>
\ No newline at end of file
android:tint="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment