enhancement: listing shortcuts in drawer; closes #213 (#274)

This commit is contained in:
Diego Beraldin 2023-12-10 19:40:22 +01:00
parent 37ad41559a
commit ae08e6c7a4
37 changed files with 149 additions and 55 deletions

View File

@ -34,6 +34,9 @@ fun CommunityItem(
val communityIcon = community.icon.orEmpty()
val communityHost = community.host
val iconSize = if (small) IconSize.m else IconSize.l
val fullColor = MaterialTheme.colorScheme.onBackground
val ancillaryColor = MaterialTheme.colorScheme.onBackground.copy(alpha = 0.75f)
Row(
modifier = modifier.padding(
vertical = Spacing.xs,
@ -70,7 +73,7 @@ fun CommunityItem(
append(title)
},
style = MaterialTheme.typography.bodyLarge,
color = MaterialTheme.colorScheme.onBackground,
color = fullColor,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
@ -83,7 +86,7 @@ fun CommunityItem(
}
},
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onBackground,
color = ancillaryColor,
)
}
if (showSubscribers) {

View File

@ -67,7 +67,10 @@ import com.github.diegoberaldin.raccoonforlemmy.core.navigation.DrawerEvent
import com.github.diegoberaldin.raccoonforlemmy.core.navigation.di.getDrawerCoordinator
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.ListingType
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.UserModel
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.toIcon
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.toReadableName
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
import com.github.diegoberaldin.raccoonforlemmy.resources.di.getLanguageRepository
import dev.icerock.moko.resources.compose.localized
@ -97,7 +100,6 @@ object ModalDrawerContent : Tab {
}
val languageRepository = remember { getLanguageRepository() }
val themeRepository = remember { getThemeRepository() }
val lang by languageRepository.currentLanguage.collectAsState()
LaunchedEffect(model) {
model.effects.onEach { evt ->
@ -119,6 +121,13 @@ object ModalDrawerContent : Tab {
uiFontSizeWorkaround = true
}.launchIn(this)
}
LaunchedEffect(languageRepository) {
languageRepository.currentLanguage.drop(1).onEach {
uiFontSizeWorkaround = false
delay(50)
uiFontSizeWorkaround = true
}.launchIn(this)
}
if (!uiFontSizeWorkaround) {
return
}
@ -126,7 +135,6 @@ object ModalDrawerContent : Tab {
Column(
modifier = Modifier.fillMaxWidth(0.9f)
) {
LaunchedEffect(lang) {}
DrawerHeader(
user = uiState.user,
@ -163,15 +171,23 @@ object ModalDrawerContent : Tab {
modifier = Modifier.fillMaxSize().padding(horizontal = Spacing.xxs),
verticalArrangement = Arrangement.spacedBy(Spacing.xxs),
) {
item {
DrawerShortcut(
title = stringResource(MR.strings.navigation_drawer_title_subscriptions),
icon = Icons.Default.ManageAccounts,
onSelected = {
coordinator.toggleDrawer()
coordinator.sendEvent(DrawerEvent.ManageSubscriptions)
})
for (listingType in listOf(
ListingType.Subscribed,
ListingType.All,
ListingType.Local,
)) {
item {
DrawerShortcut(
title = listingType.toReadableName(),
icon = listingType.toIcon(),
onSelected = {
coordinator.toggleDrawer()
coordinator.sendEvent(
DrawerEvent.ChangeListingType(listingType)
)
},
)
}
}
item {
DrawerShortcut(title = stringResource(MR.strings.navigation_drawer_title_bookmarks),
@ -181,6 +197,15 @@ object ModalDrawerContent : Tab {
coordinator.sendEvent(DrawerEvent.OpenBookmarks)
})
}
item {
DrawerShortcut(
title = stringResource(MR.strings.navigation_drawer_title_subscriptions),
icon = Icons.Default.ManageAccounts,
onSelected = {
coordinator.toggleDrawer()
coordinator.sendEvent(DrawerEvent.ManageSubscriptions)
})
}
items(uiState.multiCommunities) { community ->
MultiCommunityItem(
@ -227,6 +252,35 @@ object ModalDrawerContent : Tab {
text = stringResource(MR.strings.sidebar_not_logged_message),
style = MaterialTheme.typography.bodySmall,
)
Text(
modifier = Modifier.padding(horizontal = Spacing.s, vertical = Spacing.s),
text = stringResource(MR.strings.home_listing_title),
style = MaterialTheme.typography.titleMedium,
)
LazyColumn(
modifier = Modifier.fillMaxSize().padding(horizontal = Spacing.xxs),
verticalArrangement = Arrangement.spacedBy(Spacing.xxs),
) {
for (listingType in listOf(
ListingType.All,
ListingType.Local,
)) {
item {
DrawerShortcut(
title = listingType.toReadableName(),
icon = listingType.toIcon(),
onSelected = {
coordinator.toggleDrawer()
coordinator.sendEvent(
DrawerEvent.ChangeListingType(listingType)
)
},
)
}
}
}
}
}
@ -257,6 +311,8 @@ private fun DrawerHeader(
onOpenChangeInstance: (() -> Unit)? = null,
) {
val avatarSize = 52.dp
val fullColor = MaterialTheme.colorScheme.onBackground
val ancillaryColor = MaterialTheme.colorScheme.onBackground.copy(alpha = 0.75f)
Row(
modifier = Modifier.padding(
top = Spacing.m,
@ -299,7 +355,7 @@ private fun DrawerHeader(
}
},
style = MaterialTheme.typography.titleLarge,
color = MaterialTheme.colorScheme.onBackground,
color = fullColor,
)
Text(
text = buildString {
@ -310,7 +366,7 @@ private fun DrawerHeader(
maxLines = 1,
overflow = TextOverflow.Ellipsis,
style = MaterialTheme.typography.titleSmall,
color = MaterialTheme.colorScheme.onBackground,
color = ancillaryColor,
)
}
} else {
@ -325,13 +381,13 @@ private fun DrawerHeader(
Text(
text = anonymousTitle,
style = MaterialTheme.typography.titleLarge,
color = MaterialTheme.colorScheme.onBackground,
color = fullColor,
)
Row {
Text(
text = instance.orEmpty(),
style = MaterialTheme.typography.titleSmall,
color = MaterialTheme.colorScheme.onBackground,
color = ancillaryColor,
)
Spacer(modifier = Modifier.weight(1f))
Icon(

View File

@ -9,19 +9,19 @@ import kotlinx.coroutines.launch
class DefaultDrawerCoordinator : DrawerCoordinator {
override val toggleEvents = MutableSharedFlow<DrawerEvent>()
override val events = MutableSharedFlow<DrawerEvent>()
override val gesturesEnabled = MutableStateFlow(true)
private val scope = CoroutineScope(SupervisorJob() + Dispatchers.Default)
override fun toggleDrawer() {
scope.launch {
toggleEvents.emit(DrawerEvent.Toggled)
events.emit(DrawerEvent.Toggled)
}
}
override fun sendEvent(event: DrawerEvent) {
scope.launch {
toggleEvents.emit(event)
events.emit(event)
}
}

View File

@ -3,6 +3,7 @@ package com.github.diegoberaldin.raccoonforlemmy.core.navigation
import androidx.compose.runtime.Stable
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.data.MultiCommunityModel
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommunityModel
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.ListingType
import kotlinx.coroutines.flow.SharedFlow
import kotlinx.coroutines.flow.StateFlow
@ -12,11 +13,12 @@ sealed interface DrawerEvent {
data class OpenMultiCommunity(val community: MultiCommunityModel) : DrawerEvent
data object ManageSubscriptions : DrawerEvent
data object OpenBookmarks : DrawerEvent
data class ChangeListingType(val value: ListingType) : DrawerEvent
}
@Stable
interface DrawerCoordinator {
val toggleEvents: SharedFlow<DrawerEvent>
val events: SharedFlow<DrawerEvent>
val gesturesEnabled: StateFlow<Boolean>
fun toggleDrawer()
fun sendEvent(event: DrawerEvent)

View File

@ -121,7 +121,7 @@
<string name="multi_community_editor_title">محرر متعدد المجتمعات</string>
<string name="navigation_drawer_anonymous">مجهول</string>
<string name="navigation_drawer_title_bookmarks">تم الحفظ</string>
<string name="navigation_drawer_title_subscriptions">الاشتراكات</string>
<string name="navigation_drawer_title_subscriptions">إدارة الاشتراكات</string>
<string name="navigation_home">المنشورات</string>
<string name="navigation_inbox">صندوق الوارد</string>
<string name="navigation_profile">ملف التعريف</string>

View File

@ -154,7 +154,7 @@
<string name="multi_community_editor_title">Multi-community editor</string>
<string name="navigation_drawer_anonymous">Anonymous</string>
<string name="navigation_drawer_title_bookmarks">Saved</string>
<string name="navigation_drawer_title_subscriptions">Subscriptions</string>
<string name="navigation_drawer_title_subscriptions">Manage subscriptions</string>
<string name="navigation_home">Posts</string>
<string name="navigation_inbox">Inbox</string>
<string name="navigation_profile">Profile</string>

View File

@ -124,7 +124,7 @@
<string name="multi_community_editor_title">Редактор за различни общности</string>
<string name="navigation_drawer_anonymous">Анонимен</string>
<string name="navigation_drawer_title_bookmarks">Запазено</string>
<string name="navigation_drawer_title_subscriptions">Абонаменти</string>
<string name="navigation_drawer_title_subscriptions">Управление на абонаменти</string>
<string name="navigation_home">Публикации</string>
<string name="navigation_inbox">Входяща Кутия</string>
<string name="navigation_profile">Профил</string>

View File

@ -123,7 +123,7 @@
<string name="multi_community_editor_title">Editor pro více komunit</string>
<string name="navigation_drawer_anonymous">Anonymní</string>
<string name="navigation_drawer_title_bookmarks">Uloženo</string>
<string name="navigation_drawer_title_subscriptions">Předplatné</string>
<string name="navigation_drawer_title_subscriptions">Správa předplatných</string>
<string name="navigation_home">Příspěvky</string>
<string name="navigation_inbox">Doručené</string>
<string name="navigation_profile">Profil</string>

View File

@ -123,7 +123,7 @@
<string name="multi_community_editor_title">Multifællesskabsredaktør</string>
<string name="navigation_drawer_anonymous">Anonym</string>
<string name="navigation_drawer_title_bookmarks">Gemt</string>
<string name="navigation_drawer_title_subscriptions">Abonnementer</string>
<string name="navigation_drawer_title_subscriptions">Administrer abonnementer</string>
<string name="navigation_home">Indlæg</string>
<string name="navigation_inbox">Indbakke</string>
<string name="navigation_profile">Profil</string>

View File

@ -125,7 +125,7 @@
<string name="multi_community_editor_title">Multi-Community-Redakteur</string>
<string name="navigation_drawer_anonymous">Anonym</string>
<string name="navigation_drawer_title_bookmarks">Gerettet</string>
<string name="navigation_drawer_title_subscriptions">Abonnements</string>
<string name="navigation_drawer_title_subscriptions">Abonnements verwalten</string>
<string name="navigation_home">Beträge</string>
<string name="navigation_inbox">Posteingang</string>
<string name="navigation_profile">Profil</string>

View File

@ -125,7 +125,7 @@
<string name="multi_community_editor_title">Επεξεργαστής πολυκοινότητας</string>
<string name="navigation_drawer_anonymous">Ανώνυμος</string>
<string name="navigation_drawer_title_bookmarks">Αποθηκευμένα</string>
<string name="navigation_drawer_title_subscriptions">Συνδρομές</string>
<string name="navigation_drawer_title_subscriptions">Διαχείριση συνδρομών</string>
<string name="navigation_home">Αναρτήσεις</string>
<string name="navigation_inbox">Εισερχόμενα</string>
<string name="navigation_profile">Προφίλ</string>

View File

@ -123,7 +123,7 @@
<string name="multi_community_editor_title">Multi-komunuma redaktilo</string>
<string name="navigation_drawer_anonymous">Anonima</string>
<string name="navigation_drawer_title_bookmarks">Konservitajn erojn</string>
<string name="navigation_drawer_title_subscriptions">Subskriboj</string>
<string name="navigation_drawer_title_subscriptions">Administri abonojn</string>
<string name="navigation_home">Afiŝoj</string>
<string name="navigation_inbox">Enirkesto</string>
<string name="navigation_profile">Profilo</string>

View File

@ -52,7 +52,7 @@
<string name="explore_result_type_users">Usuarios</string>
<string name="explore_search_placeholder">Búsqueda</string>
<string name="home_instance_via">via %1$s</string>
<string name="home_listing_title">Tipo de listado</string>
<string name="home_listing_title">Listados</string>
<string name="home_listing_type_all">Todos</string>
<string name="home_listing_type_local">Locales</string>
<string name="home_listing_type_subscribed">Suscripciones</string>
@ -123,7 +123,7 @@
<string name="multi_community_editor_title">Editor multi-comunidad</string>
<string name="navigation_drawer_anonymous">Anónimo</string>
<string name="navigation_drawer_title_bookmarks">Guardados</string>
<string name="navigation_drawer_title_subscriptions">Suscripciones</string>
<string name="navigation_drawer_title_subscriptions">Gestionar suscripciones</string>
<string name="navigation_home">Publicaciones</string>
<string name="navigation_inbox">Mensajes</string>
<string name="navigation_profile">Perfil</string>

View File

@ -123,7 +123,7 @@
<string name="multi_community_editor_title">Mitme kogukonna redaktor</string>
<string name="navigation_drawer_anonymous">Anonüümne</string>
<string name="navigation_drawer_title_bookmarks">Salvestatud</string>
<string name="navigation_drawer_title_subscriptions">Tellimused</string>
<string name="navigation_drawer_title_subscriptions">Tellimuste haldamine</string>
<string name="navigation_home">Postid</string>
<string name="navigation_inbox">Sisendkaust</string>
<string name="navigation_profile">Profiil</string>

View File

@ -123,7 +123,7 @@
<string name="multi_community_editor_title">Moniyhteisöeditori</string>
<string name="navigation_drawer_anonymous">Anonyymi</string>
<string name="navigation_drawer_title_bookmarks">Tallennettu</string>
<string name="navigation_drawer_title_subscriptions">Vuokrasopimukset</string>
<string name="navigation_drawer_title_subscriptions">Hallinnoi tilauksia</string>
<string name="navigation_home">Viestit</string>
<string name="navigation_inbox">Saapuneet-kansio</string>
<string name="navigation_profile">Profiili</string>

View File

@ -125,7 +125,7 @@
<string name="multi_community_editor_title">Éditeur multi-communauté</string>
<string name="navigation_drawer_anonymous">Anonyme</string>
<string name="navigation_drawer_title_bookmarks">Sauvegardés</string>
<string name="navigation_drawer_title_subscriptions">Abonnements</string>
<string name="navigation_drawer_title_subscriptions">Gérer abonnements</string>
<string name="navigation_home">Publications</string>
<string name="navigation_inbox">Boîte</string>
<string name="navigation_profile">Profil</string>

View File

@ -127,7 +127,7 @@
<string name="multi_community_editor_title">Eagarthóir ilphobail</string>
<string name="navigation_drawer_anonymous">Gan ainm</string>
<string name="navigation_drawer_title_bookmarks">Míreanna sábháilte</string>
<string name="navigation_drawer_title_subscriptions">Suibscríobh</string>
<string name="navigation_drawer_title_subscriptions">Bainistigh síntiúis</string>
<string name="navigation_home">Postálacha</string>
<string name="navigation_inbox">Bosca Isteach</string>
<string name="navigation_profile">Próifíl</string>

View File

@ -124,7 +124,7 @@
<string name="multi_community_editor_title">Uređivač za više zajednica</string>
<string name="navigation_drawer_anonymous">Anonimno</string>
<string name="navigation_drawer_title_bookmarks">Spremljeno</string>
<string name="navigation_drawer_title_subscriptions">Pretplate</string>
<string name="navigation_drawer_title_subscriptions">Upravljanje pretplatama</string>
<string name="navigation_home">Objave</string>
<string name="navigation_inbox">Ulazna pošta, ulazne poruke, ulazni spremnik</string>
<string name="navigation_profile">Profil</string>

View File

@ -123,7 +123,7 @@
<string name="multi_community_editor_title">Többközösségi szerkesztő</string>
<string name="navigation_drawer_anonymous">Névtelen</string>
<string name="navigation_drawer_title_bookmarks">Mentve</string>
<string name="navigation_drawer_title_subscriptions">Feliratkozások</string>
<string name="navigation_drawer_title_subscriptions">Előfizetések kezelése</string>
<string name="navigation_home">Bejegyzések</string>
<string name="navigation_inbox">Beérkezett üzenetek</string>
<string name="navigation_profile">Profil</string>

View File

@ -52,7 +52,7 @@
<string name="explore_result_type_users">Utenti</string>
<string name="explore_search_placeholder">Ricerca</string>
<string name="home_instance_via">via %1$s</string>
<string name="home_listing_title">Tipo di feed</string>
<string name="home_listing_title">Feed</string>
<string name="home_listing_type_all">Tutti</string>
<string name="home_listing_type_local">Locali</string>
<string name="home_listing_type_subscribed">Iscrizioni</string>
@ -125,7 +125,7 @@
<string name="multi_community_editor_title">Editor Multi-comunità</string>
<string name="navigation_drawer_anonymous">Anonimo</string>
<string name="navigation_drawer_title_bookmarks">Salvati</string>
<string name="navigation_drawer_title_subscriptions">Iscrizioni</string>
<string name="navigation_drawer_title_subscriptions">Gestione iscrizioni</string>
<string name="navigation_home">Post</string>
<string name="navigation_inbox">Inbox</string>
<string name="navigation_profile">Profilo</string>

View File

@ -123,7 +123,7 @@
<string name="multi_community_editor_title">Kelių bendruomenių redaktorius</string>
<string name="navigation_drawer_anonymous">Anonimiškas</string>
<string name="navigation_drawer_title_bookmarks">Įrašyta</string>
<string name="navigation_drawer_title_subscriptions">Prenumeratos</string>
<string name="navigation_drawer_title_subscriptions">Tvarkyti prenumeratas</string>
<string name="navigation_home">Postai</string>
<string name="navigation_inbox">Gautieji</string>
<string name="navigation_profile">Profilis</string>

View File

@ -124,7 +124,7 @@
<string name="multi_community_editor_title">Vairāku kopienu redaktors</string>
<string name="navigation_drawer_anonymous">Anonīmi</string>
<string name="navigation_drawer_title_bookmarks">Saglabāts</string>
<string name="navigation_drawer_title_subscriptions">Abonementi</string>
<string name="navigation_drawer_title_subscriptions">Pārvaldīt abonementus</string>
<string name="navigation_home">Ieraksti</string>
<string name="navigation_inbox">Iesūtne</string>
<string name="navigation_profile">Profils</string>

View File

@ -123,7 +123,7 @@
<string name="multi_community_editor_title">Editur multikomunitarju</string>
<string name="navigation_drawer_anonymous">Anonimu</string>
<string name="navigation_drawer_title_bookmarks">Issejvjati</string>
<string name="navigation_drawer_title_subscriptions">Sottoskrizzjonijiet</string>
<string name="navigation_drawer_title_subscriptions">Immaniġġja l-abbonamenti</string>
<string name="navigation_home">Postijet</string>
<string name="navigation_inbox">Inbox</string>
<string name="navigation_profile">Profil</string>

View File

@ -125,7 +125,7 @@
<string name="multi_community_editor_title">Multi-gemeenschappen editor</string>
<string name="navigation_drawer_anonymous">Anoniem</string>
<string name="navigation_drawer_title_bookmarks">Opgeslagen</string>
<string name="navigation_drawer_title_subscriptions">Abonnementen</string>
<string name="navigation_drawer_title_subscriptions">Beheer abonnementen</string>
<string name="navigation_home">Berichten</string>
<string name="navigation_inbox">Inbox</string>
<string name="navigation_profile">Profiel</string>

View File

@ -125,7 +125,7 @@
<string name="multi_community_editor_title">Multisamfunnsredaktør</string>
<string name="navigation_drawer_anonymous">Anonym</string>
<string name="navigation_drawer_title_bookmarks">Lagret</string>
<string name="navigation_drawer_title_subscriptions">Abonnement</string>
<string name="navigation_drawer_title_subscriptions">Administrer abonnementer</string>
<string name="navigation_home">Nyheter</string>
<string name="navigation_inbox">Inbox</string>
<string name="navigation_profile">Profil</string>

View File

@ -124,7 +124,7 @@
<string name="multi_community_editor_title">Edytor wielospołecznościowy</string>
<string name="navigation_drawer_anonymous">Anonimowy</string>
<string name="navigation_drawer_title_bookmarks">Zapisane</string>
<string name="navigation_drawer_title_subscriptions">Subskrypcje</string>
<string name="navigation_drawer_title_subscriptions">Zarządzanie subskrypcjami</string>
<string name="navigation_home">Posty</string>
<string name="navigation_inbox">Skrzynka</string>
<string name="navigation_profile">Profil</string>

View File

@ -123,7 +123,7 @@
<string name="multi_community_editor_title">Editor multi-comunidad</string>
<string name="navigation_drawer_anonymous">Anônimo</string>
<string name="navigation_drawer_title_bookmarks">Guardados</string>
<string name="navigation_drawer_title_subscriptions">Subscripções</string>
<string name="navigation_drawer_title_subscriptions">Gerenciar subscripções</string>
<string name="navigation_home">Publicações</string>
<string name="navigation_inbox">Caixa</string>
<string name="navigation_profile">Perfil</string>

View File

@ -124,7 +124,7 @@
<string name="multi_community_editor_title">Editor multi-comunitate</string>
<string name="navigation_drawer_anonymous">Anonim</string>
<string name="navigation_drawer_title_bookmarks">Salvate</string>
<string name="navigation_drawer_title_subscriptions">Abonamente</string>
<string name="navigation_drawer_title_subscriptions">Gestionare abonamentelor</string>
<string name="navigation_home">Postări</string>
<string name="navigation_inbox">Inbox</string>
<string name="navigation_profile">Profil</string>

View File

@ -123,7 +123,7 @@
<string name="multi_community_editor_title">Редактор для нескольких сообществ</string>
<string name="navigation_drawer_anonymous">Анонимные</string>
<string name="navigation_drawer_title_bookmarks">Сохранено</string>
<string name="navigation_drawer_title_subscriptions">Подписки</string>
<string name="navigation_drawer_title_subscriptions">Управление подписками</string>
<string name="navigation_home">Записи</string>
<string name="navigation_inbox">Входящие</string>
<string name="navigation_profile">Профиль</string>

View File

@ -124,7 +124,7 @@
<string name="multi_community_editor_title">Flergemenskapsredaktör</string>
<string name="navigation_drawer_anonymous">Anonym</string>
<string name="navigation_drawer_title_bookmarks">Sparad</string>
<string name="navigation_drawer_title_subscriptions">Prenumerationer</string>
<string name="navigation_drawer_title_subscriptions">Hantera prenumerationer</string>
<string name="navigation_home">Inlägg</string>
<string name="navigation_inbox">Inkorg</string>
<string name="navigation_profile">Profil</string>

View File

@ -124,7 +124,7 @@
<string name="multi_community_editor_title">Editor pre viaceré komunity</string>
<string name="navigation_drawer_anonymous">Anonym</string>
<string name="navigation_drawer_title_bookmarks">Uložené</string>
<string name="navigation_drawer_title_subscriptions">Predplatné</string>
<string name="navigation_drawer_title_subscriptions">Spravovať odbery</string>
<string name="navigation_home">Príspevky</string>
<string name="navigation_inbox">Doručená pošta</string>
<string name="navigation_profile">Profil</string>

View File

@ -122,7 +122,7 @@
<string name="multi_community_editor_title">Urejevalnik za več skupnosti</string>
<string name="navigation_drawer_anonymous">Anonimno</string>
<string name="navigation_drawer_title_bookmarks">Shranjeno</string>
<string name="navigation_drawer_title_subscriptions">Naročnine</string>
<string name="navigation_drawer_title_subscriptions">Upravljanje naročnin</string>
<string name="navigation_home">Objave</string>
<string name="navigation_inbox">Prejeto</string>
<string name="navigation_profile">Profil</string>

View File

@ -124,7 +124,7 @@
<string name="multi_community_editor_title">Redaktor me shumë komunitete</string>
<string name="navigation_drawer_anonymous">Në mënyrë anonime</string>
<string name="navigation_drawer_title_bookmarks">Ruajtur</string>
<string name="navigation_drawer_title_subscriptions">Abonimet</string>
<string name="navigation_drawer_title_subscriptions">Menaxho abonimet</string>
<string name="navigation_home">Postimet</string>
<string name="navigation_inbox">Posta e ardhur</string>
<string name="navigation_profile">Profili</string>

View File

@ -123,7 +123,7 @@
<string name="multi_community_editor_title">Çok topluluklu düzenleyici</string>
<string name="navigation_drawer_anonymous">Anonymous</string>
<string name="navigation_drawer_title_bookmarks">Kaydedildi</string>
<string name="navigation_drawer_title_subscriptions">Abonelikler</string>
<string name="navigation_drawer_title_subscriptions">Abonelikleri yönet</string>
<string name="navigation_home">Postlar</string>
<string name="navigation_inbox">Gelen Kutusu</string>
<string name="navigation_profile">Profil</string>

View File

@ -123,7 +123,7 @@
<string name="multi_community_editor_title">Редактор для кількох спільнот</string>
<string name="navigation_drawer_anonymous">Анонімний</string>
<string name="navigation_drawer_title_bookmarks">Збережено</string>
<string name="navigation_drawer_title_subscriptions">Підписки</string>
<string name="navigation_drawer_title_subscriptions">Керуйте підписками</string>
<string name="navigation_home">Записи</string>
<string name="navigation_inbox">Вхідні</string>
<string name="navigation_profile">Профіль</string>

View File

@ -192,7 +192,7 @@ fun App(onLoadingFinished: () -> Unit = {}) {
}
LaunchedEffect(drawerCoordinator) {
drawerCoordinator.toggleEvents.onEach { evt ->
drawerCoordinator.events.onEach { evt ->
when (evt) {
DrawerEvent.Toggled -> {
drawerState.apply {
@ -221,6 +221,8 @@ fun App(onLoadingFinished: () -> Unit = {}) {
DrawerEvent.OpenBookmarks -> {
navigationCoordinator.pushScreen(SavedItemsScreen())
}
else -> null
}
}.launchIn(this)
}

View File

@ -32,7 +32,11 @@ import cafe.adriel.voyager.navigator.tab.CurrentTab
import cafe.adriel.voyager.navigator.tab.TabNavigator
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.di.getThemeRepository
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.bindToLifecycle
import com.github.diegoberaldin.raccoonforlemmy.core.navigation.DrawerEvent
import com.github.diegoberaldin.raccoonforlemmy.core.navigation.di.getDrawerCoordinator
import com.github.diegoberaldin.raccoonforlemmy.core.navigation.di.getNavigationCoordinator
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterEvent
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
import com.github.diegoberaldin.raccoonforlemmy.di.getMainViewModel
import com.github.diegoberaldin.raccoonforlemmy.feature.home.ui.HomeTab
import com.github.diegoberaldin.raccoonforlemmy.feature.inbox.ui.InboxTab
@ -46,6 +50,7 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.drop
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
import kotlin.math.roundToInt
internal object MainScreen : Screen {
@ -61,6 +66,8 @@ internal object MainScreen : Screen {
val uiFontScale by themeRepository.uiFontScale.collectAsState()
val snackbarHostState = remember { SnackbarHostState() }
val exitMessage = stringResource(MR.strings.message_confirm_exit)
val drawerCoordinator = remember { getDrawerCoordinator() }
val notificationCenter = remember { getNotificationCenter() }
LaunchedEffect(model) {
model.effects.onEach {
@ -106,6 +113,30 @@ internal object MainScreen : Screen {
// when the current tab chanes, reset the bottom bar offset to the default value
model.reduce(MainScreenMviModel.Intent.SetBottomBarOffsetHeightPx(0f))
}
LaunchedEffect(drawerCoordinator) {
drawerCoordinator.events.onEach { evt ->
when (evt) {
is DrawerEvent.ChangeListingType -> {
if (tabNavigator.current == HomeTab) {
notificationCenter.send(NotificationCenterEvent.ChangeFeedType(evt.value))
} else {
tabNavigator.current = HomeTab
launch {
// wait for transition to finish
delay(750)
notificationCenter.send(
NotificationCenterEvent.ChangeFeedType(
evt.value
)
)
}
}
}
else -> null
}
}.launchIn(this)
}
Scaffold(
content = {