feat: Add left-nav entries for Local, Federated, and Direct Messages (#583)

Fixes #570
This commit is contained in:
Nik Clayton 2024-04-01 21:42:28 +02:00 committed by GitHub
parent d65d969257
commit 4ea42f4a2c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 59 additions and 1 deletions

View File

@ -624,6 +624,33 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvider {
)
}
},
primaryDrawerItem {
nameRes = R.string.title_public_local
iconRes = R.drawable.ic_local_24dp
onClick = {
startActivityWithSlideInAnimation(
TimelineActivityIntent.publicLocal(context),
)
}
},
primaryDrawerItem {
nameRes = R.string.title_public_federated
iconRes = R.drawable.ic_public_24dp
onClick = {
startActivityWithSlideInAnimation(
TimelineActivityIntent.publicFederated(context),
)
}
},
primaryDrawerItem {
nameRes = R.string.title_direct_messages
iconRes = R.drawable.ic_reblog_direct_24dp
onClick = {
startActivityWithSlideInAnimation(
TimelineActivityIntent.conversations(context),
)
}
},
primaryDrawerItem {
nameRes = R.string.action_view_bookmarks
iconicsIcon = GoogleMaterial.Icon.gmd_bookmark

View File

@ -25,9 +25,12 @@ 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.TimelineActivityIntent.Companion.bookmarks
import app.pachli.core.navigation.TimelineActivityIntent.Companion.conversations
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.navigation.TimelineActivityIntent.Companion.publicFederated
import app.pachli.core.navigation.TimelineActivityIntent.Companion.publicLocal
import app.pachli.core.network.model.Attachment
import app.pachli.core.network.model.Filter
import app.pachli.core.network.model.NewPoll
@ -386,7 +389,8 @@ class ReportActivityIntent(context: Context, accountId: String, userName: String
}
/**
* Use one of [bookmarks], [favourites], [hashtag], or [list] to construct.
* Use one of [bookmarks], [conversations], [favourites], [hashtag], [list], [publicFederated],
* or [publicLocal] to construct.
*/
class TimelineActivityIntent private constructor(context: Context) : Intent() {
init {
@ -405,6 +409,15 @@ class TimelineActivityIntent private constructor(context: Context) : Intent() {
putExtra(EXTRA_TIMELINE, Timeline.Bookmarks)
}
/**
* Show the user's conversations (direct messages).
*
* @param context
*/
fun conversations(context: Context) = TimelineActivityIntent(context).apply {
putExtra(EXTRA_TIMELINE, Timeline.Conversations)
}
/**
* Show the user's favourites.
*
@ -435,6 +448,24 @@ class TimelineActivityIntent private constructor(context: Context) : Intent() {
putExtra(EXTRA_TIMELINE, Timeline.UserList(listId, title))
}
/**
* Show statuses from the Public Federated feed
*
* @param context
*/
fun publicFederated(context: Context) = TimelineActivityIntent(context).apply {
putExtra(EXTRA_TIMELINE, Timeline.PublicFederated)
}
/**
* Show statuses from the Public Local feed
*
* @param context
*/
fun publicLocal(context: Context) = TimelineActivityIntent(context).apply {
putExtra(EXTRA_TIMELINE, Timeline.PublicLocal)
}
/** @return The [Timeline] to show */
fun getTimeline(intent: Intent) = IntentCompat.getParcelableExtra(intent, EXTRA_TIMELINE, Timeline::class.java)!!
}