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