diff --git a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt index 9e8fd8e0c..bf02966bc 100644 --- a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt @@ -77,16 +77,10 @@ import com.keylesspalace.tusky.fragment.NotificationsFragment import com.keylesspalace.tusky.interfaces.AccountSelectionListener import com.keylesspalace.tusky.interfaces.ActionButtonActivity import com.keylesspalace.tusky.interfaces.ReselectableFragment +import com.keylesspalace.tusky.interfaces.ResettableFragment import com.keylesspalace.tusky.pager.MainPagerAdapter import com.keylesspalace.tusky.settings.PrefKeys -import com.keylesspalace.tusky.util.ThemeUtils -import com.keylesspalace.tusky.util.deleteStaleCachedMedia -import com.keylesspalace.tusky.util.emojify -import com.keylesspalace.tusky.util.hide -import com.keylesspalace.tusky.util.removeShortcut -import com.keylesspalace.tusky.util.updateShortcut -import com.keylesspalace.tusky.util.viewBinding -import com.keylesspalace.tusky.util.visible +import com.keylesspalace.tusky.util.* import com.mikepenz.iconics.IconicsDrawable import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial import com.mikepenz.iconics.utils.colorInt @@ -95,19 +89,8 @@ import com.mikepenz.materialdrawer.holder.BadgeStyle import com.mikepenz.materialdrawer.holder.ColorHolder import com.mikepenz.materialdrawer.holder.StringHolder import com.mikepenz.materialdrawer.iconics.iconicsIcon -import com.mikepenz.materialdrawer.model.AbstractDrawerItem -import com.mikepenz.materialdrawer.model.DividerDrawerItem -import com.mikepenz.materialdrawer.model.PrimaryDrawerItem -import com.mikepenz.materialdrawer.model.ProfileDrawerItem -import com.mikepenz.materialdrawer.model.ProfileSettingDrawerItem -import com.mikepenz.materialdrawer.model.SecondaryDrawerItem -import com.mikepenz.materialdrawer.model.interfaces.IProfile -import com.mikepenz.materialdrawer.model.interfaces.descriptionRes -import com.mikepenz.materialdrawer.model.interfaces.descriptionText -import com.mikepenz.materialdrawer.model.interfaces.iconRes -import com.mikepenz.materialdrawer.model.interfaces.iconUrl -import com.mikepenz.materialdrawer.model.interfaces.nameRes -import com.mikepenz.materialdrawer.model.interfaces.nameText +import com.mikepenz.materialdrawer.model.* +import com.mikepenz.materialdrawer.model.interfaces.* import com.mikepenz.materialdrawer.util.* import com.mikepenz.materialdrawer.widget.AccountHeaderView import dagger.android.DispatchingAndroidInjector @@ -638,6 +621,9 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje if (popup.menu is MenuBuilder) { val menuBuilder = popup.menu as MenuBuilder + if (tabs[i].id in arrayOf(HOME, LOCAL, FEDERATED, HASHTAG, LIST)) { + menuBuilder.findItem(R.id.tabReset).isVisible = true + } if (tabs[i].id == LIST) { menuBuilder.findItem(R.id.tabEditList).isVisible = true } @@ -679,6 +665,11 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje (fragment as ReselectableFragment).onReselect() } } + R.id.tabReset -> { + if (fragment is ResettableFragment) { + fragment.onReset() + } + } R.id.tabEditList -> { AccountsInListFragment.newInstance( tabs[i].arguments.getOrNull(0).orEmpty(), diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineFragment.kt index 8cfd50470..429204279 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineFragment.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineFragment.kt @@ -25,14 +25,7 @@ import androidx.core.content.ContextCompat import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager -import androidx.recyclerview.widget.AsyncDifferConfig -import androidx.recyclerview.widget.AsyncListDiffer -import androidx.recyclerview.widget.DiffUtil -import androidx.recyclerview.widget.DividerItemDecoration -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.ListUpdateCallback -import androidx.recyclerview.widget.RecyclerView -import androidx.recyclerview.widget.SimpleItemAnimator +import androidx.recyclerview.widget.* import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener import at.connyduck.sparkbutton.helpers.Utils import autodispose2.androidx.lifecycle.autoDispose @@ -50,18 +43,9 @@ import com.keylesspalace.tusky.db.AccountManager import com.keylesspalace.tusky.di.Injectable import com.keylesspalace.tusky.di.ViewModelFactory import com.keylesspalace.tusky.fragment.SFragment -import com.keylesspalace.tusky.interfaces.ActionButtonActivity -import com.keylesspalace.tusky.interfaces.RefreshableFragment -import com.keylesspalace.tusky.interfaces.ReselectableFragment -import com.keylesspalace.tusky.interfaces.StatusActionListener +import com.keylesspalace.tusky.interfaces.* import com.keylesspalace.tusky.settings.PrefKeys -import com.keylesspalace.tusky.util.CardViewMode -import com.keylesspalace.tusky.util.ListStatusAccessibilityDelegate -import com.keylesspalace.tusky.util.StatusDisplayOptions -import com.keylesspalace.tusky.util.hide -import com.keylesspalace.tusky.util.show -import com.keylesspalace.tusky.util.viewBinding -import com.keylesspalace.tusky.util.visible +import com.keylesspalace.tusky.util.* import com.keylesspalace.tusky.view.EndlessOnScrollListener import com.keylesspalace.tusky.viewdata.AttachmentViewData import com.keylesspalace.tusky.viewdata.StatusViewData @@ -76,6 +60,7 @@ class TimelineFragment : StatusActionListener, Injectable, ReselectableFragment, + ResettableFragment, RefreshableFragment { @Inject @@ -281,7 +266,7 @@ class TimelineFragment : binding.swipeRefreshLayout.isEnabled = isSwipeToRefreshEnabled binding.statusView.hide() - viewModel.fullyRefresh() + viewModel.refresh() } override fun onReply(position: Int) { @@ -550,6 +535,10 @@ class TimelineFragment : } } + override fun onReset() { + viewModel.fullyRefresh() + } + override fun refreshContent() { onRefresh() } diff --git a/app/src/main/java/com/keylesspalace/tusky/interfaces/ResettableFragment.kt b/app/src/main/java/com/keylesspalace/tusky/interfaces/ResettableFragment.kt new file mode 100644 index 000000000..dbc762449 --- /dev/null +++ b/app/src/main/java/com/keylesspalace/tusky/interfaces/ResettableFragment.kt @@ -0,0 +1,5 @@ +package com.keylesspalace.tusky.interfaces + +interface ResettableFragment { + fun onReset() +} diff --git a/app/src/main/res/menu/view_tab_action.xml b/app/src/main/res/menu/view_tab_action.xml index 37d8c89b5..14e331bd9 100644 --- a/app/src/main/res/menu/view_tab_action.xml +++ b/app/src/main/res/menu/view_tab_action.xml @@ -5,6 +5,11 @@ android:icon="@drawable/ic_arrow_upward" android:title="@string/action_tab_jump_to_top" /> + + Quote Authorize Now! Jump to top + Reset tab Edit this list Use streaming in this tab Toggle notifications filter