feat: search entry's title in library (#158)
* feat: add library title search * do library search only, won't do source search
This commit is contained in:
parent
241c6ff4c1
commit
271aa166aa
25 changed files with 92 additions and 29 deletions
|
|
@ -119,7 +119,7 @@ fun SourcesScreen(
|
|||
listState = lazyListState,
|
||||
searchQuery = state.searchQuery,
|
||||
onChangeSearchQuery = onChangeSearchQuery,
|
||||
placeholderText = stringResource(KMR.strings.action_source_search),
|
||||
placeholderText = stringResource(KMR.strings.action_search_for_source),
|
||||
)
|
||||
|
||||
FastScrollLazyColumn(
|
||||
|
|
|
|||
|
|
@ -192,6 +192,7 @@ fun MangaScreen(
|
|||
onRelatedMangasScreenClick: () -> Unit,
|
||||
onRelatedMangaClick: (Manga) -> Unit,
|
||||
onRelatedMangaLongClick: (Manga) -> Unit,
|
||||
librarySearch: (query: String) -> Unit,
|
||||
onSourceClick: () -> Unit,
|
||||
onCoverLoaded: (MangaCover) -> Unit,
|
||||
onPaletteScreenClick: () -> Unit,
|
||||
|
|
@ -255,6 +256,7 @@ fun MangaScreen(
|
|||
onRelatedMangasScreenClick = onRelatedMangasScreenClick,
|
||||
onRelatedMangaClick = onRelatedMangaClick,
|
||||
onRelatedMangaLongClick = onRelatedMangaLongClick,
|
||||
librarySearch = librarySearch,
|
||||
onSourceClick = onSourceClick,
|
||||
onCoverLoaded = onCoverLoaded,
|
||||
onPaletteScreenClick = onPaletteScreenClick,
|
||||
|
|
@ -311,6 +313,7 @@ fun MangaScreen(
|
|||
onRelatedMangasScreenClick = onRelatedMangasScreenClick,
|
||||
onRelatedMangaClick = onRelatedMangaClick,
|
||||
onRelatedMangaLongClick = onRelatedMangaLongClick,
|
||||
librarySearch = librarySearch,
|
||||
onSourceClick = onSourceClick,
|
||||
onCoverLoaded = onCoverLoaded,
|
||||
onPaletteScreenClick = onPaletteScreenClick,
|
||||
|
|
@ -384,6 +387,7 @@ private fun MangaScreenSmallImpl(
|
|||
onRelatedMangasScreenClick: () -> Unit,
|
||||
onRelatedMangaClick: (Manga) -> Unit,
|
||||
onRelatedMangaLongClick: (Manga) -> Unit,
|
||||
librarySearch: (query: String) -> Unit,
|
||||
onSourceClick: () -> Unit,
|
||||
onCoverLoaded: (MangaCover) -> Unit,
|
||||
onPaletteScreenClick: () -> Unit,
|
||||
|
|
@ -556,6 +560,7 @@ private fun MangaScreenSmallImpl(
|
|||
onCoverClick = onCoverClicked,
|
||||
doSearch = onSearch,
|
||||
// KMK -->
|
||||
librarySearch = librarySearch,
|
||||
onSourceClick = onSourceClick,
|
||||
onCoverLoaded = onCoverLoaded,
|
||||
// KMK <--
|
||||
|
|
@ -790,6 +795,7 @@ private fun MangaScreenLargeImpl(
|
|||
onRelatedMangasScreenClick: () -> Unit,
|
||||
onRelatedMangaClick: (Manga) -> Unit,
|
||||
onRelatedMangaLongClick: (Manga) -> Unit,
|
||||
librarySearch: (query: String) -> Unit,
|
||||
onSourceClick: () -> Unit,
|
||||
onCoverLoaded: (MangaCover) -> Unit,
|
||||
onPaletteScreenClick: () -> Unit,
|
||||
|
|
@ -954,6 +960,7 @@ private fun MangaScreenLargeImpl(
|
|||
onCoverClick = onCoverClicked,
|
||||
doSearch = onSearch,
|
||||
// KMK -->
|
||||
librarySearch = librarySearch,
|
||||
onSourceClick = onSourceClick,
|
||||
onCoverLoaded = onCoverLoaded,
|
||||
// KMK <--
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ import eu.kanade.tachiyomi.source.model.SManga
|
|||
import eu.kanade.tachiyomi.util.system.copyToClipboard
|
||||
import tachiyomi.domain.manga.model.Manga
|
||||
import tachiyomi.i18n.MR
|
||||
import tachiyomi.i18n.kmk.KMR
|
||||
import tachiyomi.i18n.sy.SYMR
|
||||
import tachiyomi.presentation.core.components.material.TextButton
|
||||
import tachiyomi.presentation.core.components.material.padding
|
||||
|
|
@ -111,6 +112,7 @@ fun MangaInfoBox(
|
|||
doSearch: (query: String, global: Boolean) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
// KMK -->
|
||||
librarySearch: (query: String) -> Unit,
|
||||
onSourceClick: () -> Unit,
|
||||
onCoverLoaded: (DomainMangaCover) -> Unit,
|
||||
// KMK <--
|
||||
|
|
@ -134,7 +136,7 @@ fun MangaInfoBox(
|
|||
colors = backdropGradientColors,
|
||||
// KMK -->
|
||||
startY = size.height / 2,
|
||||
// KMKM <--
|
||||
// KMK <--
|
||||
),
|
||||
)
|
||||
}
|
||||
|
|
@ -161,6 +163,7 @@ fun MangaInfoBox(
|
|||
sourceName = sourceName,
|
||||
isStubSource = isStubSource,
|
||||
// KMK -->
|
||||
librarySearch = librarySearch,
|
||||
onSourceClick = onSourceClick,
|
||||
onCoverLoaded = onCoverLoaded,
|
||||
// KMK <--
|
||||
|
|
@ -178,6 +181,7 @@ fun MangaInfoBox(
|
|||
sourceName = sourceName,
|
||||
isStubSource = isStubSource,
|
||||
// KMK -->
|
||||
librarySearch = librarySearch,
|
||||
onSourceClick = onSourceClick,
|
||||
onCoverLoaded = onCoverLoaded,
|
||||
// KMK <--
|
||||
|
|
@ -429,6 +433,7 @@ private fun MangaAndSourceTitlesLarge(
|
|||
sourceName: String,
|
||||
isStubSource: Boolean,
|
||||
// KMK -->
|
||||
librarySearch: (query: String) -> Unit,
|
||||
onSourceClick: () -> Unit,
|
||||
onCoverLoaded: (DomainMangaCover) -> Unit,
|
||||
// KMK <--
|
||||
|
|
@ -459,6 +464,7 @@ private fun MangaAndSourceTitlesLarge(
|
|||
isStubSource = isStubSource,
|
||||
textAlign = TextAlign.Center,
|
||||
// KMK -->
|
||||
librarySearch = librarySearch,
|
||||
onSourceClick = onSourceClick,
|
||||
// KMK <--
|
||||
)
|
||||
|
|
@ -478,6 +484,7 @@ private fun MangaAndSourceTitlesSmall(
|
|||
sourceName: String,
|
||||
isStubSource: Boolean,
|
||||
// KMK -->
|
||||
librarySearch: (query: String) -> Unit,
|
||||
onSourceClick: () -> Unit,
|
||||
onCoverLoaded: (DomainMangaCover) -> Unit,
|
||||
// KMK <--
|
||||
|
|
@ -512,6 +519,7 @@ private fun MangaAndSourceTitlesSmall(
|
|||
sourceName = sourceName,
|
||||
isStubSource = isStubSource,
|
||||
// KMK -->
|
||||
librarySearch = librarySearch,
|
||||
onSourceClick = onSourceClick,
|
||||
// KMK <--
|
||||
)
|
||||
|
|
@ -519,6 +527,7 @@ private fun MangaAndSourceTitlesSmall(
|
|||
}
|
||||
}
|
||||
|
||||
@Suppress("UnusedReceiverParameter")
|
||||
@Composable
|
||||
private fun ColumnScope.MangaContentInfo(
|
||||
title: String,
|
||||
|
|
@ -530,20 +539,52 @@ private fun ColumnScope.MangaContentInfo(
|
|||
isStubSource: Boolean,
|
||||
textAlign: TextAlign? = LocalTextStyle.current.textAlign,
|
||||
// KMK -->
|
||||
librarySearch: (query: String) -> Unit,
|
||||
onSourceClick: () -> Unit,
|
||||
// KMK <--
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
// KMK -->
|
||||
var showMenu by remember { mutableStateOf(false) }
|
||||
DropdownMenu(
|
||||
expanded = showMenu,
|
||||
onDismissRequest = { showMenu = false },
|
||||
) {
|
||||
DropdownMenuItem(
|
||||
text = { Text(text = stringResource(KMR.strings.action_library_search)) },
|
||||
onClick = {
|
||||
librarySearch(title)
|
||||
showMenu = false
|
||||
},
|
||||
)
|
||||
DropdownMenuItem(
|
||||
text = { Text(text = stringResource(MR.strings.action_global_search)) },
|
||||
onClick = {
|
||||
doSearch(title, true)
|
||||
showMenu = false
|
||||
},
|
||||
)
|
||||
DropdownMenuItem(
|
||||
text = { Text(text = stringResource(MR.strings.action_copy_to_clipboard)) },
|
||||
onClick = {
|
||||
context.copyToClipboard(
|
||||
title,
|
||||
title,
|
||||
)
|
||||
showMenu = false
|
||||
},
|
||||
)
|
||||
}
|
||||
// KMK <--
|
||||
Text(
|
||||
text = title.ifBlank { stringResource(MR.strings.unknown_title) },
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
modifier = Modifier.clickableNoIndication(
|
||||
onLongClick = {
|
||||
if (title.isNotBlank()) {
|
||||
context.copyToClipboard(
|
||||
title,
|
||||
title,
|
||||
)
|
||||
// KMK -->
|
||||
showMenu = true
|
||||
// KMK <--
|
||||
}
|
||||
},
|
||||
onClick = { if (title.isNotBlank()) doSearch(title, true) },
|
||||
|
|
|
|||
|
|
@ -301,6 +301,11 @@ class MangaScreen(
|
|||
onRefresh = screenModel::fetchAllFromSource,
|
||||
onContinueReading = { continueReading(context, screenModel.getNextUnreadChapter()) },
|
||||
onSearch = { query, global -> scope.launch { performSearch(navigator, query, global) } },
|
||||
// KMK -->
|
||||
librarySearch = { query ->
|
||||
scope.launch { performSearch(navigator, query, global = false, library = true) }
|
||||
},
|
||||
// KMK <--
|
||||
onCoverClicked = screenModel::showCoverDialog,
|
||||
onShareClicked = { shareManga(context, screenModel.manga, screenModel.source) }.takeIf { isHttpSource },
|
||||
onDownloadActionClicked = screenModel::runDownloadAction.takeIf { !successState.source.isLocalOrStub() },
|
||||
|
|
@ -573,7 +578,14 @@ class MangaScreen(
|
|||
*
|
||||
* @param query the search query to the parent controller
|
||||
*/
|
||||
private suspend fun performSearch(navigator: Navigator, query: String, global: Boolean) {
|
||||
private suspend fun performSearch(
|
||||
navigator: Navigator,
|
||||
query: String,
|
||||
global: Boolean,
|
||||
// KMK -->
|
||||
library: Boolean = false,
|
||||
// KMK <--
|
||||
) {
|
||||
if (global) {
|
||||
navigator.push(GlobalSearchScreen(query))
|
||||
return
|
||||
|
|
@ -585,7 +597,8 @@ class MangaScreen(
|
|||
|
||||
// KMK -->
|
||||
navigator.popUntil { screen ->
|
||||
screen is BrowseSourceScreen || screen is HomeScreen || screen is SourceFeedScreen
|
||||
screen is HomeScreen ||
|
||||
!library && (screen is BrowseSourceScreen || screen is SourceFeedScreen)
|
||||
}
|
||||
// KMK <--
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<string name="theme_matrix">ماتريكس</string>
|
||||
<string name="theme_mocha">موكا</string>
|
||||
<string name="theme_sapphire">ياقوت</string>
|
||||
<string name="action_source_search">البحث عن مصدر</string>
|
||||
<string name="action_search_for_source">البحث عن مصدر</string>
|
||||
<string name="action_toggle_nsfw_only">تبديل NSFW فقط</string>
|
||||
<string name="action_bulk_select">وضع التحديد بالجملة</string>
|
||||
<string name="action_faq_and_guides">الأسئلة الشائعة والأدلة</string>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Actions -->
|
||||
<string name="action_source_search">Search for source</string>
|
||||
<string name="action_search_for_source">Search for source</string>
|
||||
<string name="action_source_search">Source search</string>
|
||||
<string name="action_library_search">Library search</string>
|
||||
<string name="action_toggle_nsfw_only">Toggle NSFW only</string>
|
||||
<string name="action_bulk_select">Bulk selection mode</string>
|
||||
<string name="action_faq_and_guides">FAQ and Guides</string>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="action_source_search">Hledat zdroj</string>
|
||||
<string name="action_search_for_source">Hledat zdroj</string>
|
||||
<string name="action_toggle_nsfw_only">Přepnout pouze NSFW</string>
|
||||
<string name="action_bulk_select">Režim hromadného výběru</string>
|
||||
<string name="action_faq_and_guides">FAQ a návody</string>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="action_source_search">Søg efter kilde</string>
|
||||
<string name="action_search_for_source">Søg efter kilde</string>
|
||||
<string name="action_toggle_nsfw_only">Slå kun NSFW til/fra</string>
|
||||
<string name="action_bulk_select">Masse valg tilstand</string>
|
||||
<string name="action_faq_and_guides">Ofte stillede spørgsmål og vejledninger</string>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<string name="theme_matrix">Matrix</string>
|
||||
<string name="theme_mocha">Mokka</string>
|
||||
<string name="theme_sapphire">Saphir</string>
|
||||
<string name="action_source_search">Nach Quelle suchen</string>
|
||||
<string name="action_search_for_source">Nach Quelle suchen</string>
|
||||
<string name="action_toggle_nsfw_only">Nur NSFW umschalten</string>
|
||||
<string name="action_bulk_select">Massenauswahlmodus</string>
|
||||
<string name="action_faq_and_guides">FAQ und Anleitungen</string>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="action_source_search">Αναζήτηση πηγής</string>
|
||||
<string name="action_search_for_source">Αναζήτηση πηγής</string>
|
||||
<string name="action_toggle_nsfw_only">Εναλλαγή μόνο NSFW</string>
|
||||
<string name="action_bulk_select">Λειτουργία μαζικής επιλογής</string>
|
||||
<string name="action_faq_and_guides">Συχνές ερωτήσεις και οδηγοί</string>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<string name="theme_matrix">Matrix</string>
|
||||
<string name="theme_mocha">Moca</string>
|
||||
<string name="theme_sapphire">Zafiro</string>
|
||||
<string name="action_source_search">Buscar fuente</string>
|
||||
<string name="action_search_for_source">Buscar fuente</string>
|
||||
<string name="action_toggle_nsfw_only">Alternar sólo NSFW</string>
|
||||
<string name="action_bulk_select">Modo de selección masiva</string>
|
||||
<string name="action_faq_and_guides">Preguntas frecuentes y guías</string>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="action_source_search">Hae lähdekoodia</string>
|
||||
<string name="action_search_for_source">Hae lähdekoodia</string>
|
||||
<string name="action_toggle_nsfw_only">Vaihda vain NSFW</string>
|
||||
<string name="action_bulk_select">Bulk valintatila</string>
|
||||
<string name="action_faq_and_guides">UKK ja oppaat</string>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<string name="theme_matrix">Matrix</string>
|
||||
<string name="theme_mocha">Mocha</string>
|
||||
<string name="theme_sapphire">Saphir</string>
|
||||
<string name="action_source_search">Rechercher une source</string>
|
||||
<string name="action_search_for_source">Rechercher une source</string>
|
||||
<string name="action_toggle_nsfw_only">Activer/désactiver uniquement NSFW</string>
|
||||
<string name="action_bulk_select">Mode de sélection en bloc</string>
|
||||
<string name="action_faq_and_guides">FAQ et tutoriels</string>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<string name="theme_matrix">Matrix</string>
|
||||
<string name="theme_mocha">Mocha</string>
|
||||
<string name="theme_sapphire">Zaffiro</string>
|
||||
<string name="action_source_search">Cerca la sorgente</string>
|
||||
<string name="action_search_for_source">Cerca la sorgente</string>
|
||||
<string name="action_toggle_nsfw_only">Attiva/disattiva solo NSFW</string>
|
||||
<string name="action_bulk_select">Modalità selezione Bulk</string>
|
||||
<string name="action_faq_and_guides">FAQ e guide</string>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="action_source_search">ソースを検索</string>
|
||||
<string name="action_search_for_source">ソースを検索</string>
|
||||
<string name="action_toggle_nsfw_only">NSFWのみ切り替え</string>
|
||||
<string name="action_bulk_select">一括選択モード</string>
|
||||
<string name="action_faq_and_guides">FAQ とガイド</string>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="action_source_search">Bron zoeken</string>
|
||||
<string name="action_search_for_source">Bron zoeken</string>
|
||||
<string name="action_toggle_nsfw_only">Alleen NSFW in-/uitschakelen</string>
|
||||
<string name="action_bulk_select">Bulk selectiemodus</string>
|
||||
<string name="action_faq_and_guides">FAQ en handleidingen</string>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="action_source_search">Szukaj źródła</string>
|
||||
<string name="action_search_for_source">Szukaj źródła</string>
|
||||
<string name="action_toggle_nsfw_only">Przełącz tylko NSFW</string>
|
||||
<string name="action_bulk_select">Tryb masowego zaznaczenia</string>
|
||||
<string name="action_faq_and_guides">FAQ i przewodniki</string>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<string name="theme_matrix">Verde</string>
|
||||
<string name="theme_mocha">Café</string>
|
||||
<string name="theme_sapphire">Safira</string>
|
||||
<string name="action_source_search">Pesquisar fonte</string>
|
||||
<string name="action_search_for_source">Pesquisar fonte</string>
|
||||
<string name="action_toggle_nsfw_only">Ativar/desativar somente NSFW</string>
|
||||
<string name="action_bulk_select">Modo de seleção em massa</string>
|
||||
<string name="action_faq_and_guides">FAQ e Guias</string>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<string name="theme_matrix">Verde</string>
|
||||
<string name="theme_mocha">Café</string>
|
||||
<string name="theme_sapphire">Safira</string>
|
||||
<string name="action_source_search">Pesquisar fonte</string>
|
||||
<string name="action_search_for_source">Pesquisar fonte</string>
|
||||
<string name="action_toggle_nsfw_only">Ativar/desativar somente NSFW</string>
|
||||
<string name="action_bulk_select">Modo de seleção em massa</string>
|
||||
<string name="action_faq_and_guides">FAQ e Guias</string>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="action_source_search">Caută sursa</string>
|
||||
<string name="action_search_for_source">Caută sursa</string>
|
||||
<string name="action_toggle_nsfw_only">Comută numai NSFW</string>
|
||||
<string name="action_bulk_select">Mod selecţie în masă</string>
|
||||
<string name="action_faq_and_guides">Întrebări frecvente și ghiduri</string>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<string name="theme_matrix">Matrix</string>
|
||||
<string name="theme_mocha">Мокко</string>
|
||||
<string name="theme_sapphire">Сапфир</string>
|
||||
<string name="action_source_search">Поиск источника</string>
|
||||
<string name="action_search_for_source">Поиск источника</string>
|
||||
<string name="action_toggle_nsfw_only">Переключить только NSFW</string>
|
||||
<string name="action_bulk_select">Режим массового выбора</string>
|
||||
<string name="action_faq_and_guides">FAQ и руководства</string>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="action_source_search">Sök efter källa</string>
|
||||
<string name="action_search_for_source">Sök efter källa</string>
|
||||
<string name="action_toggle_nsfw_only">Växla endast NSFW</string>
|
||||
<string name="action_bulk_select">Bulk markeringsläge</string>
|
||||
<string name="action_faq_and_guides">Vanliga frågor och guider</string>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<resources>
|
||||
<string name="theme_cottoncandy">Бавовняні цукерки</string>
|
||||
<string name="theme_mocha">Моча</string>
|
||||
<string name="action_source_search">Пошук джерела</string>
|
||||
<string name="action_search_for_source">Пошук джерела</string>
|
||||
<string name="action_toggle_nsfw_only">Лише NSFW</string>
|
||||
<string name="action_bulk_select">Масовий режим вибору</string>
|
||||
<string name="action_faq_and_guides">ЧаПи та керівництва</string>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<string name="theme_matrix">黑客</string>
|
||||
<string name="theme_mocha">摩卡</string>
|
||||
<string name="theme_sapphire">蓝宝石</string>
|
||||
<string name="action_source_search">搜索源</string>
|
||||
<string name="action_search_for_source">搜索源</string>
|
||||
<string name="action_toggle_nsfw_only">仅切换 NSFW</string>
|
||||
<string name="action_bulk_select">批量选择模式</string>
|
||||
<string name="action_faq_and_guides">常见问题和指南</string>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<string name="theme_matrix">駭客</string>
|
||||
<string name="theme_mocha">摩卡</string>
|
||||
<string name="theme_sapphire">藍寶石</string>
|
||||
<string name="action_source_search">搜尋來源</string>
|
||||
<string name="action_search_for_source">搜尋來源</string>
|
||||
<string name="action_toggle_nsfw_only">切換僅 NSFW</string>
|
||||
<string name="action_bulk_select">批量選擇模式</string>
|
||||
<string name="action_faq_and_guides">常見問題和指南</string>
|
||||
|
|
|
|||
Loading…
Reference in a new issue