diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt
index 15a2cf3afe..acfac104d4 100644
--- a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt
+++ b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt
@@ -19,9 +19,7 @@ package im.vector.riotx.features.home
import android.os.Bundle
import android.os.Parcelable
import android.view.LayoutInflater
-import android.view.View
import androidx.core.view.forEachIndexed
-import androidx.core.view.isVisible
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders
import com.airbnb.mvrx.args
@@ -31,7 +29,6 @@ import com.google.android.material.bottomnavigation.BottomNavigationItemView
import com.google.android.material.bottomnavigation.BottomNavigationMenuView
import im.vector.matrix.android.api.session.Session
import im.vector.matrix.android.api.session.crypto.keysbackup.KeysBackupState
-import im.vector.matrix.android.api.session.sync.SyncState
import im.vector.riotx.R
import im.vector.riotx.core.di.ScreenComponent
import im.vector.riotx.core.platform.ToolbarConfigurable
@@ -209,12 +206,7 @@ class HomeDetailFragment : VectorBaseFragment(), KeysBackupBanner.Delegate {
unreadCounterBadgeViews[INDEX_CATCHUP].render(UnreadCounterBadgeView.State(it.notificationCountCatchup, it.notificationHighlightCatchup))
unreadCounterBadgeViews[INDEX_PEOPLE].render(UnreadCounterBadgeView.State(it.notificationCountPeople, it.notificationHighlightPeople))
unreadCounterBadgeViews[INDEX_ROOMS].render(UnreadCounterBadgeView.State(it.notificationCountRooms, it.notificationHighlightRooms))
- syncProgressBarWrap.visibility = when (it.syncState) {
- is SyncState.RUNNING -> if (it.syncState.afterPause) View.VISIBLE else View.GONE
- else -> View.GONE
- }
- // TODO Create a View
- noNetworkBanner.isVisible = it.syncState is SyncState.NO_NETWORK
+ syncStateView.render(it.syncState)
}
companion object {
diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt
index 77e47cc468..cd1ccb01d2 100644
--- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt
+++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt
@@ -39,7 +39,6 @@ import androidx.core.content.ContextCompat
import androidx.core.util.Pair
import androidx.core.view.ViewCompat
import androidx.core.view.forEach
-import androidx.core.view.isVisible
import androidx.lifecycle.ViewModelProviders
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager
@@ -66,7 +65,6 @@ import im.vector.matrix.android.api.session.room.send.SendState
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
import im.vector.matrix.android.api.session.room.timeline.getLastMessageContent
import im.vector.matrix.android.api.session.room.timeline.getTextEditableContent
-import im.vector.matrix.android.api.session.sync.SyncState
import im.vector.matrix.android.api.session.user.model.User
import im.vector.riotx.R
import im.vector.riotx.core.di.ScreenComponent
@@ -252,12 +250,7 @@ class RoomDetailFragment :
}
roomDetailViewModel.selectSubscribe(RoomDetailViewState::syncState) { syncState ->
- syncProgressBarWrap.visibility = when (syncState) {
- is SyncState.RUNNING -> if (syncState.afterPause) View.VISIBLE else View.GONE
- else -> View.GONE
- }
- // TODO Create a View
- noNetworkBanner.isVisible = syncState is SyncState.NO_NETWORK
+ syncStateView.render(syncState)
}
}
diff --git a/vector/src/main/java/im/vector/riotx/features/sync/widget/SyncStateView.kt b/vector/src/main/java/im/vector/riotx/features/sync/widget/SyncStateView.kt
new file mode 100755
index 0000000000..2d474a13dd
--- /dev/null
+++ b/vector/src/main/java/im/vector/riotx/features/sync/widget/SyncStateView.kt
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2019 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.riotx.features.sync.widget
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.View
+import android.widget.FrameLayout
+import androidx.core.view.isVisible
+import im.vector.matrix.android.api.session.sync.SyncState
+import im.vector.riotx.R
+import kotlinx.android.synthetic.main.view_sync_state.view.*
+
+class SyncStateView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0)
+ : FrameLayout(context, attrs, defStyle) {
+
+ init {
+ View.inflate(context, R.layout.view_sync_state, this)
+ }
+
+
+ fun render(newState: SyncState) {
+ syncStateProgressBar.visibility = when (newState) {
+ is SyncState.RUNNING -> if (newState.afterPause) View.VISIBLE else View.GONE
+ else -> View.GONE
+ }
+ syncStateNoNetwork.isVisible = newState is SyncState.NO_NETWORK
+ }
+}
diff --git a/vector/src/main/res/layout/fragment_home_detail.xml b/vector/src/main/res/layout/fragment_home_detail.xml
index 7541829cca..8bc0603013 100644
--- a/vector/src/main/res/layout/fragment_home_detail.xml
+++ b/vector/src/main/res/layout/fragment_home_detail.xml
@@ -44,39 +44,13 @@
-
-
-
-
-
-
-
+ app:layout_constraintTop_toBottomOf="@id/groupToolbar" />
+ app:layout_constraintTop_toBottomOf="@id/syncStateView" />
-
-
-
-
-
-
-
-
+ app:layout_constraintTop_toBottomOf="@id/roomToolbar" />
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file