
Co-authored-by: p (cherry picked from commit bec549cc444328c8b46594c67a84d25dcc1aca6f) # Conflicts: # app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSearchScreen.kt
82 lines
2.9 KiB
Kotlin
82 lines
2.9 KiB
Kotlin
package eu.kanade.presentation.track
|
|
|
|
import androidx.compose.foundation.text.input.TextFieldState
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
|
import androidx.compose.ui.tooling.preview.datasource.LoremIpsum
|
|
import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
|
import java.time.Instant
|
|
import java.time.temporal.ChronoUnit
|
|
import kotlin.random.Random
|
|
|
|
internal class TrackerSearchPreviewProvider : PreviewParameterProvider<@Composable () -> Unit> {
|
|
private val fullPageWithSecondSelected = @Composable {
|
|
val items = someTrackSearches().take(30).toList()
|
|
TrackerSearch(
|
|
state = TextFieldState(initialText = "search text"),
|
|
onDispatchQuery = {},
|
|
queryResult = Result.success(items),
|
|
selected = items[1],
|
|
onSelectedChange = {},
|
|
onConfirmSelection = {},
|
|
onDismissRequest = {},
|
|
)
|
|
}
|
|
private val fullPageWithoutSelected = @Composable {
|
|
TrackerSearch(
|
|
state = TextFieldState(),
|
|
onDispatchQuery = {},
|
|
queryResult = Result.success(someTrackSearches().take(30).toList()),
|
|
selected = null,
|
|
onSelectedChange = {},
|
|
onConfirmSelection = {},
|
|
onDismissRequest = {},
|
|
)
|
|
}
|
|
private val loading = @Composable {
|
|
TrackerSearch(
|
|
state = TextFieldState(),
|
|
onDispatchQuery = {},
|
|
queryResult = null,
|
|
selected = null,
|
|
onSelectedChange = {},
|
|
onConfirmSelection = {},
|
|
onDismissRequest = {},
|
|
)
|
|
}
|
|
override val values: Sequence<@Composable () -> Unit> = sequenceOf(
|
|
fullPageWithSecondSelected,
|
|
fullPageWithoutSelected,
|
|
loading,
|
|
)
|
|
|
|
private fun someTrackSearches(): Sequence<TrackSearch> = sequence {
|
|
while (true) {
|
|
yield(randTrackSearch())
|
|
}
|
|
}
|
|
|
|
private fun randTrackSearch() = TrackSearch().let {
|
|
it.id = Random.nextLong()
|
|
it.manga_id = Random.nextLong()
|
|
it.tracker_id = Random.nextLong()
|
|
it.remote_id = Random.nextLong()
|
|
it.library_id = Random.nextLong()
|
|
it.title = lorem((1..10).random()).joinToString()
|
|
it.last_chapter_read = (0..100).random().toDouble()
|
|
it.total_chapters = (100L..1000L).random()
|
|
it.score = (0..10).random().toDouble()
|
|
it.status = Random.nextLong()
|
|
it.started_reading_date = 0L
|
|
it.finished_reading_date = 0L
|
|
it.tracking_url = "https://example.com/tracker-example"
|
|
it.cover_url = "https://example.com/cover.png"
|
|
it.start_date = Instant.now().minus((1L..365).random(), ChronoUnit.DAYS).toString()
|
|
it.summary = lorem((0..40).random()).joinToString()
|
|
it
|
|
}
|
|
|
|
private fun lorem(words: Int): Sequence<String> =
|
|
LoremIpsum(words).values
|
|
}
|