refactor: Rename StatusListActivity to TimelineActivity (#577)

More accurately reflects what it does, and simplies the diffs for
upcoming work.
This commit is contained in:
Nik Clayton 2024-03-30 23:48:04 +01:00 committed by GitHub
parent 8257ded395
commit 64fae0ceb6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 52 additions and 53 deletions

View File

@ -125,7 +125,7 @@
<activity android:name=".components.notifications.NotificationsActivity" />
<activity android:name=".EditProfileActivity" />
<activity android:name=".components.preference.PreferencesActivity" />
<activity android:name=".StatusListActivity" />
<activity android:name=".TimelineActivity" />
<activity android:name=".components.accountlist.AccountListActivity" />
<activity android:name=".feature.about.AboutActivity" />
<activity android:name=".TabPreferenceActivity" />

View File

@ -99,7 +99,7 @@ import app.pachli.core.navigation.PreferencesActivityIntent
import app.pachli.core.navigation.PreferencesActivityIntent.PreferenceScreen
import app.pachli.core.navigation.ScheduledStatusActivityIntent
import app.pachli.core.navigation.SearchActivityIntent
import app.pachli.core.navigation.StatusListActivityIntent
import app.pachli.core.navigation.TimelineActivityIntent
import app.pachli.core.navigation.TrendingActivityIntent
import app.pachli.core.network.model.Account
import app.pachli.core.network.model.Notification
@ -607,7 +607,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvider {
iconicsIcon = GoogleMaterial.Icon.gmd_list
onClick = {
startActivityWithSlideInAnimation(
StatusListActivityIntent.list(this@MainActivity, list.id, list.title),
TimelineActivityIntent.list(this@MainActivity, list.id, list.title),
)
}
}
@ -634,7 +634,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvider {
nameRes = R.string.action_view_bookmarks
iconicsIcon = GoogleMaterial.Icon.gmd_bookmark
onClick = {
val intent = StatusListActivityIntent.bookmarks(context)
val intent = TimelineActivityIntent.bookmarks(context)
startActivityWithSlideInAnimation(intent)
}
},
@ -643,7 +643,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvider {
isSelectable = false
iconicsIcon = GoogleMaterial.Icon.gmd_star
onClick = {
val intent = StatusListActivityIntent.favourites(context)
val intent = TimelineActivityIntent.favourites(context)
startActivityWithSlideInAnimation(intent)
}
},

View File

@ -31,13 +31,13 @@ import app.pachli.core.common.util.unsafeLazy
import app.pachli.core.model.Timeline
import app.pachli.core.navigation.ComposeActivityIntent
import app.pachli.core.navigation.ComposeActivityIntent.ComposeOptions
import app.pachli.core.navigation.StatusListActivityIntent
import app.pachli.core.navigation.TimelineActivityIntent
import app.pachli.core.network.ServerOperation.ORG_JOINMASTODON_FILTERS_CLIENT
import app.pachli.core.network.ServerOperation.ORG_JOINMASTODON_FILTERS_SERVER
import app.pachli.core.network.model.Filter
import app.pachli.core.network.model.FilterContext
import app.pachli.core.network.model.FilterV1
import app.pachli.databinding.ActivityStatuslistBinding
import app.pachli.databinding.ActivityTimelineBinding
import app.pachli.interfaces.ActionButtonActivity
import app.pachli.interfaces.AppBarLayoutHost
import app.pachli.network.ServerRepository
@ -54,18 +54,17 @@ import retrofit2.HttpException
import timber.log.Timber
/**
* Show a list of statuses of a particular type; containing a particular hashtag,
* the user's favourites, bookmarks, etc.
* Show a single timeline.
*/
@AndroidEntryPoint
class StatusListActivity : BottomSheetActivity(), AppBarLayoutHost, ActionButtonActivity {
class TimelineActivity : BottomSheetActivity(), AppBarLayoutHost, ActionButtonActivity {
@Inject
lateinit var eventHub: EventHub
@Inject
lateinit var serverRepository: ServerRepository
private val binding: ActivityStatuslistBinding by viewBinding(ActivityStatuslistBinding::inflate)
private val binding: ActivityTimelineBinding by viewBinding(ActivityTimelineBinding::inflate)
private lateinit var timeline: Timeline
override val appBarLayout: AppBarLayout
@ -94,7 +93,7 @@ class StatusListActivity : BottomSheetActivity(), AppBarLayoutHost, ActionButton
setSupportActionBar(binding.includedToolbar.toolbar)
timeline = StatusListActivityIntent.getKind(intent)
timeline = TimelineActivityIntent.getTimeline(intent)
val title = when (timeline) {
is Timeline.Favourites -> getString(R.string.title_favourites)

View File

@ -69,7 +69,7 @@ import app.pachli.core.navigation.ComposeActivityIntent
import app.pachli.core.navigation.ComposeActivityIntent.ComposeOptions
import app.pachli.core.navigation.EditProfileActivityIntent
import app.pachli.core.navigation.ReportActivityIntent
import app.pachli.core.navigation.StatusListActivityIntent
import app.pachli.core.navigation.TimelineActivityIntent
import app.pachli.core.navigation.ViewMediaActivityIntent
import app.pachli.core.network.model.Account
import app.pachli.core.network.model.Relationship
@ -951,7 +951,7 @@ class AccountActivity :
}
override fun onViewTag(tag: String) {
val intent = StatusListActivityIntent.hashtag(this, tag)
val intent = TimelineActivityIntent.hashtag(this, tag)
startActivityWithSlideInAnimation(intent)
}

View File

@ -47,7 +47,7 @@ import app.pachli.core.navigation.AccountListActivityIntent.Kind.FOLLOWS
import app.pachli.core.navigation.AccountListActivityIntent.Kind.FOLLOW_REQUESTS
import app.pachli.core.navigation.AccountListActivityIntent.Kind.MUTES
import app.pachli.core.navigation.AccountListActivityIntent.Kind.REBLOGGED
import app.pachli.core.navigation.StatusListActivityIntent
import app.pachli.core.navigation.TimelineActivityIntent
import app.pachli.core.network.model.HttpHeaderLink
import app.pachli.core.network.model.Relationship
import app.pachli.core.network.model.TimelineAccount
@ -159,7 +159,7 @@ class AccountListFragment :
override fun onViewTag(tag: String) {
(activity as BaseActivity?)
?.startActivityWithSlideInAnimation(StatusListActivityIntent.hashtag(requireContext(), tag))
?.startActivityWithSlideInAnimation(TimelineActivityIntent.hashtag(requireContext(), tag))
}
override fun onViewAccount(id: String) {

View File

@ -33,7 +33,7 @@ import app.pachli.core.common.extensions.hide
import app.pachli.core.common.extensions.show
import app.pachli.core.common.extensions.viewBinding
import app.pachli.core.common.util.unsafeLazy
import app.pachli.core.navigation.StatusListActivityIntent
import app.pachli.core.navigation.TimelineActivityIntent
import app.pachli.core.preferences.PrefKeys
import app.pachli.core.ui.BackgroundMessage
import app.pachli.databinding.ActivityAnnouncementsBinding
@ -186,7 +186,7 @@ class AnnouncementsActivity :
}
override fun onViewTag(tag: String) {
val intent = StatusListActivityIntent.hashtag(this, tag)
val intent = TimelineActivityIntent.hashtag(this, tag)
startActivityWithSlideInAnimation(intent)
}

View File

@ -44,7 +44,7 @@ import app.pachli.core.common.extensions.viewBinding
import app.pachli.core.common.extensions.visible
import app.pachli.core.navigation.AccountActivityIntent
import app.pachli.core.navigation.AttachmentViewData
import app.pachli.core.navigation.StatusListActivityIntent
import app.pachli.core.navigation.TimelineActivityIntent
import app.pachli.core.network.model.Poll
import app.pachli.core.network.model.Status
import app.pachli.core.preferences.PrefKeys
@ -316,7 +316,7 @@ class ConversationsFragment :
}
override fun onViewTag(tag: String) {
val intent = StatusListActivityIntent.hashtag(requireContext(), tag)
val intent = TimelineActivityIntent.hashtag(requireContext(), tag)
startActivity(intent)
}

View File

@ -19,7 +19,7 @@ import app.pachli.core.common.extensions.hide
import app.pachli.core.common.extensions.show
import app.pachli.core.common.extensions.viewBinding
import app.pachli.core.common.extensions.visible
import app.pachli.core.navigation.StatusListActivityIntent
import app.pachli.core.navigation.TimelineActivityIntent
import app.pachli.core.network.retrofit.MastodonApi
import app.pachli.core.preferences.PrefKeys
import app.pachli.databinding.ActivityFollowedTagsBinding
@ -172,7 +172,7 @@ class FollowedTagsActivity :
}
override fun onViewTag(tag: String) {
startActivityWithSlideInAnimation(StatusListActivityIntent.hashtag(this, tag))
startActivityWithSlideInAnimation(TimelineActivityIntent.hashtag(this, tag))
}
override suspend fun search(token: String): List<ComposeAutoCompleteAdapter.AutocompleteResult> {

View File

@ -42,7 +42,7 @@ import app.pachli.core.common.extensions.viewBinding
import app.pachli.core.common.extensions.visible
import app.pachli.core.navigation.AccountActivityIntent
import app.pachli.core.navigation.AttachmentViewData
import app.pachli.core.navigation.StatusListActivityIntent
import app.pachli.core.navigation.TimelineActivityIntent
import app.pachli.core.navigation.ViewMediaActivityIntent
import app.pachli.core.network.model.Attachment
import app.pachli.core.network.model.Status
@ -211,7 +211,7 @@ class ReportStatusesFragment :
override fun onViewAccount(id: String) = startActivity(AccountActivityIntent(requireContext(), id))
override fun onViewTag(tag: String) = startActivity(StatusListActivityIntent.hashtag(requireContext(), tag))
override fun onViewTag(tag: String) = startActivity(TimelineActivityIntent.hashtag(requireContext(), tag))
override fun onViewUrl(url: String) = viewModel.checkClickedUrl(url)

View File

@ -22,7 +22,7 @@ import app.pachli.core.activity.BottomSheetActivity
import app.pachli.core.common.extensions.viewBinding
import app.pachli.core.common.extensions.visible
import app.pachli.core.navigation.AccountActivityIntent
import app.pachli.core.navigation.StatusListActivityIntent
import app.pachli.core.navigation.TimelineActivityIntent
import app.pachli.core.network.retrofit.MastodonApi
import app.pachli.databinding.FragmentSearchBinding
import app.pachli.interfaces.LinkListener
@ -144,7 +144,7 @@ abstract class SearchFragment<T : Any> :
}
override fun onViewTag(tag: String) {
bottomSheetActivity?.startActivityWithSlideInAnimation(StatusListActivityIntent.hashtag(requireContext(), tag))
bottomSheetActivity?.startActivityWithSlideInAnimation(TimelineActivityIntent.hashtag(requireContext(), tag))
}
override fun onViewUrl(url: String) {

View File

@ -43,7 +43,7 @@ import app.pachli.core.common.extensions.hide
import app.pachli.core.common.extensions.show
import app.pachli.core.common.extensions.viewBinding
import app.pachli.core.designsystem.R as DR
import app.pachli.core.navigation.StatusListActivityIntent
import app.pachli.core.navigation.TimelineActivityIntent
import app.pachli.core.ui.BackgroundMessage
import app.pachli.databinding.FragmentTrendingTagsBinding
import app.pachli.interfaces.ActionButtonActivity
@ -173,7 +173,7 @@ class TrendingTagsFragment :
fun onViewTag(tag: String) {
(requireActivity() as BaseActivity).startActivityWithSlideInAnimation(
StatusListActivityIntent.hashtag(
TimelineActivityIntent.hashtag(
requireContext(),
tag,
),

View File

@ -39,7 +39,7 @@ import app.pachli.core.common.extensions.viewBinding
import app.pachli.core.common.string.unicodeWrap
import app.pachli.core.designsystem.R as DR
import app.pachli.core.navigation.AccountActivityIntent
import app.pachli.core.navigation.StatusListActivityIntent
import app.pachli.core.navigation.TimelineActivityIntent
import app.pachli.core.preferences.PrefKeys
import app.pachli.core.preferences.SharedPreferencesRepository
import app.pachli.core.ui.BackgroundMessage
@ -187,7 +187,7 @@ class ViewEditsFragment :
}
override fun onViewTag(tag: String) {
bottomSheetActivity?.startActivityWithSlideInAnimation(StatusListActivityIntent.hashtag(requireContext(), tag))
bottomSheetActivity?.startActivityWithSlideInAnimation(TimelineActivityIntent.hashtag(requireContext(), tag))
}
override fun onViewUrl(url: String) {

View File

@ -52,7 +52,7 @@ import app.pachli.core.navigation.AttachmentViewData
import app.pachli.core.navigation.ComposeActivityIntent
import app.pachli.core.navigation.ComposeActivityIntent.ComposeOptions
import app.pachli.core.navigation.ReportActivityIntent
import app.pachli.core.navigation.StatusListActivityIntent
import app.pachli.core.navigation.TimelineActivityIntent
import app.pachli.core.navigation.ViewMediaActivityIntent
import app.pachli.core.network.ServerOperation.ORG_JOINMASTODON_STATUSES_TRANSLATE
import app.pachli.core.network.model.Attachment
@ -418,7 +418,7 @@ abstract class SFragment<T : IStatusViewData> : Fragment(), StatusActionListener
}
protected fun viewTag(tag: String) {
startActivity(StatusListActivityIntent.hashtag(requireContext(), tag))
startActivity(TimelineActivityIntent.hashtag(requireContext(), tag))
}
private fun openReportPage(accountId: String, accountUsername: String, statusId: String) {

View File

@ -4,7 +4,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="app.pachli.StatusListActivity">
tools:context="app.pachli.TimelineActivity">
<include
android:id="@+id/includedToolbar"

View File

@ -12,7 +12,7 @@ This introduces a dependency between A and B.
This is worse if B also wants to start A.
For example, if A is `StatusListActivity` and B is`ViewThreadActivity`. The user might click a status in `StatusListActivity` to view the thread, starting `ViewThreadActivity`. But from the thread they might click a hashtag to view the list of statuses with that hashtag. Now `StatusListActivity` and `ViewThreadActivity` have a circular dependency.
For example, if A is `TimelineActivity` and B is`ViewThreadActivity`. The user might click a status in `TimelineActivity` to view the thread, starting `ViewThreadActivity`. But from the thread they might click a hashtag to view the list of statuses with that hashtag. Now `TimelineActivity` and `ViewThreadActivity` have a circular dependency.
Even if that doesn't happen the dependency means that any changes to B will trigger a rebuild of A, even if the changes to B are not relevant.

View File

@ -24,10 +24,10 @@ import androidx.core.content.IntentCompat
import app.pachli.core.database.model.DraftAttachment
import app.pachli.core.model.Timeline
import app.pachli.core.navigation.LoginActivityIntent.LoginMode
import app.pachli.core.navigation.StatusListActivityIntent.Companion.bookmarks
import app.pachli.core.navigation.StatusListActivityIntent.Companion.favourites
import app.pachli.core.navigation.StatusListActivityIntent.Companion.hashtag
import app.pachli.core.navigation.StatusListActivityIntent.Companion.list
import app.pachli.core.navigation.TimelineActivityIntent.Companion.bookmarks
import app.pachli.core.navigation.TimelineActivityIntent.Companion.favourites
import app.pachli.core.navigation.TimelineActivityIntent.Companion.hashtag
import app.pachli.core.navigation.TimelineActivityIntent.Companion.list
import app.pachli.core.network.model.Attachment
import app.pachli.core.network.model.Filter
import app.pachli.core.network.model.NewPoll
@ -388,21 +388,21 @@ class ReportActivityIntent(context: Context, accountId: String, userName: String
/**
* Use one of [bookmarks], [favourites], [hashtag], or [list] to construct.
*/
class StatusListActivityIntent private constructor(context: Context) : Intent() {
class TimelineActivityIntent private constructor(context: Context) : Intent() {
init {
setClassName(context, QuadrantConstants.STATUS_LIST_ACTIVITY)
setClassName(context, QuadrantConstants.TIMELINE_ACTIVITY)
}
companion object {
private const val EXTRA_KIND = "kind"
private const val EXTRA_TIMELINE = "timeline"
/**
* Show the user's bookmarks.
*
* @param context
*/
fun bookmarks(context: Context) = StatusListActivityIntent(context).apply {
putExtra(EXTRA_KIND, Timeline.Bookmarks)
fun bookmarks(context: Context) = TimelineActivityIntent(context).apply {
putExtra(EXTRA_TIMELINE, Timeline.Bookmarks)
}
/**
@ -410,8 +410,8 @@ class StatusListActivityIntent private constructor(context: Context) : Intent()
*
* @param context
*/
fun favourites(context: Context) = StatusListActivityIntent(context).apply {
putExtra(EXTRA_KIND, Timeline.Favourites)
fun favourites(context: Context) = TimelineActivityIntent(context).apply {
putExtra(EXTRA_TIMELINE, Timeline.Favourites)
}
/**
@ -420,8 +420,8 @@ class StatusListActivityIntent private constructor(context: Context) : Intent()
* @param context
* @param hashtag The hashtag to show, without the leading "`#`"
*/
fun hashtag(context: Context, hashtag: String) = StatusListActivityIntent(context).apply {
putExtra(EXTRA_KIND, Timeline.Hashtags(listOf(hashtag)))
fun hashtag(context: Context, hashtag: String) = TimelineActivityIntent(context).apply {
putExtra(EXTRA_TIMELINE, Timeline.Hashtags(listOf(hashtag)))
}
/**
@ -431,12 +431,12 @@ class StatusListActivityIntent private constructor(context: Context) : Intent()
* @param listId ID of the list to show
* @param title The title to display
*/
fun list(context: Context, listId: String, title: String) = StatusListActivityIntent(context).apply {
putExtra(EXTRA_KIND, Timeline.UserList(listId, title))
fun list(context: Context, listId: String, title: String) = TimelineActivityIntent(context).apply {
putExtra(EXTRA_TIMELINE, Timeline.UserList(listId, title))
}
/** @return The [TimelineKind] to show */
fun getKind(intent: Intent) = IntentCompat.getParcelableExtra(intent, EXTRA_KIND, Timeline::class.java)!!
/** @return The [Timeline] to show */
fun getTimeline(intent: Intent) = IntentCompat.getParcelableExtra(intent, EXTRA_TIMELINE, Timeline::class.java)!!
}
}

View File

@ -44,7 +44,7 @@ import app.pachli.core.common.extensions.show
import app.pachli.core.common.extensions.viewBinding
import app.pachli.core.data.repository.Lists
import app.pachli.core.data.repository.ListsRepository.Companion.compareByListTitle
import app.pachli.core.navigation.StatusListActivityIntent
import app.pachli.core.navigation.TimelineActivityIntent
import app.pachli.core.network.model.MastoList
import app.pachli.core.network.model.UserListRepliesPolicy
import app.pachli.core.network.retrofit.apiresult.ApiError
@ -243,7 +243,7 @@ class ListsActivity : BaseActivity(), MenuProvider {
private fun onListSelected(listId: String, listTitle: String) {
startActivityWithSlideInAnimation(
StatusListActivityIntent.list(this, listId, listTitle),
TimelineActivityIntent.list(this, listId, listTitle),
)
}