mirror of
https://github.com/LiveFastEatTrashRaccoon/RaccoonForLemmy.git
synced 2025-02-08 19:08:46 +01:00
feat: configure default result type for Explore (#1040)
This commit is contained in:
parent
1de3b01063
commit
32859c9bf6
@ -420,4 +420,5 @@ internal val ArStrings =
|
||||
override val messageContentDeleted = "لقد قمت بحذف هذا المحتوى"
|
||||
override val actionRestore = "يعيد"
|
||||
override val settingsInboxPreviewMaxLines = "الحد الأقصى لعدد الخطوط في بطاقات البريد الوارد"
|
||||
override val settingsDefaultExploreResultType = "وع نتيجة البحث الافتراضي للاستكشاف"
|
||||
}
|
||||
|
@ -429,4 +429,5 @@ internal val BgStrings =
|
||||
override val messageContentDeleted = "Вие изтрихте това съдържание"
|
||||
override val actionRestore = "Възстанови"
|
||||
override val settingsInboxPreviewMaxLines = "Максимален брой редове във входящите карти"
|
||||
override val settingsDefaultExploreResultType = "ип резултати от търсенето по подразбиране за Explore"
|
||||
}
|
||||
|
@ -425,4 +425,5 @@ internal val CsStrings =
|
||||
override val messageContentDeleted = "Tento obsah jste smazali"
|
||||
override val actionRestore = "Obnovit"
|
||||
override val settingsInboxPreviewMaxLines = "Maximální počet řádků na kartách doručené pošty"
|
||||
override val settingsDefaultExploreResultType = "Výchozí typ výsledku vyhledávání pro Prozkoumat"
|
||||
}
|
||||
|
@ -425,4 +425,5 @@ internal val DaStrings =
|
||||
override val messageContentDeleted = "Du har slettet dette indhold"
|
||||
override val actionRestore = "Gendan"
|
||||
override val settingsInboxPreviewMaxLines = "Max antal linjer i indbakkekort"
|
||||
override val settingsDefaultExploreResultType = "Standard søgeresultattype for Udforsk"
|
||||
}
|
||||
|
@ -429,4 +429,5 @@ internal val DeStrings =
|
||||
override val actionRestore = "Wiederherstellen"
|
||||
override val settingsInboxPreviewMaxLines =
|
||||
"Maximale Anzahl von Zeilen in Posteingangskarten"
|
||||
override val settingsDefaultExploreResultType = "Standard-Suchergebnistyp für Explore"
|
||||
}
|
||||
|
@ -433,4 +433,5 @@ internal val ElStrings =
|
||||
override val actionRestore = "Αποκαταστήστε το"
|
||||
override val settingsInboxPreviewMaxLines =
|
||||
"Μέγιστος αριθμός γραμμών σε κάρτες εισερχομένων"
|
||||
override val settingsDefaultExploreResultType = "Προεπιλεγμένος τύπος αποτελεσμάτων αναζήτησης για Εξερεύνηση"
|
||||
}
|
||||
|
@ -364,7 +364,7 @@ internal val EnStrings =
|
||||
override val actionSearchInComments = "Search in comments"
|
||||
override val advancedSettingsDefaultLanguage = "Default language in editor"
|
||||
override val undetermined = "Undefined"
|
||||
override val exploreResultTypeTitle = "Result type"
|
||||
override val exploreResultTypeTitle = "Search result type"
|
||||
override val communityActionEdit = "Edit community"
|
||||
override val editCommunityHeaderTextual = "Textual information"
|
||||
override val editCommunityItemSidebar = "Sidebar"
|
||||
@ -422,4 +422,5 @@ internal val EnStrings =
|
||||
override val messageContentDeleted = "You have deleted this content"
|
||||
override val actionRestore = "Restore"
|
||||
override val settingsInboxPreviewMaxLines = "Inbox card preview max lines"
|
||||
override val settingsDefaultExploreResultType = "Default search result type for explore"
|
||||
}
|
||||
|
@ -421,4 +421,5 @@ internal val EoStrings =
|
||||
override val messageContentDeleted = "Vi forigis ĉi tiun enhavon"
|
||||
override val actionRestore = "Restaŭri"
|
||||
override val settingsInboxPreviewMaxLines = "Maksimuma nombro da linioj en enirkestokartoj"
|
||||
override val settingsDefaultExploreResultType = "Defaŭlta serĉrezulto-tipo por esploro"
|
||||
}
|
||||
|
@ -427,4 +427,5 @@ internal val EsStrings =
|
||||
override val actionRestore = "Restaurar"
|
||||
override val settingsInboxPreviewMaxLines =
|
||||
"Número máximo de líneas en tarjetas de mensajes"
|
||||
override val settingsDefaultExploreResultType = "Tipo de resultado de búsqueda predeterminado para Descubre"
|
||||
}
|
||||
|
@ -427,4 +427,5 @@ internal val EtStrings =
|
||||
override val messageContentDeleted = "Olete selle sisu kustutanud"
|
||||
override val actionRestore = "Taastama"
|
||||
override val settingsInboxPreviewMaxLines = "Maksimaalne ridade arv postkasti kaartidel"
|
||||
override val settingsDefaultExploreResultType = "Avastamise vaikeotsingutulemuse tüüp"
|
||||
}
|
||||
|
@ -422,4 +422,5 @@ internal val FiStrings =
|
||||
override val messageContentDeleted = "Olet poistanut tämän sisällön"
|
||||
override val actionRestore = "Palauttaa"
|
||||
override val settingsInboxPreviewMaxLines = "Saapuneiden korttien rivien enimmäismäärä"
|
||||
override val settingsDefaultExploreResultType = "Tutkimuksen oletushakutulostyyppi"
|
||||
}
|
||||
|
@ -432,4 +432,5 @@ internal val FrStrings =
|
||||
override val actionRestore = "Restaurer"
|
||||
override val settingsInboxPreviewMaxLines =
|
||||
"Nombre maximum de lignes dans les cartes de boîte de réception"
|
||||
override val settingsDefaultExploreResultType = "Type de résultat de recherche par défaut pour Explorer"
|
||||
}
|
||||
|
@ -426,4 +426,5 @@ internal val GaStrings =
|
||||
override val messageContentDeleted = "Tá an t-ábhar seo scriosta agat"
|
||||
override val actionRestore = "Athchóirigh"
|
||||
override val settingsInboxPreviewMaxLines = "An líon uasta línte i gcártaí bosca isteach"
|
||||
override val settingsDefaultExploreResultType = "Cineál toradh cuardaigh réamhshocraithe le haghaidh Explore"
|
||||
}
|
||||
|
@ -426,4 +426,5 @@ internal val HrStrings =
|
||||
override val messageContentDeleted = "Izbrisali ste ovaj sadržaj"
|
||||
override val actionRestore = "Vratiti"
|
||||
override val settingsInboxPreviewMaxLines = "Maksimalan broj redaka u ulaznim karticama"
|
||||
override val settingsDefaultExploreResultType = "Zadana vrsta rezultata pretraživanja za Istraživanje"
|
||||
}
|
||||
|
@ -430,4 +430,5 @@ internal val HuStrings =
|
||||
override val messageContentDeleted = "Ezt a tartalmat törölted"
|
||||
override val actionRestore = "visszaállítás"
|
||||
override val settingsInboxPreviewMaxLines = "Maximális sorok száma a postafiók kártyákban"
|
||||
override val settingsDefaultExploreResultType = "A Felfedezés alapértelmezett keresési eredménytípusa"
|
||||
}
|
||||
|
@ -427,4 +427,5 @@ internal val ItStrings =
|
||||
override val messageContentDeleted = "Hai eliminato questo contenuto"
|
||||
override val actionRestore = "Ripristina"
|
||||
override val settingsInboxPreviewMaxLines = "Numero massimo righe anteprima in inbox"
|
||||
override val settingsDefaultExploreResultType = "Tipo di risultato di ricerca predefinito per Esplora"
|
||||
}
|
||||
|
@ -425,4 +425,6 @@ internal val LtStrings =
|
||||
override val messageContentDeleted = "Ištrynėte šį turinį"
|
||||
override val actionRestore = "Atkurti"
|
||||
override val settingsInboxPreviewMaxLines = "Maksimalus eilučių skaičius gautųjų kortelėse"
|
||||
override val settingsDefaultExploreResultType =
|
||||
"Numatytasis Naršymo paieškos rezultatų tipas"
|
||||
}
|
||||
|
@ -424,4 +424,5 @@ internal val LvStrings =
|
||||
override val messageContentDeleted = "Jūs esat izdzēsis šo saturu"
|
||||
override val actionRestore = "Atjaunot"
|
||||
override val settingsInboxPreviewMaxLines = "Maksimālais rindu skaits iesūtnes kartītēs"
|
||||
override val settingsDefaultExploreResultType = "Noklusējuma meklēšanas rezultāta veids funkcijai Izpētīt"
|
||||
}
|
||||
|
@ -426,4 +426,5 @@ internal val MtStrings =
|
||||
override val messageContentDeleted = "Ħassejt dan il-kontenut"
|
||||
override val actionRestore = "Irrestawra"
|
||||
override val settingsInboxPreviewMaxLines = "Numru massimu ta' linji fil-karti tal-inbox"
|
||||
override val settingsDefaultExploreResultType = "Tip ta' riżultat tat-tfittxija default għal Esplora"
|
||||
}
|
||||
|
@ -422,4 +422,5 @@ internal val NbStrings =
|
||||
override val messageContentDeleted = "You have deleted this content"
|
||||
override val actionRestore = "Restore"
|
||||
override val settingsInboxPreviewMaxLines = "Inbox card preview max lines"
|
||||
override val settingsDefaultExploreResultType = "Default search result type for Explore"
|
||||
}
|
||||
|
@ -427,4 +427,5 @@ internal val NlStrings =
|
||||
override val messageContentDeleted = "Je hebt deze inhoud verwijderd"
|
||||
override val actionRestore = "Herstellen"
|
||||
override val settingsInboxPreviewMaxLines = "Maximaal aantal regels in inboxkaarten"
|
||||
override val settingsDefaultExploreResultType = "Standaard zoekresultaattype voor Explore"
|
||||
}
|
||||
|
@ -424,4 +424,5 @@ internal val NnStrings =
|
||||
override val messageContentDeleted = "Du har slettet dette innholdet"
|
||||
override val actionRestore = "Restaurere"
|
||||
override val settingsInboxPreviewMaxLines = "Maks antall linjer i innbokskort"
|
||||
override val settingsDefaultExploreResultType = "Standard søkeresultattype for Utforsk"
|
||||
}
|
||||
|
@ -427,4 +427,5 @@ internal val PlStrings =
|
||||
override val actionRestore = "Przywrócić"
|
||||
override val settingsInboxPreviewMaxLines =
|
||||
"Maksymalna liczba linii w kartach skrzynki odbiorczej"
|
||||
override val settingsDefaultExploreResultType = "Domyślny typ wyniku wyszukiwania dla Eksploruj"
|
||||
}
|
||||
|
@ -425,4 +425,5 @@ internal val PtBrStrings =
|
||||
override val actionRestore = "Restaura"
|
||||
override val settingsInboxPreviewMaxLines =
|
||||
"Número máximo de linhas nos cartões das mensagens"
|
||||
override val settingsDefaultExploreResultType = "Tipo de resultado de pesquisa padrão para Explorar"
|
||||
}
|
||||
|
@ -426,4 +426,5 @@ internal val PtStrings =
|
||||
override val actionRestore = "Restaura"
|
||||
override val settingsInboxPreviewMaxLines =
|
||||
"Número máximo de linhas nos cartões das mensagens"
|
||||
override val settingsDefaultExploreResultType = "Tipo de resultado de pesquisa padrão para Explorar"
|
||||
}
|
||||
|
@ -353,7 +353,7 @@ internal val RoStrings =
|
||||
override val settingsTitlePictures = "Imagini"
|
||||
override val settingsTitleExperimental = "Experimente"
|
||||
override val communitySetCustomSort = "Tip de sortare personalizat"
|
||||
override val settingsDefaultExploreType = "Tip prestabilit de listare pentru Exploră"
|
||||
override val settingsDefaultExploreType = "Tip prestabilit de listare pentru Explorarea"
|
||||
override val actionSearchInCommunity = "Căută în comunitate"
|
||||
override val actionExitSearch = "Ieși din căutare"
|
||||
override val beta = "Beta"
|
||||
@ -425,4 +425,5 @@ internal val RoStrings =
|
||||
override val messageContentDeleted = "Ați șters acest conținut"
|
||||
override val actionRestore = "Restaurați-l"
|
||||
override val settingsInboxPreviewMaxLines = "Numărul maxim de linii în cardurile de inbox"
|
||||
override val settingsDefaultExploreResultType = "Tip de rezultat de căutare prestabilit pentru Explorarea"
|
||||
}
|
||||
|
@ -428,4 +428,6 @@ internal val RuStrings =
|
||||
override val actionRestore = "Восстановить"
|
||||
override val settingsInboxPreviewMaxLines =
|
||||
"Максимальное количество строк во входящих карточках"
|
||||
override val settingsDefaultExploreResultType =
|
||||
"Тип результатов поиска по умолчанию для Explore"
|
||||
}
|
||||
|
@ -428,4 +428,5 @@ internal val SkStrings =
|
||||
override val actionRestore = "Obnoviť"
|
||||
override val settingsInboxPreviewMaxLines =
|
||||
"Maximálny počet riadkov na kartách doručenej pošty"
|
||||
override val settingsDefaultExploreResultType = "Predvolený typ výsledku vyhľadávania pre Preskúmať"
|
||||
}
|
||||
|
@ -426,4 +426,5 @@ internal val SlStrings =
|
||||
override val actionRestore = "Obnovi"
|
||||
override val settingsInboxPreviewMaxLines =
|
||||
"Največje število vrstic v karticah prejete pošte"
|
||||
override val settingsDefaultExploreResultType = "Privzeta vrsta rezultatov iskanja za Raziskovanje"
|
||||
}
|
||||
|
@ -428,4 +428,5 @@ internal val SqStrings =
|
||||
override val actionRestore = "Rivendos"
|
||||
override val settingsInboxPreviewMaxLines =
|
||||
"Numri maksimal i rreshtave në kartat e kutisë hyrëse"
|
||||
override val settingsDefaultExploreResultType = "Lloji i parazgjedhur i rezultatit të kërkimit për Eksploro"
|
||||
}
|
||||
|
@ -428,4 +428,5 @@ internal val SrStrings =
|
||||
override val actionRestore = "Ресторе"
|
||||
override val settingsInboxPreviewMaxLines =
|
||||
"Максималан број линија у картицама пријемног сандучет"
|
||||
override val settingsDefaultExploreResultType = "Подразумевани тип резултата претраге за Истраживање"
|
||||
}
|
||||
|
@ -419,6 +419,7 @@ interface Strings {
|
||||
val messageContentDeleted: String
|
||||
val actionRestore: String
|
||||
val settingsInboxPreviewMaxLines: String
|
||||
val settingsDefaultExploreResultType: String
|
||||
}
|
||||
|
||||
object Locales {
|
||||
|
@ -425,4 +425,5 @@ internal val SvStrings =
|
||||
override val messageContentDeleted = "Du har tagit bort detta innehåll"
|
||||
override val actionRestore = "Återställ"
|
||||
override val settingsInboxPreviewMaxLines = "Max antal rader i inkorgskort"
|
||||
override val settingsDefaultExploreResultType = "Standard sökresultattyp för Utforska"
|
||||
}
|
||||
|
@ -421,4 +421,5 @@ internal val TokStrings =
|
||||
override val messageContentDeleted = "tenpo pini la, sina weka e ijo ni"
|
||||
override val actionRestore = "o awen e ona"
|
||||
override val settingsInboxPreviewMaxLines = "nanpa linja pi lipu lon toki poki"
|
||||
override val settingsDefaultExploreResultType = "nasin ijo pi lipu lukin"
|
||||
}
|
||||
|
@ -427,4 +427,5 @@ internal val TrStrings =
|
||||
override val actionRestore = "Eski haline getirmek"
|
||||
override val settingsInboxPreviewMaxLines =
|
||||
"Gelen kutusu kartlarındaki maksimum satır sayısı"
|
||||
override val settingsDefaultExploreResultType = "Keşfet için varsayılan arama sonucu türü"
|
||||
}
|
||||
|
@ -428,4 +428,5 @@ internal val UkStrings =
|
||||
override val actionRestore = "Відновлення"
|
||||
override val settingsInboxPreviewMaxLines =
|
||||
"Максимальна кількість рядків у картках вхідних повідомлень"
|
||||
override val settingsDefaultExploreResultType = "Тип результатів пошуку за умовчанням для Explore"
|
||||
}
|
||||
|
@ -415,4 +415,5 @@ internal val ZhHkStrings =
|
||||
override val messageContentDeleted = "您刪除咗呢個內容"
|
||||
override val actionRestore = "恢復"
|
||||
override val settingsInboxPreviewMaxLines = "Inbox card preview max lines"
|
||||
override val settingsDefaultExploreResultType = "Default search result type for explore"
|
||||
}
|
||||
|
@ -415,4 +415,5 @@ internal val ZhTwStrings =
|
||||
override val messageContentDeleted = "您已刪除此內容"
|
||||
override val actionRestore = "恢復"
|
||||
override val settingsInboxPreviewMaxLines = "Inbox card preview max lines"
|
||||
override val settingsDefaultExploreResultType = "Default search result type for explore"
|
||||
}
|
||||
|
@ -158,6 +158,7 @@ class DefaultSettingsRepositoryTest {
|
||||
enableToggleFavoriteInNavDrawer = if (model.enableToggleFavoriteInNavDrawer) 1 else 0,
|
||||
account_id = 1,
|
||||
inboxPreviewMaxLines = model.inboxPreviewMaxLines?.toLong(),
|
||||
defaultExploreResultType = model.defaultExploreResultType.toLong(),
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -231,6 +232,7 @@ class DefaultSettingsRepositoryTest {
|
||||
enableToggleFavoriteInNavDrawer = if (model.enableToggleFavoriteInNavDrawer) 1 else 0,
|
||||
account_id = 1,
|
||||
inboxPreviewMaxLines = model.inboxPreviewMaxLines?.toLong(),
|
||||
defaultExploreResultType = model.defaultExploreResultType.toLong(),
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -299,6 +301,7 @@ class DefaultSettingsRepositoryTest {
|
||||
commentIndentAmount: Int = 2,
|
||||
enableToggleFavoriteInNavDrawer: Boolean = false,
|
||||
inboxPreviewMaxLines: Int? = null,
|
||||
defaultExploreResultType: Int = 2,
|
||||
) = GetBy(
|
||||
id = id,
|
||||
theme = theme,
|
||||
@ -361,5 +364,6 @@ class DefaultSettingsRepositoryTest {
|
||||
commentIndentAmount = commentIndentAmount.toLong(),
|
||||
enableToggleFavoriteInNavDrawer = if (enableToggleFavoriteInNavDrawer) 1 else 0,
|
||||
inboxPreviewMaxLines = inboxPreviewMaxLines?.toLong(),
|
||||
defaultExploreResultType = defaultExploreResultType.toLong(),
|
||||
)
|
||||
}
|
||||
|
@ -64,4 +64,5 @@ data class SettingsModel(
|
||||
val commentIndentAmount: Int = 2,
|
||||
val enableToggleFavoriteInNavDrawer: Boolean = false,
|
||||
val inboxPreviewMaxLines: Int? = null,
|
||||
val defaultExploreResultType: Int = 2,
|
||||
)
|
||||
|
@ -64,6 +64,7 @@ private object KeyStoreKeys {
|
||||
const val ENABLE_BUTTONS_TO_SCROLL_BETWEEN_COMMENTS = "enableButtonsToScrollBetweenComments"
|
||||
const val FULL_WIDTH_IMAGES = "fullWidthImages"
|
||||
const val COMMENT_INDENT_AMOUNT = "commentIndentAmount"
|
||||
const val DEFAULT_EXPLORE_RESULT_TYPE = "defaultExploreResultType"
|
||||
}
|
||||
|
||||
internal class DefaultSettingsRepository(
|
||||
@ -158,6 +159,7 @@ internal class DefaultSettingsRepository(
|
||||
fullWidthImages = if (settings.fullWidthImages) 1L else 0L,
|
||||
enableToggleFavoriteInNavDrawer = if (settings.enableToggleFavoriteInNavDrawer) 1L else 0L,
|
||||
inboxPreviewMaxLines = settings.inboxPreviewMaxLines?.toLong(),
|
||||
defaultExploreResultType = settings.defaultExploreResultType.toLong(),
|
||||
)
|
||||
}
|
||||
|
||||
@ -236,6 +238,7 @@ internal class DefaultSettingsRepository(
|
||||
fadeReadPosts = keyStore[KeyStoreKeys.FADE_READ_POSTS, false],
|
||||
enableButtonsToScrollBetweenComments = keyStore[KeyStoreKeys.ENABLE_BUTTONS_TO_SCROLL_BETWEEN_COMMENTS, false],
|
||||
fullWidthImages = keyStore[KeyStoreKeys.FULL_WIDTH_IMAGES, false],
|
||||
defaultExploreResultType = keyStore[KeyStoreKeys.DEFAULT_EXPLORE_RESULT_TYPE, 2],
|
||||
)
|
||||
} else {
|
||||
val entity = db.settingsQueries.getBy(accountId).executeAsOneOrNull()
|
||||
@ -352,6 +355,10 @@ internal class DefaultSettingsRepository(
|
||||
settings.enableButtonsToScrollBetweenComments,
|
||||
)
|
||||
keyStore.save(KeyStoreKeys.FULL_WIDTH_IMAGES, settings.fullWidthImages)
|
||||
keyStore.save(
|
||||
KeyStoreKeys.DEFAULT_EXPLORE_RESULT_TYPE,
|
||||
settings.defaultExploreResultType,
|
||||
)
|
||||
} else {
|
||||
db.settingsQueries.update(
|
||||
theme = settings.theme?.toLong(),
|
||||
@ -433,6 +440,7 @@ internal class DefaultSettingsRepository(
|
||||
fullWidthImages = if (settings.fullWidthImages) 1L else 0L,
|
||||
enableToggleFavoriteInNavDrawer = if (settings.enableToggleFavoriteInNavDrawer) 1L else 0L,
|
||||
inboxPreviewMaxLines = settings.inboxPreviewMaxLines?.toLong(),
|
||||
defaultExploreResultType = settings.defaultExploreResultType.toLong(),
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -532,4 +540,5 @@ private fun GetBy.toModel() =
|
||||
fullWidthImages = fullWidthImages == 1L,
|
||||
enableToggleFavoriteInNavDrawer = enableToggleFavoriteInNavDrawer == 1L,
|
||||
inboxPreviewMaxLines = inboxPreviewMaxLines?.toInt(),
|
||||
defaultExploreResultType = defaultExploreResultType.toInt(),
|
||||
)
|
||||
|
@ -76,6 +76,7 @@ internal data class SerializableSettings(
|
||||
val fullWidthImages: Boolean = false,
|
||||
val enableToggleFavoriteInNavDrawer: Boolean = false,
|
||||
val inboxPreviewMaxLines: Int? = null,
|
||||
val defaultExploreResultType: Int = 2,
|
||||
)
|
||||
|
||||
internal fun SerializableSettings.toModel() =
|
||||
|
@ -61,6 +61,7 @@ CREATE TABLE SettingsEntity (
|
||||
commentIndentAmount INTEGER NOT NULL DEFAULT 2,
|
||||
enableToggleFavoriteInNavDrawer INTEGER NOT NULL DEFAULT 0,
|
||||
inboxPreviewMaxLines INTEGER DEFAULT NULL,
|
||||
defaultExploreResultType INTEGER NOT NULL DEFAULT 2,
|
||||
FOREIGN KEY (account_id) REFERENCES AccountEntity(id) ON DELETE CASCADE,
|
||||
UNIQUE(account_id)
|
||||
);
|
||||
@ -127,6 +128,7 @@ INSERT OR IGNORE INTO SettingsEntity (
|
||||
commentIndentAmount,
|
||||
enableToggleFavoriteInNavDrawer,
|
||||
inboxPreviewMaxLines,
|
||||
defaultExploreResultType,
|
||||
account_id
|
||||
) VALUES (
|
||||
?,
|
||||
@ -189,6 +191,7 @@ INSERT OR IGNORE INTO SettingsEntity (
|
||||
?,
|
||||
?,
|
||||
?,
|
||||
?,
|
||||
?
|
||||
);
|
||||
|
||||
@ -253,7 +256,8 @@ SET theme = ?,
|
||||
fullWidthImages = ?,
|
||||
commentIndentAmount = ?,
|
||||
enableToggleFavoriteInNavDrawer = ?,
|
||||
inboxPreviewMaxLines = ?
|
||||
inboxPreviewMaxLines = ?,
|
||||
defaultExploreResultType = ?
|
||||
WHERE account_id = ?;
|
||||
|
||||
getBy:
|
||||
@ -318,6 +322,7 @@ SELECT
|
||||
fullWidthImages,
|
||||
commentIndentAmount,
|
||||
enableToggleFavoriteInNavDrawer,
|
||||
inboxPreviewMaxLines
|
||||
inboxPreviewMaxLines,
|
||||
defaultExploreResultType
|
||||
FROM SettingsEntity
|
||||
WHERE account_id = ?;
|
||||
|
@ -0,0 +1,2 @@
|
||||
ALTER TABLE SettingsEntity
|
||||
ADD COLUMN defaultExploreResultType INTEGER NOT NULL DEFAULT 2;
|
@ -45,3 +45,23 @@ fun SearchResultType.toReadableName(): String =
|
||||
SearchResultType.Users -> LocalStrings.current.exploreResultTypeUsers
|
||||
SearchResultType.Urls -> LocalStrings.current.createPostUrl
|
||||
}
|
||||
|
||||
fun SearchResultType.toInt(): Int =
|
||||
when (this) {
|
||||
SearchResultType.Posts -> 1
|
||||
SearchResultType.Communities -> 2
|
||||
SearchResultType.Users -> 3
|
||||
SearchResultType.Comments -> 4
|
||||
SearchResultType.Urls -> 5
|
||||
else -> 0
|
||||
}
|
||||
|
||||
fun Int.toSearchResultType(): SearchResultType =
|
||||
when (this) {
|
||||
1 -> SearchResultType.Posts
|
||||
2 -> SearchResultType.Communities
|
||||
3 -> SearchResultType.Users
|
||||
4 -> SearchResultType.Comments
|
||||
5 -> SearchResultType.Urls
|
||||
else -> SearchResultType.All
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import cafe.adriel.voyager.core.model.ScreenModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.MviModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.LanguageModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.ListingType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SearchResultType
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
|
||||
@ -107,6 +108,7 @@ interface AdvancedSettingsMviModel :
|
||||
val enableButtonsToScrollBetweenComments: Boolean = false,
|
||||
val enableToggleFavoriteInNavDrawer: Boolean = false,
|
||||
val inboxPreviewMaxLines: Int? = null,
|
||||
val defaultExploreResultType: SearchResultType = SearchResultType.Communities,
|
||||
)
|
||||
|
||||
sealed interface Effect {
|
||||
|
@ -55,6 +55,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.modals.DurationBot
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.modals.DurationBottomSheetType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.modals.InboxTypeSheet
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.modals.ListingTypeBottomSheet
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.modals.ResultTypeBottomSheet
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.modals.SelectLanguageDialog
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.modals.SelectNumberBottomSheet
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.modals.SelectNumberBottomSheetType
|
||||
@ -255,7 +256,21 @@ class AdvancedSettingsScreen : Screen {
|
||||
)
|
||||
}
|
||||
|
||||
// default explore type
|
||||
// default explore result type
|
||||
SettingsRow(
|
||||
title = LocalStrings.current.settingsDefaultExploreResultType,
|
||||
value = uiState.defaultExploreResultType.toReadableName(),
|
||||
onTap =
|
||||
rememberCallback {
|
||||
val sheet =
|
||||
ResultTypeBottomSheet(
|
||||
screenKey = "advancedSettings",
|
||||
)
|
||||
navigationCoordinator.showBottomSheet(sheet)
|
||||
},
|
||||
)
|
||||
|
||||
// default explore listing type
|
||||
SettingsRow(
|
||||
title = LocalStrings.current.settingsDefaultExploreType,
|
||||
value = uiState.defaultExploreType.toReadableName(),
|
||||
|
@ -22,8 +22,10 @@ import com.github.diegoberaldin.raccoonforlemmy.core.utils.toInboxDefaultType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.toInboxUnreadOnly
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.identity.repository.IdentityRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.ListingType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SearchResultType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.toInt
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.toListingType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.toSearchResultType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.SiteRepository
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
@ -102,6 +104,13 @@ class AdvancedSettingsViewModel(
|
||||
changeInboxPreviewMaxLines(evt.value)
|
||||
}
|
||||
}.launchIn(this)
|
||||
notificationCenter
|
||||
.subscribe(NotificationCenterEvent.ChangeSearchResultType::class)
|
||||
.onEach { evt ->
|
||||
if (evt.screenKey == "advancedSettings") {
|
||||
changeExploreResultType(evt.value)
|
||||
}
|
||||
}.launchIn(this)
|
||||
|
||||
updateAvailableLanguages()
|
||||
|
||||
@ -132,6 +141,7 @@ class AdvancedSettingsViewModel(
|
||||
enableButtonsToScrollBetweenComments = settings.enableButtonsToScrollBetweenComments,
|
||||
enableToggleFavoriteInNavDrawer = settings.enableToggleFavoriteInNavDrawer,
|
||||
inboxPreviewMaxLines = settings.inboxPreviewMaxLines,
|
||||
defaultExploreResultType = settings.defaultExploreResultType.toSearchResultType(),
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -282,6 +292,17 @@ class AdvancedSettingsViewModel(
|
||||
val settings =
|
||||
settingsRepository.currentSettings.value.copy(defaultExploreType = value.toInt())
|
||||
saveSettings(settings)
|
||||
notificationCenter.send(NotificationCenterEvent.ResetExplore)
|
||||
}
|
||||
}
|
||||
|
||||
private fun changeExploreResultType(value: SearchResultType) {
|
||||
screenModelScope.launch {
|
||||
updateState { it.copy(defaultExploreResultType = value) }
|
||||
val settings =
|
||||
settingsRepository.currentSettings.value.copy(defaultExploreResultType = value.toInt())
|
||||
saveSettings(settings)
|
||||
notificationCenter.send(NotificationCenterEvent.ResetExplore)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">لقد قمت بحذف هذا المحتوى</string>
|
||||
<string name="actionRestore">يعيد</string>
|
||||
<string name="settingsInboxPreviewMaxLines">الحد الأقصى لعدد الخطوط في بطاقات البريد الوارد</string>
|
||||
<string name="settingsDefaultExploreResultType">وع نتيجة البحث الافتراضي للاستكشاف</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Вие изтрихте това съдържание</string>
|
||||
<string name="actionRestore">Възстанови</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Максимален брой редове във входящите карти</string>
|
||||
<string name="settingsDefaultExploreResultType">ип резултати от търсенето по подразбиране за Explore</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Tento obsah jste smazali</string>
|
||||
<string name="actionRestore">Obnovit</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Maximální počet řádků na kartách doručené pošty</string>
|
||||
<string name="settingsDefaultExploreResultType">Výchozí typ výsledku vyhledávání pro Prozkoumat</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Du har slettet dette indhold</string>
|
||||
<string name="actionRestore">Gendan</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Max antal linjer i indbakkekort</string>
|
||||
<string name="settingsDefaultExploreResultType">Standard søgeresultattype for Udforsk</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Sie haben diesen Inhalt gelöscht</string>
|
||||
<string name="actionRestore">Wiederherstellen</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Maximale Anzahl von Zeilen in Posteingangskarten</string>
|
||||
<string name="settingsDefaultExploreResultType">Standard-Suchergebnistyp für Explore</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Έχετε διαγράψει αυτό το περιεχόμενο</string>
|
||||
<string name="actionRestore">Αποκαταστήστε το</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Μέγιστος αριθμός γραμμών σε κάρτες εισερχομένων</string>
|
||||
<string name="settingsDefaultExploreResultType">Προεπιλεγμένος τύπος αποτελεσμάτων αναζήτησης για Εξερεύνηση</string>
|
||||
</resources>
|
||||
|
@ -356,7 +356,7 @@
|
||||
<string name="actionSearchInComments">Search in comments</string>
|
||||
<string name="advancedSettingsDefaultLanguage">Default language in editor</string>
|
||||
<string name="undetermined">Undefined</string>
|
||||
<string name="exploreResultTypeTitle">Result type</string>
|
||||
<string name="exploreResultTypeTitle">Search result type</string>
|
||||
<string name="communityActionEdit">Edit community</string>
|
||||
<string name="editCommunityHeaderTextual">Textual information</string>
|
||||
<string name="editCommunityItemSidebar">Sidebar</string>
|
||||
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">You have deleted this content</string>
|
||||
<string name="actionRestore">Restore</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Inbox card preview max lines</string>
|
||||
<string name="settingsDefaultExploreResultType">Default search result type for explore</string>
|
||||
</resources>
|
||||
|
415
l10n/values-eo/strings.xml
Normal file
415
l10n/values-eo/strings.xml
Normal file
@ -0,0 +1,415 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<resources>
|
||||
<string name="actionBackToTop">Reen al la supro</string>
|
||||
<string name="actionChat">Sendi Mesaĝo:</string>
|
||||
<string name="actionClearRead">Forviŝi legadon</string>
|
||||
<string name="actionCreatePost">Krei afiŝon</string>
|
||||
<string name="actionReply">Respondi</string>
|
||||
<string name="actionActivateZombieMode">Aktivigi zombian moduson</string>
|
||||
<string name="actionDeactivateZombieMode">Malaktivigi zombian moduson</string>
|
||||
<string name="buttonClose">Fermi</string>
|
||||
<string name="buttonConfirm">Konfirmi</string>
|
||||
<string name="buttonLoad">Ŝargi</string>
|
||||
<string name="buttonReset">Restarigi</string>
|
||||
<string name="buttonRetry">Reprovi</string>
|
||||
<string name="commentActionDelete">Forigi</string>
|
||||
<string name="communityDetailBlock">Bloka</string>
|
||||
<string name="communityDetailBlockInstance">Bloki nodon</string>
|
||||
<string name="communityDetailInfo">Informo pri la komunumo</string>
|
||||
<string name="communityDetailInstanceInfo">Detaloj pri la nodo</string>
|
||||
<string name="communityInfoComments">komentoj</string>
|
||||
<string name="communityInfoDailyActiveUsers">aktivaj uzantoj (tago)</string>
|
||||
<string name="communityInfoMonthlyActiveUsers">aktivaj uzantoj (monato)</string>
|
||||
<string name="communityInfoPosts">afiŝoj</string>
|
||||
<string name="communityInfoSubscribers">abonantoj</string>
|
||||
<string name="communityInfoWeeklyActiveUsers">aktivaj uzantoj (semajno)</string>
|
||||
<string name="createCommentBody">Korpo de la komento</string>
|
||||
<string name="createCommentTitle">Nova komento</string>
|
||||
<string name="createPostBody">Korpo de la afiŝo</string>
|
||||
<string name="createPostCommunity">Komunumo</string>
|
||||
<string name="createPostCrossPostText">Kruco poŝtita de:</string>
|
||||
<string name="createPostName">Titolo de la afiŝo</string>
|
||||
<string name="createPostNsfw">NSFW</string>
|
||||
<string name="createPostTabEditor">Redaktilo</string>
|
||||
<string name="createPostTabPreview">Antaŭrigardo</string>
|
||||
<string name="createPostTitle">Nova afiŝo</string>
|
||||
<string name="createPostUrl">Retadreso:</string>
|
||||
<string name="createReportPlaceholder">Teksto de la raporto (nedeviga)</string>
|
||||
<string name="createReportTitleComment">Raporti komenton</string>
|
||||
<string name="createReportTitlePost">Raporti afiŝon</string>
|
||||
<string name="dialogRawContentText">Teksto</string>
|
||||
<string name="dialogRawContentTitle">Titolo</string>
|
||||
<string name="dialogRawContentUrl">Retadreso:</string>
|
||||
<string name="dialogTitleChangeInstance">Ŝanĝi nodon</string>
|
||||
<string name="dialogTitleRawContent">Kruda enhavo</string>
|
||||
<string name="dialogTitleSelectCommunity">Elekti komunumon</string>
|
||||
<string name="editCommentTitle">Redakti komenton</string>
|
||||
<string name="editPostTitle">Redakti afiŝon</string>
|
||||
<string name="exploreResultTypeAll">Ĉiuj</string>
|
||||
<string name="exploreResultTypeComments">Komentoj</string>
|
||||
<string name="exploreResultTypeCommunities">Komunumoj</string>
|
||||
<string name="exploreResultTypePosts">Afiŝoj</string>
|
||||
<string name="exploreResultTypeUsers">Uzantoj</string>
|
||||
<string name="exploreSearchPlaceholder">Serĉi</string>
|
||||
<string name="homeInstanceVia">per</string>
|
||||
<string name="homeListingTitle">Listadoj</string>
|
||||
<string name="homeListingTypeAll">Ĉiuj</string>
|
||||
<string name="homeListingTypeLocal">Lokaj</string>
|
||||
<string name="homeListingTypeSubscribed">Subskribitaj</string>
|
||||
<string name="homeSortTitle">Ordigi laŭ:</string>
|
||||
<string name="homeSortTypeActive">Aktivaj</string>
|
||||
<string name="homeSortTypeControversial">Kontestataj</string>
|
||||
<string name="homeSortTypeHot">Popularaj</string>
|
||||
<string name="homeSortTypeMostComments">La plej multaj komentoj</string>
|
||||
<string name="homeSortTypeNew">Novaj</string>
|
||||
<string name="homeSortTypeNewComments">Novaj komentoj</string>
|
||||
<string name="homeSortTypeOld">Maljunaj</string>
|
||||
<string name="homeSortTypeScaled">Proporcie</string>
|
||||
<string name="homeSortTypeTop">Supre</string>
|
||||
<string name="homeSortTypeTop12Hours">Supraj 12 horoj</string>
|
||||
<string name="homeSortTypeTop12HoursShort">12h</string>
|
||||
<string name="homeSortTypeTop6Hours">Supraj 6 horoj</string>
|
||||
<string name="homeSortTypeTop6HoursShort">6h</string>
|
||||
<string name="homeSortTypeTopDay">Supraj de la tago</string>
|
||||
<string name="homeSortTypeTopDayShort">tago</string>
|
||||
<string name="homeSortTypeTopHour">Supraj de la horo</string>
|
||||
<string name="homeSortTypeTopHourShort">1h</string>
|
||||
<string name="homeSortTypeTopMonth">Supraj de la monato</string>
|
||||
<string name="homeSortTypeTopMonthShort">monato</string>
|
||||
<string name="homeSortTypeTopWeek">Supraj de la semajno</string>
|
||||
<string name="homeSortTypeTopWeekShort">Semajno</string>
|
||||
<string name="homeSortTypeTopYear">Supraj de la jaro</string>
|
||||
<string name="homeSortTypeTopYearShort">jaro</string>
|
||||
<string name="inboxChatMessage">Mesaĝo</string>
|
||||
<string name="inboxItemMention">menciis vin en</string>
|
||||
<string name="inboxItemReplyComment">respondis al via komento en</string>
|
||||
<string name="inboxItemReplyPost">respondis al via afiŝo en</string>
|
||||
<string name="inboxListingTypeAll">Ĉiuj</string>
|
||||
<string name="inboxListingTypeTitle">Tipo de leterkesto</string>
|
||||
<string name="inboxListingTypeUnread">Nelegitai</string>
|
||||
<string name="inboxNotLoggedMessage">Vi nun ne estas ensalutinta.\nBonvolu aldoni konton en la profila ekrano por vidi vian enirkeston.</string>
|
||||
<string name="inboxSectionMentions">Mencioj</string>
|
||||
<string name="inboxSectionMessages">Mesaĝoj</string>
|
||||
<string name="inboxSectionReplies">Respondoj</string>
|
||||
<string name="instanceDetailCommunities">Komunumoj</string>
|
||||
<string name="instanceDetailTitle">Nodo:</string>
|
||||
<string name="lang">eo</string>
|
||||
<string name="loginFieldInstanceName">Nomo de la nodo</string>
|
||||
<string name="loginFieldLabelOptional">(nedeviga)</string>
|
||||
<string name="loginFieldPassword">Pasvorto</string>
|
||||
<string name="loginFieldToken">Ĵetono TOTP- 2FA</string>
|
||||
<string name="loginFieldUserName">Salutnomo aŭ retpoŝta adreso:</string>
|
||||
<string name="manageAccountsButtonAdd">Aldoni konton</string>
|
||||
<string name="manageAccountsTitle">Administri kontojn</string>
|
||||
<string name="manageSubscriptionsHeaderMulticommunities">Multi-komunumoj</string>
|
||||
<string name="manageSubscriptionsHeaderSubscriptions">Subskriboj</string>
|
||||
<string name="messageEmptyComments">Tie estas tro silente.\nĈu vi ŝatus esti tiu, kiu skribu la unuan komenton.</string>
|
||||
<string name="messageEmptyList">Neniuj eroj por montri</string>
|
||||
<string name="messageErrorLoadingComments">Eraro okazis dum ŝarĝo de komentoj.</string>
|
||||
<string name="messageGenericError">Ĝenerala eraro</string>
|
||||
<string name="messageImageLoadingError">Eraro ŝarĝante bildon</string>
|
||||
<string name="messageInvalidField">Nevalida kampo</string>
|
||||
<string name="messageMissingField">Mankanta kampo</string>
|
||||
<string name="messageOperationSuccessful">Operacio sukcese finiĝis</string>
|
||||
<string name="multiCommunityEditorCommunities">Komunumoj</string>
|
||||
<string name="multiCommunityEditorIcon">Piktogramo</string>
|
||||
<string name="multiCommunityEditorName">Nomo</string>
|
||||
<string name="multiCommunityEditorTitle">Multi-komunuma redaktilo</string>
|
||||
<string name="navigationDrawerAnonymous">Anonima</string>
|
||||
<string name="navigationDrawerTitleBookmarks">Konservitajn erojn</string>
|
||||
<string name="navigationDrawerTitleSubscriptions">Administri abonojn</string>
|
||||
<string name="navigationHome">Afiŝoj</string>
|
||||
<string name="navigationInbox">Enirkesto</string>
|
||||
<string name="navigationProfile">Profilo</string>
|
||||
<string name="navigationSearch">Esplori</string>
|
||||
<string name="navigationSettings">Agordoj</string>
|
||||
<string name="postActionCrossPost">Kruc-afiŝo</string>
|
||||
<string name="postActionEdit">Redakti</string>
|
||||
<string name="postActionHide">Kaŝi</string>
|
||||
<string name="postActionReport">Raporti</string>
|
||||
<string name="postActionSeeRaw">Vidi krudan</string>
|
||||
<string name="postActionShare">Kunhavigi</string>
|
||||
<string name="postDetailCrossPosts">ankaŭ poŝtita al:</string>
|
||||
<string name="postDetailLoadMoreComments">Ŝarĝi pliajn komentojn</string>
|
||||
<string name="postHourShort">h</string>
|
||||
<string name="postMinuteShort">m</string>
|
||||
<string name="postSecondShort">s</string>
|
||||
<string name="profileButtonLogin">Ensaluti</string>
|
||||
<string name="profileDayShort">d</string>
|
||||
<string name="profileMillionShort">m</string>
|
||||
<string name="profileMonthShort">m</string>
|
||||
<string name="profileNotLoggedMessage">Vi nun ne estas ensalutinta.\nBonvolu aldoni konton por daŭrigi.</string>
|
||||
<string name="profileSectionComments">Komentoj</string>
|
||||
<string name="profileSectionPosts">Afiŝoj</string>
|
||||
<string name="profileThousandShort">k</string>
|
||||
<string name="profileYearShort">j</string>
|
||||
<string name="settingsAbout">Pri ĉi tiu aplikaĵo</string>
|
||||
<string name="settingsAboutAppVersion">Programversio</string>
|
||||
<string name="settingsAboutChangelog">Vidi plenan ŝanĝregistron</string>
|
||||
<string name="settingsAboutReportGithub">Raporti cimon (GitHub)</string>
|
||||
<string name="settingsAboutReportEmail">Raporti cimon (retpoŝto)</string>
|
||||
<string name="settingsAboutViewGithub">Vidi ĉe GitHub</string>
|
||||
<string name="settingsAboutViewLemmy">Lemmy komunumo</string>
|
||||
<string name="settingsAutoExpandComments">Aŭtomate pligrandigi komentojn</string>
|
||||
<string name="settingsAutoLoadImages">Aŭtomate montri bildojn</string>
|
||||
<string name="settingsBlurNsfw">Malklarigi NSFW bildoj</string>
|
||||
<string name="settingsColorAquamarine">🐬 Distrita delfeno</string>
|
||||
<string name="settingsColorBanana">🦔 Ekscitiga erinaco</string>
|
||||
<string name="settingsColorBlue">🐳 Bananeca baleno</string>
|
||||
<string name="settingsColorCustom">Propra</string>
|
||||
<string name="settingsColorDialogAlpha">A</string>
|
||||
<string name="settingsColorDialogBlue">B</string>
|
||||
<string name="settingsColorDialogGreen">G</string>
|
||||
<string name="settingsColorDialogRed">R</string>
|
||||
<string name="settingsColorDialogTitle">Elekti koloron</string>
|
||||
<string name="settingsColorGray">🦝 Lunatika lavurso</string>
|
||||
<string name="settingsColorGreen">🐸 Ridinda rano</string>
|
||||
<string name="settingsColorOrange">🦊 Vartistika vulpo</string>
|
||||
<string name="settingsColorPink">🦄 Unika unikorno</string>
|
||||
<string name="settingsColorPurple">🐙 Perplexa polpo</string>
|
||||
<string name="settingsColorRed">🦀 Krokodila krabo</string>
|
||||
<string name="settingsColorWhite">🐼 Utopia urso</string>
|
||||
<string name="settingsContentFontLarge">Granda</string>
|
||||
<string name="settingsContentFontLarger">Pli granda</string>
|
||||
<string name="settingsContentFontLargest">Duoble pli granda</string>
|
||||
<string name="settingsContentFontNormal">Normala</string>
|
||||
<string name="settingsContentFontScale">Teksta grandeco de afiŝoj</string>
|
||||
<string name="settingsContentFontSmall">Malgranda</string>
|
||||
<string name="settingsContentFontSmaller">Pli malgranda</string>
|
||||
<string name="settingsContentFontSmallest">Duoble pli malgranda</string>
|
||||
<string name="settingsCustomSeedColor">Propra etosa koloro</string>
|
||||
<string name="settingsDefaultCommentSortType">Apriora komenta speco</string>
|
||||
<string name="settingsDefaultListingType">Apriora listada speco</string>
|
||||
<string name="settingsDefaultPostSortType">Apriora afiŝa speco</string>
|
||||
<string name="settingsDownvoteColor">Koloro de la malfavoraj voĉoj</string>
|
||||
<string name="settingsDynamicColors">Uzi dinamikajn kolorojn</string>
|
||||
<string name="settingsEnableCrashReport">Enŝalti kraŝraportojn</string>
|
||||
<string name="settingsEnableDoubleTap">Enŝalti duoblan frapan agon</string>
|
||||
<string name="settingsEnableSwipeActions">Enŝalti svingagojn</string>
|
||||
<string name="settingsFullHeightImages">Plenaj altobildoj</string>
|
||||
<string name="settingsIncludeNsfw">Inkluzivi NSFW-enhavojn</string>
|
||||
<string name="settingsLanguage">Lingvo</string>
|
||||
<string name="settingsNavigationBarTitlesVisible">Montri navigadbretajn titolojn</string>
|
||||
<string name="settingsOpenUrlExternal">Malfermi URLojn</string>
|
||||
<string name="settingsPointsShort">pt</string>
|
||||
<string name="settingsPostLayout">Poŝta aranĝo</string>
|
||||
<string name="settingsPostLayoutCard">Karto</string>
|
||||
<string name="settingsPostLayoutCompact">Kunpremita</string>
|
||||
<string name="settingsPostLayoutFull">Plena</string>
|
||||
<string name="settingsSectionAppearance">Rigardo kaj sento</string>
|
||||
<string name="settingsAdvanced">Altnivelaj agordoj</string>
|
||||
<string name="settingsSectionDebug">Sencimigi</string>
|
||||
<string name="settingsSectionGeneral">Generalaj</string>
|
||||
<string name="settingsSectionNsfw">NSFW</string>
|
||||
<string name="settingsThemeBlack">Malhela (AMOLED)</string>
|
||||
<string name="settingsThemeDark">Malhela</string>
|
||||
<string name="settingsThemeLight">Hela</string>
|
||||
<string name="settingsUiFontFamily">UI tiparo</string>
|
||||
<string name="settingsUiFontScale">UI tekstograndeco</string>
|
||||
<string name="settingsUiTheme">UI etoso</string>
|
||||
<string name="settingsUpvoteColor">Koloro de la favoraj voĉoj</string>
|
||||
<string name="settingsHideNavigationBar">Kaŝi navigobreton dum rulumado</string>
|
||||
<string name="settingsZombieModeInterval">Tempodaŭro de la zombia reĝimo</string>
|
||||
<string name="settingsZombieModeScrollAmount">Rula kvanto de la zombia reĝimo</string>
|
||||
<string name="settingsMarkAsReadWhileScrolling">Marki afiŝojn kiel legitaj dum rulumado</string>
|
||||
<string name="actionQuote">Citi</string>
|
||||
<string name="modActionAllow">Permesi al la uzanto denove</string>
|
||||
<string name="modActionBan">Malpermesi uzanton</string>
|
||||
<string name="modActionOpenReports">Malfermi raportojn</string>
|
||||
<string name="modActionMarkAsFeatured">Marki kiel prezentita</string>
|
||||
<string name="modActionUnmarkAsFeatured">Malmarki kiel prezentita</string>
|
||||
<string name="modActionLock">Ŝlosi</string>
|
||||
<string name="modActionUnlock">Malŝlosi</string>
|
||||
<string name="modActionRemove">Forigi</string>
|
||||
<string name="modActionMarkAsDistinguished">Marki kiel distingita</string>
|
||||
<string name="modActionUnmarkAsDistinguished">Malmarki kiel distingita</string>
|
||||
<string name="reportListTitle">Raportlisto</string>
|
||||
<string name="reportListTypeTitle">Raportlista tipo</string>
|
||||
<string name="reportListTypeAll">Ĉiuj</string>
|
||||
<string name="reportListTypeUnresolved">Nesolvitaj</string>
|
||||
<string name="reportActionResolve">Solvi</string>
|
||||
<string name="reportActionUnresolve">Nesolvi</string>
|
||||
<string name="sidebarNotLoggedMessage">Bonvenon al Raccoon!\n\nEn anonima reĝimo, uzu la falbutonon (▼) supre por ŝanĝi nodon.\n\nVi povas ensaluti al via instanco ĉe iam ajn de la Profila ekrano.\n\nĜuu Lemmy!</string>
|
||||
<string name="settingsDefaultInboxType">Defaŭlta enirkesto tipo</string>
|
||||
<string name="modActionAddMod">Aldoni moderigilon</string>
|
||||
<string name="modActionRemoveMod">Forigi moderigilon</string>
|
||||
<string name="settingsVoteFormat">Voĉdona formato</string>
|
||||
<string name="settingsVoteFormatAggregated">Entute</string>
|
||||
<string name="settingsVoteFormatSeparated">Apartigite</string>
|
||||
<string name="settingsVoteFormatPercentage">Procento</string>
|
||||
<string name="settingsFontFamilyDefault">Sistemo</string>
|
||||
<string name="postReplySourceAccount">de:</string>
|
||||
<string name="settingsCommentBarTheme">Etoso de la komenta trinkejo</string>
|
||||
<string name="settingsCommentBarThemeBlue">🌊 Ocean</string>
|
||||
<string name="settingsCommentBarThemeGreen">🥑 Avokado</string>
|
||||
<string name="settingsCommentBarThemeRed">🍓 Frago</string>
|
||||
<string name="settingsCommentBarThemeMulti">🌈 Ĉielarko</string>
|
||||
<string name="messageConfirmExit">Frapu 🔙 denove por eliri</string>
|
||||
<string name="communityActionUnsubscribe">Malaboni</string>
|
||||
<string name="settingsSearchPostsTitleOnly">Serĉi afiŝojn nur en titolo</string>
|
||||
<string name="settingsContentFontFamily">Enhavo tiparo</string>
|
||||
<string name="communityInfoModerators">Moderigantoj</string>
|
||||
<string name="communityActionAddFavorite">Aldoni al plej ŝatataj</string>
|
||||
<string name="communityActionRemoveFavorite">Forigi el plej ŝatataj</string>
|
||||
<string name="communityActionViewModlog">Vidu protokolon de modereco</string>
|
||||
<string name="modlogTitle">Protokolo de modereco</string>
|
||||
<string name="modlogItemModAdded">estis aldonita kiel moderanto</string>
|
||||
<string name="modlogItemModRemoved">estis forigita kiel moderigaĵo</string>
|
||||
<string name="modlogItemUserBanned">estis malpermesita</string>
|
||||
<string name="modlogItemUserUnbanned">estis nemalpermesita</string>
|
||||
<string name="modlogItemPostFeatured">estis markita kiel elstara afiŝo</string>
|
||||
<string name="modlogItemPostUnfeatured">estis markita kiel ne-elstarigita afiŝo</string>
|
||||
<string name="modlogItemPostLocked">estis ŝlosita</string>
|
||||
<string name="modlogItemPostUnlocked">estis malŝlosita</string>
|
||||
<string name="modlogItemPostRemoved">estis forigita</string>
|
||||
<string name="modlogItemPostRestored">estis restarigita</string>
|
||||
<string name="modlogItemCommentRemoved">estis forigita de la komentoj de</string>
|
||||
<string name="modlogItemCommentRestored">estis restarigita en la komentoj de</string>
|
||||
<string name="modlogItemCommunityTransfer">la komunumo estis translokigita al</string>
|
||||
<string name="blockActionUser">Bloki uzanton</string>
|
||||
<string name="blockActionCommunity">Bloki komunumon</string>
|
||||
<string name="userDetailInfo">Detaloj pri la uzanto</string>
|
||||
<string name="userInfoModerates">Moderatoro de</string>
|
||||
<string name="userInfoAdmin">administranto</string>
|
||||
<string name="settingsReplyColor">Koloro de responda ago</string>
|
||||
<string name="settingsSectionAccount">Kontagordoj</string>
|
||||
<string name="settingsWebPreferences">Retaj preferoj</string>
|
||||
<string name="settingsWebHeaderPersonal">Personaj informoj</string>
|
||||
<string name="settingsWebHeaderContents">Enhavo</string>
|
||||
<string name="settingsWebHeaderNotifications">Sciigoj</string>
|
||||
<string name="settingsWebAvatar">Avataro</string>
|
||||
<string name="settingsWebBanner">Standardo</string>
|
||||
<string name="settingsWebBio">Bio</string>
|
||||
<string name="settingsWebBot">Bot</string>
|
||||
<string name="settingsWebDisplayName">Montra nomo</string>
|
||||
<string name="settingsWebMatrix">Uzantidentigilo Matrix</string>
|
||||
<string name="settingsWebEmail">Retpoŝto</string>
|
||||
<string name="settingsWebShowBot">Montri botkontojn</string>
|
||||
<string name="settingsWebShowNsfw">Montri NSFW</string>
|
||||
<string name="settingsWebShowRead">Montri legitajn afiŝojn</string>
|
||||
<string name="settingsWebEmailNotifications">Sendi retpoŝtajn sciigojn</string>
|
||||
<string name="settingsManageBan">Malpermesoj kaj filtriloj</string>
|
||||
<string name="settingsManageBanActionUnban">Forigi malpermeson</string>
|
||||
<string name="settingsManageBanSectionInstances">Ekzemploj</string>
|
||||
<string name="settingsEdgeToEdge">Enhavo de rando al rando</string>
|
||||
<string name="settingsPostBodyMaxLines">Maksimuma nombro da linioj por afiŝokorpo</string>
|
||||
<string name="settingsPostBodyMaxLinesUnlimited">Senlima</string>
|
||||
<string name="messageContentRemoved">(ĉi tiu enhavo estis forigita)</string>
|
||||
<string name="postListLoadMorePosts">Ŝarĝi pli da afiŝoj</string>
|
||||
<string name="settingsInfiniteScrollDisabled">Malebligi senfinan movadadon</string>
|
||||
<string name="dialogTitleAddInstance">Aldoni nodon</string>
|
||||
<string name="settingsSaveColor">Koloro de la konserva ago</string>
|
||||
<string name="settingsConfigureSwipeActions">Agordi glitajn agojn</string>
|
||||
<string name="actionUpvote">Favora voĉdono</string>
|
||||
<string name="actionDownvote">Malfavora voĉdono</string>
|
||||
<string name="actionSave">Savi</string>
|
||||
<string name="actionToggleRead">Legita/nelegita</string>
|
||||
<string name="configureActionsSideStart">Agoj sur la maldekstra flanko</string>
|
||||
<string name="configureActionsSideEnd">Agoj sur la dekstra flanko</string>
|
||||
<string name="selectActionTitle">Elekti agon</string>
|
||||
<string name="buttonAdd">Aldoni novan</string>
|
||||
<string name="barThemeOpaque">Opaka</string>
|
||||
<string name="barThemeTransparent">Travidebla</string>
|
||||
<string name="settingsBarTheme">Temo de la statuso kaj navigadbreto</string>
|
||||
<string name="settingsColorsAndFonts">Aplika aspekto</string>
|
||||
<string name="settingsAboutViewGooglePlay">Vidi sur Google Play</string>
|
||||
<string name="settingsUserManual">Uzantmanlibro</string>
|
||||
<string name="settingsShowScores">Montri votojn</string>
|
||||
<string name="settingsVoteFormatHidden">Kaŝita</string>
|
||||
<string name="settingsCommentBarThickness">Komento trinkejo dikeco</string>
|
||||
<string name="settingsPreferUserNicknames">Uzu vidnomojn por uzantoj kaj komunumoj</string>
|
||||
<string name="messageVideoNsfw">Ĉi tiu video estis markita kiel NSFW</string>
|
||||
<string name="settingsTitleFontScale">Tekstograndeco de titoloj</string>
|
||||
<string name="settingsCommentFontScale">Tekstograndeco de komentoj</string>
|
||||
<string name="settingsAncillaryFontScale">Grandeco de helpaj tekstoj</string>
|
||||
<string name="settingsConfigureContent">Enhavo aspekto</string>
|
||||
<string name="settingsConfigureText">Teksto</string>
|
||||
<string name="settingsConfigureCustomizations">Personigoj</string>
|
||||
<string name="navigationDrawerTitleDrafts">Malnetoj</string>
|
||||
<string name="moderatorZoneTitle">Iloj por moderigaĵoj</string>
|
||||
<string name="moderatorZoneActionContents">Enhavon moderigi</string>
|
||||
<string name="messageAuthIssue">Okazis eraro dum venigado de uzantdatenoj, provu refreŝigi la ekranon</string>
|
||||
<string name="banReasonPlaceholder">Kialo (laŭvola)</string>
|
||||
<string name="banItemPermanent">Konstanta malpermeso</string>
|
||||
<string name="banItemRemoveData">Forigi datumojn</string>
|
||||
<string name="banItemDurationDays">Daŭro (tagoj)</string>
|
||||
<string name="messageUnsavedChanges">Estas nekonservitaj ŝanĝoj, ĉu vi certas, ke vi volas eliri?</string>
|
||||
<string name="buttonNoStay">Ne, resti ĉi tie</string>
|
||||
<string name="buttonYesQuit">Jes, eliri</string>
|
||||
<string name="settingsItemImageSourcePath">Konservi bildojn en specifaj subdosierujoj</string>
|
||||
<string name="settingsSubtitleImageSourcePath">uzi komunumon aŭ uzantan tenilon en vojoj</string>
|
||||
<string name="settingsTitleDisplay">Ekrano</string>
|
||||
<string name="settingsTitleReading">Legado kaj enhavo</string>
|
||||
<string name="settingsTitlePictures">Bildoj</string>
|
||||
<string name="settingsTitleExperimental">Eksperimentoj</string>
|
||||
<string name="communitySetCustomSort">Propra ordiga tipo</string>
|
||||
<string name="settingsDefaultExploreType">Defaŭlta speco de nutraĵo por esploro</string>
|
||||
<string name="actionSearchInCommunity">Serĉi ene de komunumo</string>
|
||||
<string name="actionExitSearch">Eliru serĉon</string>
|
||||
<string name="beta">Betao</string>
|
||||
<string name="actionCopyClipboard">Kopii al tondujo</string>
|
||||
<string name="copyTitle">Kopiu titolon</string>
|
||||
<string name="copyText">Kopiu tekston</string>
|
||||
<string name="copyBoth">Kopiu ambaŭ</string>
|
||||
<string name="profileUpvotesDownvotes">Favoraj & malfavoraj voĉoj</string>
|
||||
<string name="filteredContentsType">Enhavo tipo</string>
|
||||
<string name="actionSearchInComments">Serĉi en komentoj</string>
|
||||
<string name="advancedSettingsDefaultLanguage">Defaŭlta lingvo en la redaktilo</string>
|
||||
<string name="undetermined">Nedifinita</string>
|
||||
<string name="exploreResultTypeTitle">Rezulta tipo</string>
|
||||
<string name="communityActionEdit">Redaktu komunumon</string>
|
||||
<string name="editCommunityHeaderTextual">Tekstaj informoj</string>
|
||||
<string name="editCommunityItemSidebar">Flankmenuo</string>
|
||||
<string name="editCommunityItemPostingRestrictedToMods">Afiŝado limigita al moderigaĵoj</string>
|
||||
<string name="messageAreYouSure">Ĉu vi certas, ke vi volas daŭrigi?</string>
|
||||
<string name="buttonCancel">Nuligi</string>
|
||||
<string name="shareModeUrl">Kunhavigi kiel URL</string>
|
||||
<string name="shareModeFile">Kunhavigi kiel dosiero</string>
|
||||
<string name="modlogItemCommunityPurged">purigis komunumon</string>
|
||||
<string name="modlogItemCommentPurged">purigis komenton</string>
|
||||
<string name="modlogItemPersonPurged">havas elpurigitan personon</string>
|
||||
<string name="modlogItemPostPurged">purigis postenon</string>
|
||||
<string name="modlogItemHidden">estis kaŝita</string>
|
||||
<string name="modlogItemUnhidden">estis rivelita</string>
|
||||
<string name="settingsAboutLicences">Licencoj</string>
|
||||
<string name="settingsInboxBackgroundCheckPeriod">Kontroli nelegitajn erojn en la fono</string>
|
||||
<string name="never">Neniam</string>
|
||||
<string name="settingsAppIcon">Ikono de aplikaĵo</string>
|
||||
<string name="requiresRestart">(rekomenco necesas)</string>
|
||||
<string name="appIconDefault">Defaŭlte</string>
|
||||
<string name="appIconAlt1">Monokromata</string>
|
||||
<string name="settingsFadeReadPosts">Fadi legitajn afiŝojn</string>
|
||||
<string name="settingsShowUnreadComments">Montri nombron da nelegitaj komentoj</string>
|
||||
<string name="actionLogout">Elsaluti</string>
|
||||
<string name="settingsImport">Importi agordojn el dosiero</string>
|
||||
<string name="settingsExport">Eksporti agordojn al dosiero</string>
|
||||
<string name="settingsEnableButtonsToScrollBetweenComments">Navigaj butonoj en post-ekrano</string>
|
||||
<string name="settingsUrlOpeningModeInternal">En-apo</string>
|
||||
<string name="settingsUrlOpeningModeExternal">Ekstera retumilo</string>
|
||||
<string name="settingsUrlOpeningModeCustomTabs">Propraj langetoj</string>
|
||||
<string name="settingsFullWidthImages">Plenlarĝaj bildoj</string>
|
||||
<string name="contentScaleFit">Konveni la grandecon</string>
|
||||
<string name="contentScaleFillWidth">Plenigi la larĝon</string>
|
||||
<string name="contentScaleFillHeight">Plenigi la altecon</string>
|
||||
<string name="settingsCommentIndentAmount">Larĝeco de indentaĵo de komentoj</string>
|
||||
<string name="postActionUnhide">Reverti kaŝon</string>
|
||||
<string name="adminActionPurge">Elpurigi</string>
|
||||
<string name="adminActionMarkAsFeatured">Marki kiel elstara (nodo)</string>
|
||||
<string name="adminActionUnmarkAsFeatured">Malmarki kiel elstara (nodo)</string>
|
||||
<string name="communitySetPreferredLanguage">Agordi preferatan lingvon</string>
|
||||
<string name="appIconClassical">Klasika</string>
|
||||
<string name="settingsAboutAcknowledgements">Dankon</string>
|
||||
<string name="actionCreateCommunity">Krei komunumon</string>
|
||||
<string name="editCommunityItemVisibility">Videbleco</string>
|
||||
<string name="communityVisibilityLocalOnly">nur loka instanco</string>
|
||||
<string name="communityVisibilityPublic">publika</string>
|
||||
<string name="noticeCommunityLocalOnly">Ĉi tiu komunumo estas videbla nur ene de la nuna nodo</string>
|
||||
<string name="noticeBannedUser">La nuna uzanto estas malpermesita de ĉi tiu komunumo</string>
|
||||
<string name="settingsHiddenPosts">Kaŝitaj afiŝoj</string>
|
||||
<string name="settingsMediaList">Amaskomunikiloj alŝutoj</string>
|
||||
<string name="settingsEnableToggleFavoriteInNavDrawer">Aldoni/forigi plej ŝatatajn en navigada tirkesto</string>
|
||||
<string name="messageContentDeleted">Vi forigis ĉi tiun enhavon</string>
|
||||
<string name="actionRestore">Restaŭri</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Maksimuma nombro da linioj en enirkestokartoj</string>
|
||||
<string name="settingsDefaultExploreResultType">Defaŭlta serĉrezulto-tipo por esploro</string>
|
||||
</resources>
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Has eliminado este contenido</string>
|
||||
<string name="actionRestore">Restaurar</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Número máximo de líneas en tarjetas de mensajes</string>
|
||||
<string name="settingsDefaultExploreResultType">Tipo de resultado de búsqueda predeterminado para Descubre</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Olete selle sisu kustutanud</string>
|
||||
<string name="actionRestore">Taastama</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Maksimaalne ridade arv postkasti kaartidel</string>
|
||||
<string name="settingsDefaultExploreResultType">Avastamise vaikeotsingutulemuse tüüp</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Olet poistanut tämän sisällön</string>
|
||||
<string name="actionRestore">Palauttaa</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Saapuneiden korttien rivien enimmäismäärä</string>
|
||||
<string name="settingsDefaultExploreResultType">Tutkimuksen oletushakutulostyyppi</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Vous avez supprimé ce contenu</string>
|
||||
<string name="actionRestore">Restaurer</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Nombre maximum de lignes dans les cartes de boîte de réception</string>
|
||||
<string name="settingsDefaultExploreResultType">Type de résultat de recherche par défaut pour Explorer</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Tá an t-ábhar seo scriosta agat</string>
|
||||
<string name="actionRestore">Athchóirigh</string>
|
||||
<string name="settingsInboxPreviewMaxLines">An líon uasta línte i gcártaí bosca isteach</string>
|
||||
<string name="settingsDefaultExploreResultType">Cineál toradh cuardaigh réamhshocraithe le haghaidh Explore</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Izbrisali ste ovaj sadržaj</string>
|
||||
<string name="actionRestore">Vratiti</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Maksimalan broj redaka u ulaznim karticama</string>
|
||||
<string name="settingsDefaultExploreResultType">Zadana vrsta rezultata pretraživanja za Istraživanje</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Ezt a tartalmat törölted</string>
|
||||
<string name="actionRestore">visszaállítás</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Maximális sorok száma a postafiók kártyákban</string>
|
||||
<string name="settingsDefaultExploreResultType">A Felfedezés alapértelmezett keresési eredménytípusa</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Hai eliminato questo contenuto</string>
|
||||
<string name="actionRestore">Ripristina</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Numero massimo righe anteprima in inbox</string>
|
||||
<string name="settingsDefaultExploreResultType">Tipo di risultato di ricerca predefinito per Esplora</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Ištrynėte šį turinį</string>
|
||||
<string name="actionRestore">Atkurti</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Maksimalus eilučių skaičius gautųjų kortelėse</string>
|
||||
<string name="settingsDefaultExploreResultType">Numatytasis Naršymo paieškos rezultatų tipas</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Jūs esat izdzēsis šo saturu</string>
|
||||
<string name="actionRestore">Atjaunot</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Maksimālais rindu skaits iesūtnes kartītēs</string>
|
||||
<string name="settingsDefaultExploreResultType">Noklusējuma meklēšanas rezultāta veids funkcijai Izpētīt</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Ħassejt dan il-kontenut</string>
|
||||
<string name="actionRestore">Irrestawra</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Numru massimu ta' linji fil-karti tal-inbox</string>
|
||||
<string name="settingsDefaultExploreResultType">Tip ta' riżultat tat-tfittxija default għal Esplora</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">You have deleted this content</string>
|
||||
<string name="actionRestore">Restore</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Inbox card preview max lines</string>
|
||||
<string name="settingsDefaultExploreResultType">Default search result type for Explore</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Je hebt deze inhoud verwijderd</string>
|
||||
<string name="actionRestore">Herstellen</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Maximaal aantal regels in inboxkaarten</string>
|
||||
<string name="settingsDefaultExploreResultType">Standaard zoekresultaattype voor Explore</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Du har slettet dette innholdet</string>
|
||||
<string name="actionRestore">Restaurere</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Maks antall linjer i innbokskort</string>
|
||||
<string name="settingsDefaultExploreResultType">Standard søkeresultattype for Utforsk</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Usunąłeś tę treść</string>
|
||||
<string name="actionRestore">Przywrócić</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Maksymalna liczba linii w kartach skrzynki odbiorczej</string>
|
||||
<string name="settingsDefaultExploreResultType">Domyślny typ wyniku wyszukiwania dla Eksploruj</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Você excluiu este conteúdo</string>
|
||||
<string name="actionRestore">Restaura</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Número máximo de linhas nos cartões das mensagens</string>
|
||||
<string name="settingsDefaultExploreResultType">Tipo de resultado de pesquisa padrão para Explorar</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Você excluiu este conteúdo</string>
|
||||
<string name="actionRestore">Restaura</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Número máximo de linhas nos cartões das mensagens</string>
|
||||
<string name="settingsDefaultExploreResultType">Tipo de resultado de pesquisa padrão para Explorar</string>
|
||||
</resources>
|
||||
|
@ -343,7 +343,7 @@
|
||||
<string name="settingsTitlePictures">Imagini</string>
|
||||
<string name="settingsTitleExperimental">Experimente</string>
|
||||
<string name="communitySetCustomSort">Tip de sortare personalizat</string>
|
||||
<string name="settingsDefaultExploreType">Tip prestabilit de listare pentru Exploră</string>
|
||||
<string name="settingsDefaultExploreType">Tip prestabilit de listare pentru Explorarea</string>
|
||||
<string name="actionSearchInCommunity">Căută în comunitate</string>
|
||||
<string name="actionExitSearch">Ieși din căutare</string>
|
||||
<string name="beta">Beta</string>
|
||||
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Ați șters acest conținut</string>
|
||||
<string name="actionRestore">Restaurați-l</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Numărul maxim de linii în cardurile de inbox</string>
|
||||
<string name="settingsDefaultExploreResultType">Tip de rezultat de căutare prestabilit pentru Explorarea</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Вы удалили этот контент</string>
|
||||
<string name="actionRestore">Восстановить</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Максимальное количество строк во входящих карточках</string>
|
||||
<string name="settingsDefaultExploreResultType">Тип результатов поиска по умолчанию для Explore</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Tento obsah ste odstránili</string>
|
||||
<string name="actionRestore">Obnoviť</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Maximálny počet riadkov na kartách doručenej pošty</string>
|
||||
<string name="settingsDefaultExploreResultType">Predvolený typ výsledku vyhľadávania pre Preskúmať</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">To vsebino ste izbrisali</string>
|
||||
<string name="actionRestore">Obnovi</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Največje število vrstic v karticah prejete pošte</string>
|
||||
<string name="settingsDefaultExploreResultType">Privzeta vrsta rezultatov iskanja za Raziskovanje</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Ju e keni fshirë këtë përmbajtje</string>
|
||||
<string name="actionRestore">Rivendos</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Numri maksimal i rreshtave në kartat e kutisë hyrëse</string>
|
||||
<string name="settingsDefaultExploreResultType">Lloji i parazgjedhur i rezultatit të kërkimit për Eksploro</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Избрисали сте овај садржај</string>
|
||||
<string name="actionRestore">Ресторе</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Максималан број линија у картицама пријемног сандучет</string>
|
||||
<string name="settingsDefaultExploreResultType">Подразумевани тип резултата претраге за Истраживање</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Du har tagit bort detta innehåll</string>
|
||||
<string name="actionRestore">Återställ</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Max antal rader i inkorgskort</string>
|
||||
<string name="settingsDefaultExploreResultType">Standard sökresultattyp för Utforska</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">tenpo pini la, sina weka e ijo ni</string>
|
||||
<string name="actionRestore">o awen e ona</string>
|
||||
<string name="settingsInboxPreviewMaxLines">nanpa linja pi lipu lon toki poki</string>
|
||||
<string name="settingsDefaultExploreResultType">nasin ijo pi lipu lukin</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Bu içeriği sildiniz</string>
|
||||
<string name="actionRestore">Eski haline getirmek</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Gelen kutusu kartlarındaki maksimum satır sayısı</string>
|
||||
<string name="settingsDefaultExploreResultType">Keşfet için varsayılan arama sonucu türü</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">Ви видалили цей вміст</string>
|
||||
<string name="actionRestore">Відновлення</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Максимальна кількість рядків у картках вхідних повідомлень</string>
|
||||
<string name="settingsDefaultExploreResultType">Тип результатів пошуку за умовчанням для Explore</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">您刪除咗呢個內容</string>
|
||||
<string name="actionRestore">恢復</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Inbox card preview max lines</string>
|
||||
<string name="settingsDefaultExploreResultType">Default search result type for explore</string>
|
||||
</resources>
|
||||
|
@ -411,4 +411,5 @@
|
||||
<string name="messageContentDeleted">您已刪除此內容</string>
|
||||
<string name="actionRestore">恢復</string>
|
||||
<string name="settingsInboxPreviewMaxLines">Inbox card preview max lines</string>
|
||||
<string name="settingsDefaultExploreResultType">Default search result type for explore</string>
|
||||
</resources>
|
||||
|
@ -35,12 +35,12 @@ import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.LemmyIte
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.PostRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.SiteRepository
|
||||
import kotlinx.coroutines.FlowPreview
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.debounce
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.receiveAsFlow
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@OptIn(FlowPreview::class)
|
||||
@ -72,7 +72,6 @@ class CommunityDetailViewModel(
|
||||
),
|
||||
CommunityDetailMviModel {
|
||||
private var hideReadPosts = false
|
||||
private val searchEventChannel = Channel<Unit>()
|
||||
|
||||
init {
|
||||
screenModelScope.launch {
|
||||
@ -179,8 +178,9 @@ class CommunityDetailViewModel(
|
||||
emitEffect(CommunityDetailMviModel.Effect.TriggerCopy(it.value))
|
||||
}.launchIn(this)
|
||||
|
||||
searchEventChannel
|
||||
.receiveAsFlow()
|
||||
uiState
|
||||
.map { it.searchText }
|
||||
.distinctUntilChanged()
|
||||
.debounce(1_000)
|
||||
.onEach {
|
||||
updateState { it.copy(loading = false) }
|
||||
@ -811,7 +811,6 @@ class CommunityDetailViewModel(
|
||||
private fun updateSearchText(value: String) {
|
||||
screenModelScope.launch {
|
||||
updateState { it.copy(searchText = value) }
|
||||
searchEventChannel.send(Unit)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -21,20 +21,21 @@ import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.FlowPreview
|
||||
import kotlinx.coroutines.IO
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.debounce
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.filterIsInstance
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.receiveAsFlow
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import kotlinx.coroutines.withTimeout
|
||||
import kotlinx.coroutines.yield
|
||||
|
||||
@OptIn(FlowPreview::class)
|
||||
class ModalDrawerViewModel(
|
||||
private val identityRepository: IdentityRepository,
|
||||
private val communityRepository: CommunityRepository,
|
||||
@ -51,8 +52,6 @@ class ModalDrawerViewModel(
|
||||
initialState = ModalDrawerMviModel.UiState(),
|
||||
),
|
||||
ModalDrawerMviModel {
|
||||
private val searchEventChannel = Channel<Unit>()
|
||||
|
||||
init {
|
||||
screenModelScope.launch {
|
||||
apiConfigurationRepository.instance
|
||||
@ -99,9 +98,9 @@ class ModalDrawerViewModel(
|
||||
}
|
||||
}.launchIn(this)
|
||||
|
||||
@OptIn(FlowPreview::class)
|
||||
searchEventChannel
|
||||
.receiveAsFlow()
|
||||
uiState
|
||||
.map { it.searchText }
|
||||
.distinctUntilChanged()
|
||||
.debounce(1000)
|
||||
.onEach {
|
||||
refresh()
|
||||
@ -123,7 +122,6 @@ class ModalDrawerViewModel(
|
||||
is ModalDrawerMviModel.Intent.SetSearch ->
|
||||
screenModelScope.launch {
|
||||
updateState { it.copy(searchText = intent.value) }
|
||||
searchEventChannel.send(Unit)
|
||||
}
|
||||
|
||||
is ModalDrawerMviModel.Intent.ToggleFavorite -> toggleFavorite(intent.id)
|
||||
|
@ -13,29 +13,52 @@ import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SortType
|
||||
|
||||
@Stable
|
||||
interface ExploreMviModel :
|
||||
MviModel<ExploreMviModel.Intent, ExploreMviModel.UiState, ExploreMviModel.Effect>, ScreenModel {
|
||||
MviModel<ExploreMviModel.Intent, ExploreMviModel.UiState, ExploreMviModel.Effect>,
|
||||
ScreenModel {
|
||||
sealed interface Intent {
|
||||
data object Refresh : Intent
|
||||
|
||||
data object LoadNextPage : Intent
|
||||
|
||||
data class SetSearch(val value: String) : Intent
|
||||
data class SetSearch(
|
||||
val value: String,
|
||||
) : Intent
|
||||
|
||||
data object HapticIndication : Intent
|
||||
|
||||
data class UpVotePost(val id: Long, val feedback: Boolean = false) : Intent
|
||||
data class UpVotePost(
|
||||
val id: Long,
|
||||
val feedback: Boolean = false,
|
||||
) : Intent
|
||||
|
||||
data class DownVotePost(val id: Long, val feedback: Boolean = false) : Intent
|
||||
data class DownVotePost(
|
||||
val id: Long,
|
||||
val feedback: Boolean = false,
|
||||
) : Intent
|
||||
|
||||
data class SavePost(val id: Long, val feedback: Boolean = false) : Intent
|
||||
data class SavePost(
|
||||
val id: Long,
|
||||
val feedback: Boolean = false,
|
||||
) : Intent
|
||||
|
||||
data class UpVoteComment(val id: Long, val feedback: Boolean = false) : Intent
|
||||
data class UpVoteComment(
|
||||
val id: Long,
|
||||
val feedback: Boolean = false,
|
||||
) : Intent
|
||||
|
||||
data class DownVoteComment(val id: Long, val feedback: Boolean = false) : Intent
|
||||
data class DownVoteComment(
|
||||
val id: Long,
|
||||
val feedback: Boolean = false,
|
||||
) : Intent
|
||||
|
||||
data class SaveComment(val id: Long, val feedback: Boolean = false) : Intent
|
||||
data class SaveComment(
|
||||
val id: Long,
|
||||
val feedback: Boolean = false,
|
||||
) : Intent
|
||||
|
||||
data class ToggleSubscription(val communityId: Long) : Intent
|
||||
data class ToggleSubscription(
|
||||
val communityId: Long,
|
||||
) : Intent
|
||||
}
|
||||
|
||||
data class UiState(
|
||||
@ -52,7 +75,7 @@ interface ExploreMviModel :
|
||||
val listingType: ListingType = ListingType.Local,
|
||||
val sortType: SortType = SortType.Active,
|
||||
val results: List<SearchResult> = emptyList(),
|
||||
val resultType: SearchResultType = SearchResultType.Posts,
|
||||
val resultType: SearchResultType = SearchResultType.Communities,
|
||||
val postLayout: PostLayout = PostLayout.Card,
|
||||
val fullHeightImages: Boolean = true,
|
||||
val fullWidthImages: Boolean = false,
|
||||
|
@ -17,6 +17,7 @@ import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SearchResult
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SearchResultType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SortType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.toListingType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.toSearchResultType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.toSortType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.CommentRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.CommunityRepository
|
||||
@ -25,11 +26,11 @@ import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.PostRepo
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.SiteRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.UserRepository
|
||||
import kotlinx.coroutines.FlowPreview
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.flow.debounce
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.receiveAsFlow
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@OptIn(FlowPreview::class)
|
||||
@ -47,12 +48,11 @@ class ExploreViewModel(
|
||||
private val notificationCenter: NotificationCenter,
|
||||
private val hapticFeedback: HapticFeedback,
|
||||
private val getSortTypesUseCase: GetSortTypesUseCase,
|
||||
) : ExploreMviModel,
|
||||
DefaultMviModel<ExploreMviModel.Intent, ExploreMviModel.UiState, ExploreMviModel.Effect>(
|
||||
) : DefaultMviModel<ExploreMviModel.Intent, ExploreMviModel.UiState, ExploreMviModel.Effect>(
|
||||
initialState = ExploreMviModel.UiState(),
|
||||
) {
|
||||
),
|
||||
ExploreMviModel {
|
||||
private var currentPage: Int = 1
|
||||
private var searchEventChannel = Channel<Unit>()
|
||||
private val isOnOtherInstance: Boolean get() = otherInstance.isNotEmpty()
|
||||
private val notificationEventKey: String
|
||||
get() =
|
||||
@ -71,86 +71,111 @@ class ExploreViewModel(
|
||||
instance = apiConfigRepository.instance.value,
|
||||
)
|
||||
}
|
||||
identityRepository.isLogged.onEach { isLogged ->
|
||||
updateState {
|
||||
it.copy(isLogged = isLogged ?: false)
|
||||
}
|
||||
updateAvailableSortTypes()
|
||||
}.launchIn(this)
|
||||
themeRepository.postLayout.onEach { layout ->
|
||||
updateState { it.copy(postLayout = layout) }
|
||||
}.launchIn(this)
|
||||
settingsRepository.currentSettings.onEach { settings ->
|
||||
updateState {
|
||||
it.copy(
|
||||
blurNsfw = settings.blurNsfw,
|
||||
voteFormat = settings.voteFormat,
|
||||
autoLoadImages = settings.autoLoadImages,
|
||||
preferNicknames = settings.preferUserNicknames,
|
||||
fullHeightImages = settings.fullHeightImages,
|
||||
fullWidthImages = settings.fullWidthImages,
|
||||
swipeActionsEnabled = settings.enableSwipeActions,
|
||||
doubleTapActionEnabled = settings.enableDoubleTapAction,
|
||||
actionsOnSwipeToStartPosts = settings.actionsOnSwipeToStartPosts,
|
||||
actionsOnSwipeToEndPosts = settings.actionsOnSwipeToEndPosts,
|
||||
actionsOnSwipeToStartComments = settings.actionsOnSwipeToStartComments,
|
||||
actionsOnSwipeToEndComments = settings.actionsOnSwipeToEndComments,
|
||||
showScores = settings.showScores,
|
||||
)
|
||||
}
|
||||
}.launchIn(this)
|
||||
notificationCenter.subscribe(NotificationCenterEvent.Logout::class).onEach {
|
||||
handleLogout()
|
||||
}.launchIn(this)
|
||||
notificationCenter.subscribe(NotificationCenterEvent.PostUpdated::class).onEach { evt ->
|
||||
handlePostUpdate(evt.model)
|
||||
}.launchIn(this)
|
||||
notificationCenter.subscribe(NotificationCenterEvent.CommentUpdated::class)
|
||||
identityRepository.isLogged
|
||||
.onEach { isLogged ->
|
||||
updateState {
|
||||
it.copy(isLogged = isLogged ?: false)
|
||||
}
|
||||
updateAvailableSortTypes()
|
||||
}.launchIn(this)
|
||||
themeRepository.postLayout
|
||||
.onEach { layout ->
|
||||
updateState { it.copy(postLayout = layout) }
|
||||
}.launchIn(this)
|
||||
settingsRepository.currentSettings
|
||||
.onEach { settings ->
|
||||
updateState {
|
||||
it.copy(
|
||||
blurNsfw = settings.blurNsfw,
|
||||
voteFormat = settings.voteFormat,
|
||||
autoLoadImages = settings.autoLoadImages,
|
||||
preferNicknames = settings.preferUserNicknames,
|
||||
fullHeightImages = settings.fullHeightImages,
|
||||
fullWidthImages = settings.fullWidthImages,
|
||||
swipeActionsEnabled = settings.enableSwipeActions,
|
||||
doubleTapActionEnabled = settings.enableDoubleTapAction,
|
||||
actionsOnSwipeToStartPosts = settings.actionsOnSwipeToStartPosts,
|
||||
actionsOnSwipeToEndPosts = settings.actionsOnSwipeToEndPosts,
|
||||
actionsOnSwipeToStartComments = settings.actionsOnSwipeToStartComments,
|
||||
actionsOnSwipeToEndComments = settings.actionsOnSwipeToEndComments,
|
||||
showScores = settings.showScores,
|
||||
)
|
||||
}
|
||||
}.launchIn(this)
|
||||
notificationCenter
|
||||
.subscribe(NotificationCenterEvent.Logout::class)
|
||||
.onEach {
|
||||
handleLogout()
|
||||
}.launchIn(this)
|
||||
notificationCenter
|
||||
.subscribe(NotificationCenterEvent.PostUpdated::class)
|
||||
.onEach { evt ->
|
||||
handlePostUpdate(evt.model)
|
||||
}.launchIn(this)
|
||||
notificationCenter
|
||||
.subscribe(NotificationCenterEvent.CommentUpdated::class)
|
||||
.onEach { evt ->
|
||||
handleCommentUpdate(evt.model)
|
||||
}.launchIn(this)
|
||||
notificationCenter.subscribe(NotificationCenterEvent.ChangeFeedType::class)
|
||||
notificationCenter
|
||||
.subscribe(NotificationCenterEvent.ChangeFeedType::class)
|
||||
.onEach { evt ->
|
||||
if (evt.screenKey == notificationEventKey) {
|
||||
changeListingType(evt.value)
|
||||
}
|
||||
}.launchIn(this)
|
||||
notificationCenter.subscribe(NotificationCenterEvent.ChangeSortType::class)
|
||||
notificationCenter
|
||||
.subscribe(NotificationCenterEvent.ChangeSortType::class)
|
||||
.onEach { evt ->
|
||||
if (evt.screenKey == notificationEventKey) {
|
||||
changeSortType(evt.value)
|
||||
}
|
||||
}.launchIn(this)
|
||||
notificationCenter.subscribe(NotificationCenterEvent.ResetExplore::class).onEach {
|
||||
onFirstLoad()
|
||||
}.launchIn(this)
|
||||
notificationCenter.subscribe(NotificationCenterEvent.ChangeSearchResultType::class).onEach { evt ->
|
||||
if (evt.screenKey == notificationEventKey) {
|
||||
changeResultType(evt.value)
|
||||
}
|
||||
}.launchIn(this)
|
||||
notificationCenter.subscribe(NotificationCenterEvent.CommunitySubscriptionChanged::class).onEach { evt ->
|
||||
handleCommunityUpdate(evt.value)
|
||||
}.launchIn(this)
|
||||
notificationCenter
|
||||
.subscribe(NotificationCenterEvent.ResetExplore::class)
|
||||
.onEach {
|
||||
onFirstLoad()
|
||||
}.launchIn(this)
|
||||
notificationCenter
|
||||
.subscribe(NotificationCenterEvent.ChangeSearchResultType::class)
|
||||
.onEach { evt ->
|
||||
if (evt.screenKey == notificationEventKey) {
|
||||
changeResultType(evt.value)
|
||||
}
|
||||
}.launchIn(this)
|
||||
notificationCenter
|
||||
.subscribe(NotificationCenterEvent.CommunitySubscriptionChanged::class)
|
||||
.onEach { evt ->
|
||||
handleCommunityUpdate(evt.value)
|
||||
}.launchIn(this)
|
||||
|
||||
searchEventChannel.receiveAsFlow().debounce(1000).onEach {
|
||||
emitEffect(ExploreMviModel.Effect.BackToTop)
|
||||
refresh()
|
||||
}.launchIn(this)
|
||||
uiState
|
||||
.map {
|
||||
it.searchText
|
||||
}.distinctUntilChanged()
|
||||
.debounce(1000)
|
||||
.onEach {
|
||||
emitEffect(ExploreMviModel.Effect.BackToTop)
|
||||
refresh()
|
||||
}.launchIn(this)
|
||||
}
|
||||
|
||||
onFirstLoad()
|
||||
if (uiState.value.initial) {
|
||||
onFirstLoad()
|
||||
}
|
||||
}
|
||||
|
||||
private fun onFirstLoad() {
|
||||
screenModelScope.launch {
|
||||
val settings = settingsRepository.currentSettings.value
|
||||
val listingType = if (isOnOtherInstance) ListingType.Local else settings.defaultExploreType.toListingType()
|
||||
val listingType =
|
||||
if (isOnOtherInstance) ListingType.Local else settings.defaultExploreType.toListingType()
|
||||
val sortType = settings.defaultPostSortType.toSortType()
|
||||
updateState {
|
||||
it.copy(
|
||||
listingType = listingType,
|
||||
sortType = sortType,
|
||||
resultType = settings.defaultExploreResultType.toSearchResultType(),
|
||||
)
|
||||
}
|
||||
val auth = identityRepository.authToken.value
|
||||
@ -186,78 +211,84 @@ class ExploreViewModel(
|
||||
if (intent.feedback) {
|
||||
hapticFeedback.vibrate()
|
||||
}
|
||||
uiState.value.results.firstOrNull {
|
||||
it is SearchResult.Post && it.model.id == intent.id
|
||||
}?.also { result ->
|
||||
toggleDownVote(
|
||||
post = (result as SearchResult.Post).model,
|
||||
)
|
||||
}
|
||||
uiState.value.results
|
||||
.firstOrNull {
|
||||
it is SearchResult.Post && it.model.id == intent.id
|
||||
}?.also { result ->
|
||||
toggleDownVote(
|
||||
post = (result as SearchResult.Post).model,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
is ExploreMviModel.Intent.SavePost -> {
|
||||
if (intent.feedback) {
|
||||
hapticFeedback.vibrate()
|
||||
}
|
||||
uiState.value.results.firstOrNull {
|
||||
it is SearchResult.Post && it.model.id == intent.id
|
||||
}?.also { result ->
|
||||
toggleSave(
|
||||
post = (result as SearchResult.Post).model,
|
||||
)
|
||||
}
|
||||
uiState.value.results
|
||||
.firstOrNull {
|
||||
it is SearchResult.Post && it.model.id == intent.id
|
||||
}?.also { result ->
|
||||
toggleSave(
|
||||
post = (result as SearchResult.Post).model,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
is ExploreMviModel.Intent.UpVotePost -> {
|
||||
if (intent.feedback) {
|
||||
hapticFeedback.vibrate()
|
||||
}
|
||||
uiState.value.results.firstOrNull {
|
||||
it is SearchResult.Post && it.model.id == intent.id
|
||||
}?.also { result ->
|
||||
toggleUpVote(
|
||||
post = (result as SearchResult.Post).model,
|
||||
)
|
||||
}
|
||||
uiState.value.results
|
||||
.firstOrNull {
|
||||
it is SearchResult.Post && it.model.id == intent.id
|
||||
}?.also { result ->
|
||||
toggleUpVote(
|
||||
post = (result as SearchResult.Post).model,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
is ExploreMviModel.Intent.DownVoteComment -> {
|
||||
if (intent.feedback) {
|
||||
hapticFeedback.vibrate()
|
||||
}
|
||||
uiState.value.results.firstOrNull {
|
||||
it is SearchResult.Comment && it.model.id == intent.id
|
||||
}?.also { result ->
|
||||
toggleDownVoteComment(
|
||||
comment = (result as SearchResult.Comment).model,
|
||||
)
|
||||
}
|
||||
uiState.value.results
|
||||
.firstOrNull {
|
||||
it is SearchResult.Comment && it.model.id == intent.id
|
||||
}?.also { result ->
|
||||
toggleDownVoteComment(
|
||||
comment = (result as SearchResult.Comment).model,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
is ExploreMviModel.Intent.SaveComment -> {
|
||||
if (intent.feedback) {
|
||||
hapticFeedback.vibrate()
|
||||
}
|
||||
uiState.value.results.firstOrNull {
|
||||
it is SearchResult.Comment && it.model.id == intent.id
|
||||
}?.also { result ->
|
||||
toggleSaveComment(
|
||||
comment = (result as SearchResult.Comment).model,
|
||||
)
|
||||
}
|
||||
uiState.value.results
|
||||
.firstOrNull {
|
||||
it is SearchResult.Comment && it.model.id == intent.id
|
||||
}?.also { result ->
|
||||
toggleSaveComment(
|
||||
comment = (result as SearchResult.Comment).model,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
is ExploreMviModel.Intent.UpVoteComment -> {
|
||||
if (intent.feedback) {
|
||||
hapticFeedback.vibrate()
|
||||
}
|
||||
uiState.value.results.firstOrNull {
|
||||
it is SearchResult.Comment && it.model.id == intent.id
|
||||
}?.also { result ->
|
||||
toggleUpVoteComment(
|
||||
comment = (result as SearchResult.Comment).model,
|
||||
)
|
||||
}
|
||||
uiState.value.results
|
||||
.firstOrNull {
|
||||
it is SearchResult.Comment && it.model.id == intent.id
|
||||
}?.also { result ->
|
||||
toggleUpVoteComment(
|
||||
comment = (result as SearchResult.Comment).model,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
is ExploreMviModel.Intent.ToggleSubscription -> toggleSubscription(intent.communityId)
|
||||
@ -267,7 +298,6 @@ class ExploreViewModel(
|
||||
private fun setSearch(value: String) {
|
||||
screenModelScope.launch {
|
||||
updateState { it.copy(searchText = value) }
|
||||
searchEventChannel.send(Unit)
|
||||
}
|
||||
}
|
||||
|
||||
@ -354,60 +384,65 @@ class ExploreViewModel(
|
||||
currentPage++
|
||||
}
|
||||
val itemsToAdd =
|
||||
itemList.filter { item ->
|
||||
if (settings.includeNsfw) {
|
||||
true
|
||||
} else {
|
||||
isSafeForWork(item)
|
||||
}
|
||||
}.let {
|
||||
when (resultType) {
|
||||
SearchResultType.Communities -> {
|
||||
if (additionalResolvedCommunity != null &&
|
||||
it.none {
|
||||
r ->
|
||||
r is SearchResult.Community && r.model.id == additionalResolvedCommunity.id
|
||||
itemList
|
||||
.filter { item ->
|
||||
if (settings.includeNsfw) {
|
||||
true
|
||||
} else {
|
||||
isSafeForWork(item)
|
||||
}
|
||||
}.let {
|
||||
when (resultType) {
|
||||
SearchResultType.Communities -> {
|
||||
if (additionalResolvedCommunity != null &&
|
||||
it.none { r ->
|
||||
r is SearchResult.Community && r.model.id == additionalResolvedCommunity.id
|
||||
}
|
||||
) {
|
||||
it + SearchResult.Community(additionalResolvedCommunity)
|
||||
} else {
|
||||
it
|
||||
}
|
||||
) {
|
||||
it + SearchResult.Community(additionalResolvedCommunity)
|
||||
} else {
|
||||
it
|
||||
}
|
||||
}
|
||||
|
||||
SearchResultType.Users -> {
|
||||
if (additionalResolvedUser != null &&
|
||||
it.none {
|
||||
r ->
|
||||
r is SearchResult.User && r.model.id == additionalResolvedUser.id
|
||||
SearchResultType.Users -> {
|
||||
if (additionalResolvedUser != null &&
|
||||
it.none { r ->
|
||||
r is SearchResult.User && r.model.id == additionalResolvedUser.id
|
||||
}
|
||||
) {
|
||||
it + SearchResult.User(additionalResolvedUser)
|
||||
} else {
|
||||
it
|
||||
}
|
||||
) {
|
||||
it + SearchResult.User(additionalResolvedUser)
|
||||
} else {
|
||||
it
|
||||
}
|
||||
}
|
||||
|
||||
SearchResultType.Posts -> {
|
||||
if (settings.searchPostTitleOnly && searchText.isNotEmpty()) {
|
||||
// apply the more restrictive title-only search
|
||||
it.filterIsInstance<SearchResult.Post>()
|
||||
.filter { r -> r.model.title.contains(other = searchText, ignoreCase = true) }
|
||||
} else {
|
||||
it
|
||||
SearchResultType.Posts -> {
|
||||
if (settings.searchPostTitleOnly && searchText.isNotEmpty()) {
|
||||
// apply the more restrictive title-only search
|
||||
it
|
||||
.filterIsInstance<SearchResult.Post>()
|
||||
.filter { r ->
|
||||
r.model.title.contains(
|
||||
other = searchText,
|
||||
ignoreCase = true,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
it
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else -> it
|
||||
else -> it
|
||||
}
|
||||
}.filter { item ->
|
||||
if (refreshing) {
|
||||
true
|
||||
} else {
|
||||
// prevents accidental duplication
|
||||
currentState.results.none { other -> getItemKey(item) == getItemKey(other) }
|
||||
}
|
||||
}
|
||||
}.filter { item ->
|
||||
if (refreshing) {
|
||||
true
|
||||
} else {
|
||||
// prevents accidental duplication
|
||||
currentState.results.none { other -> getItemKey(item) == getItemKey(other) }
|
||||
}
|
||||
}
|
||||
updateState {
|
||||
val newItems =
|
||||
if (refreshing) {
|
||||
@ -760,9 +795,10 @@ class ExploreViewModel(
|
||||
|
||||
private fun toggleSubscription(communityId: Long) {
|
||||
val community =
|
||||
uiState.value.results.firstOrNull {
|
||||
(it as? SearchResult.Community)?.model?.id == communityId
|
||||
}.let { (it as? SearchResult.Community)?.model } ?: return
|
||||
uiState.value.results
|
||||
.firstOrNull {
|
||||
(it as? SearchResult.Community)?.model?.id == communityId
|
||||
}.let { (it as? SearchResult.Community)?.model } ?: return
|
||||
screenModelScope.launch {
|
||||
val newValue =
|
||||
when (community.subscribed) {
|
||||
|
@ -18,11 +18,11 @@ import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommunityModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.CommunityRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.SiteRepository
|
||||
import kotlinx.coroutines.FlowPreview
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.flow.debounce
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.receiveAsFlow
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@OptIn(FlowPreview::class)
|
||||
@ -41,8 +41,6 @@ class ManageSubscriptionsViewModel(
|
||||
initialState = ManageSubscriptionsMviModel.UiState(),
|
||||
),
|
||||
ManageSubscriptionsMviModel {
|
||||
private val searchEventChannel = Channel<Unit>()
|
||||
|
||||
init {
|
||||
screenModelScope.launch {
|
||||
settingsRepository.currentSettings
|
||||
@ -65,8 +63,9 @@ class ManageSubscriptionsViewModel(
|
||||
handleCommunityUpdate(evt.value)
|
||||
}.launchIn(this)
|
||||
|
||||
searchEventChannel
|
||||
.receiveAsFlow()
|
||||
uiState
|
||||
.map { it.searchText }
|
||||
.distinctUntilChanged()
|
||||
.debounce(1000)
|
||||
.onEach {
|
||||
emitEffect(ManageSubscriptionsMviModel.Effect.BackToTop)
|
||||
@ -235,7 +234,6 @@ class ManageSubscriptionsViewModel(
|
||||
private fun updateSearchText(value: String) {
|
||||
screenModelScope.launch {
|
||||
updateState { it.copy(searchText = value) }
|
||||
searchEventChannel.send(Unit)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,11 +12,11 @@ import com.github.diegoberaldin.raccoonforlemmy.core.persistence.repository.Mult
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.repository.SettingsRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.ValidationError
|
||||
import kotlinx.coroutines.FlowPreview
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.flow.debounce
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.receiveAsFlow
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@OptIn(FlowPreview::class)
|
||||
@ -31,8 +31,6 @@ class MultiCommunityEditorViewModel(
|
||||
initialState = MultiCommunityEditorMviModel.UiState(),
|
||||
),
|
||||
MultiCommunityEditorMviModel {
|
||||
private val searchEventChannel = Channel<Unit>()
|
||||
|
||||
init {
|
||||
screenModelScope.launch {
|
||||
settingsRepository.currentSettings
|
||||
@ -45,8 +43,9 @@ class MultiCommunityEditorViewModel(
|
||||
}
|
||||
}.launchIn(this)
|
||||
|
||||
searchEventChannel
|
||||
.receiveAsFlow()
|
||||
uiState
|
||||
.map { it.searchText }
|
||||
.distinctUntilChanged()
|
||||
.debounce(1000)
|
||||
.onEach {
|
||||
refresh()
|
||||
@ -127,7 +126,6 @@ class MultiCommunityEditorViewModel(
|
||||
private fun setSearch(value: String) {
|
||||
screenModelScope.launch {
|
||||
updateState { it.copy(searchText = value) }
|
||||
searchEventChannel.send(Unit)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -28,12 +28,12 @@ import com.github.diegoberaldin.raccoonforlemmy.unit.postdetail.utils.populateLo
|
||||
import com.github.diegoberaldin.raccoonforlemmy.unit.postdetail.utils.sortToNestedOrder
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.FlowPreview
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.debounce
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.receiveAsFlow
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@OptIn(FlowPreview::class)
|
||||
@ -63,7 +63,6 @@ class PostDetailViewModel(
|
||||
PostDetailMviModel {
|
||||
private var highlightCommentPath: String? = null
|
||||
private var commentWasHighlighted = false
|
||||
private val searchEventChannel = Channel<Unit>()
|
||||
private val initialNavigationEnabled = postNavigationManager.canNavigate.value
|
||||
private var lastCommentNavigateIndex: Int? = null
|
||||
|
||||
@ -184,8 +183,9 @@ class PostDetailViewModel(
|
||||
}
|
||||
}.launchIn(this)
|
||||
|
||||
searchEventChannel
|
||||
.receiveAsFlow()
|
||||
uiState
|
||||
.map { it.searchText }
|
||||
.distinctUntilChanged()
|
||||
.debounce(1_000)
|
||||
.onEach {
|
||||
updateState { it.copy(loading = false) }
|
||||
@ -908,7 +908,6 @@ class PostDetailViewModel(
|
||||
private fun updateSearchText(value: String) {
|
||||
screenModelScope.launch {
|
||||
updateState { it.copy(searchText = value) }
|
||||
searchEventChannel.send(Unit)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6,13 +6,14 @@ import com.diegoberaldin.raccoonforlemmy.domain.lemmy.pagination.CommunityPagina
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.DefaultMviModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.repository.SettingsRepository
|
||||
import kotlinx.coroutines.FlowPreview
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.flow.debounce
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.receiveAsFlow
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@OptIn(FlowPreview::class)
|
||||
class SelectCommunityViewModel(
|
||||
private val settingsRepository: SettingsRepository,
|
||||
private val communityPaginationManager: CommunityPaginationManager,
|
||||
@ -20,8 +21,6 @@ class SelectCommunityViewModel(
|
||||
initialState = SelectCommunityMviModel.UiState(),
|
||||
),
|
||||
SelectCommunityMviModel {
|
||||
private val searchEventChannel = Channel<Unit>()
|
||||
|
||||
init {
|
||||
screenModelScope.launch {
|
||||
settingsRepository.currentSettings
|
||||
@ -34,9 +33,9 @@ class SelectCommunityViewModel(
|
||||
}
|
||||
}.launchIn(this)
|
||||
|
||||
@OptIn(FlowPreview::class)
|
||||
searchEventChannel
|
||||
.receiveAsFlow()
|
||||
uiState
|
||||
.map { it.searchText }
|
||||
.distinctUntilChanged()
|
||||
.debounce(1000)
|
||||
.onEach {
|
||||
refresh()
|
||||
@ -61,7 +60,6 @@ class SelectCommunityViewModel(
|
||||
private fun setSearch(value: String) {
|
||||
screenModelScope.launch {
|
||||
updateState { it.copy(searchText = value) }
|
||||
searchEventChannel.send(Unit)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user