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