Skip to content

Commit c9a0e84

Browse files
committed
537: move browse target resolver to dedicated file
1 parent 1ed95b2 commit c9a0e84

2 files changed

Lines changed: 57 additions & 55 deletions

File tree

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package eu.kanade.tachiyomi.ui.browse
2+
3+
import java.util.concurrent.atomic.AtomicReference
4+
5+
internal enum class BrowseSearchTarget {
6+
ANIME,
7+
MANGA,
8+
UNKNOWN,
9+
}
10+
11+
internal class BrowseReselectTargetResolver(
12+
initialSearchTarget: BrowseSearchTarget = BrowseSearchTarget.UNKNOWN,
13+
) {
14+
private val lastKnownSearchTarget = AtomicReference(initialSearchTarget)
15+
16+
fun updateForPage(page: Int) {
17+
lastKnownSearchTarget.updateAndGet { current ->
18+
updateBrowseSearchTarget(current, page)
19+
}
20+
}
21+
22+
fun resolvedTarget(): BrowseSearchTarget {
23+
return resolveBrowseReselectTarget(lastKnownSearchTarget.get())
24+
}
25+
}
26+
27+
private const val ANIME_SOURCES_PAGE = 0
28+
private const val MANGA_SOURCES_PAGE = 1
29+
private const val ANIME_EXTENSIONS_PAGE = 2
30+
private const val MANGA_EXTENSIONS_PAGE = 3
31+
private const val ANIME_MIGRATION_PAGE = 4
32+
private const val MANGA_MIGRATION_PAGE = 5
33+
34+
internal fun browseSearchTargetForPage(page: Int): BrowseSearchTarget {
35+
return when (page) {
36+
ANIME_SOURCES_PAGE, ANIME_EXTENSIONS_PAGE, ANIME_MIGRATION_PAGE -> BrowseSearchTarget.ANIME
37+
MANGA_SOURCES_PAGE, MANGA_EXTENSIONS_PAGE, MANGA_MIGRATION_PAGE -> BrowseSearchTarget.MANGA
38+
else -> BrowseSearchTarget.UNKNOWN
39+
}
40+
}
41+
42+
internal fun updateBrowseSearchTarget(
43+
lastKnownSearchTarget: BrowseSearchTarget,
44+
page: Int,
45+
): BrowseSearchTarget {
46+
return when (val pageTarget = browseSearchTargetForPage(page)) {
47+
BrowseSearchTarget.UNKNOWN -> lastKnownSearchTarget
48+
else -> pageTarget
49+
}
50+
}
51+
52+
internal fun resolveBrowseReselectTarget(lastKnownSearchTarget: BrowseSearchTarget): BrowseSearchTarget {
53+
return when (lastKnownSearchTarget) {
54+
BrowseSearchTarget.UNKNOWN -> BrowseSearchTarget.ANIME
55+
else -> lastKnownSearchTarget
56+
}
57+
}

app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseTab.kt

Lines changed: 0 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ import tachiyomi.i18n.MR
4040
import tachiyomi.presentation.core.i18n.stringResource
4141
import uy.kohesive.injekt.Injekt
4242
import uy.kohesive.injekt.api.get
43-
import java.util.concurrent.atomic.AtomicReference
4443

4544
data object BrowseTab : Tab {
4645

@@ -144,57 +143,3 @@ data object BrowseTab : Tab {
144143
internal fun shouldShowNovelSourcesTab(uiState: LightNovelPluginUiState): Boolean {
145144
return uiState is LightNovelPluginUiState.Ready
146145
}
147-
148-
internal enum class BrowseSearchTarget {
149-
ANIME,
150-
MANGA,
151-
UNKNOWN,
152-
}
153-
154-
internal class BrowseReselectTargetResolver(
155-
initialSearchTarget: BrowseSearchTarget = BrowseSearchTarget.UNKNOWN,
156-
) {
157-
private val lastKnownSearchTarget = AtomicReference(initialSearchTarget)
158-
159-
fun updateForPage(page: Int) {
160-
lastKnownSearchTarget.updateAndGet { current ->
161-
updateBrowseSearchTarget(current, page)
162-
}
163-
}
164-
165-
fun resolvedTarget(): BrowseSearchTarget {
166-
return resolveBrowseReselectTarget(lastKnownSearchTarget.get())
167-
}
168-
}
169-
170-
private const val ANIME_SOURCES_PAGE = 0
171-
private const val MANGA_SOURCES_PAGE = 1
172-
private const val ANIME_EXTENSIONS_PAGE = 2
173-
private const val MANGA_EXTENSIONS_PAGE = 3
174-
private const val ANIME_MIGRATION_PAGE = 4
175-
private const val MANGA_MIGRATION_PAGE = 5
176-
177-
internal fun browseSearchTargetForPage(page: Int): BrowseSearchTarget {
178-
return when (page) {
179-
ANIME_SOURCES_PAGE, ANIME_EXTENSIONS_PAGE, ANIME_MIGRATION_PAGE -> BrowseSearchTarget.ANIME
180-
MANGA_SOURCES_PAGE, MANGA_EXTENSIONS_PAGE, MANGA_MIGRATION_PAGE -> BrowseSearchTarget.MANGA
181-
else -> BrowseSearchTarget.UNKNOWN
182-
}
183-
}
184-
185-
internal fun updateBrowseSearchTarget(
186-
lastKnownSearchTarget: BrowseSearchTarget,
187-
page: Int,
188-
): BrowseSearchTarget {
189-
return when (val pageTarget = browseSearchTargetForPage(page)) {
190-
BrowseSearchTarget.UNKNOWN -> lastKnownSearchTarget
191-
else -> pageTarget
192-
}
193-
}
194-
195-
internal fun resolveBrowseReselectTarget(lastKnownSearchTarget: BrowseSearchTarget): BrowseSearchTarget {
196-
return when (lastKnownSearchTarget) {
197-
BrowseSearchTarget.UNKNOWN -> BrowseSearchTarget.ANIME
198-
else -> lastKnownSearchTarget
199-
}
200-
}

0 commit comments

Comments
 (0)