diff --git a/app/src/main/java/org/koitharu/kotatsu/core/model/parcelable/ParcelableMangaChapters.kt b/app/src/main/java/org/koitharu/kotatsu/core/model/parcelable/ParcelableMangaChapters.kt index db9ebb9c7..473b45320 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/model/parcelable/ParcelableMangaChapters.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/model/parcelable/ParcelableMangaChapters.kt @@ -3,14 +3,13 @@ package org.koitharu.kotatsu.core.model.parcelable import android.os.Parcel import android.os.Parcelable import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.utils.ext.createList class ParcelableMangaChapters( val chapters: List, ) : Parcelable { constructor(parcel: Parcel) : this( - createList(parcel.readInt()) { parcel.readMangaChapter() } + List(parcel.readInt()) { parcel.readMangaChapter() } ) override fun writeToParcel(parcel: Parcel, flags: Int) { diff --git a/app/src/main/java/org/koitharu/kotatsu/core/model/parcelable/ParcelableMangaPages.kt b/app/src/main/java/org/koitharu/kotatsu/core/model/parcelable/ParcelableMangaPages.kt index 4717132f5..3230ec59b 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/model/parcelable/ParcelableMangaPages.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/model/parcelable/ParcelableMangaPages.kt @@ -3,14 +3,13 @@ package org.koitharu.kotatsu.core.model.parcelable import android.os.Parcel import android.os.Parcelable import org.koitharu.kotatsu.parsers.model.MangaPage -import org.koitharu.kotatsu.utils.ext.createList class ParcelableMangaPages( val pages: List, ) : Parcelable { constructor(parcel: Parcel) : this( - createList(parcel.readInt()) { parcel.readMangaPage() } + List(parcel.readInt()) { parcel.readMangaPage() } ) override fun writeToParcel(parcel: Parcel, flags: Int) { diff --git a/app/src/main/java/org/koitharu/kotatsu/core/model/parcelable/ParcelableMangaTags.kt b/app/src/main/java/org/koitharu/kotatsu/core/model/parcelable/ParcelableMangaTags.kt index 0ef0f74e0..bd5490e0a 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/model/parcelable/ParcelableMangaTags.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/model/parcelable/ParcelableMangaTags.kt @@ -3,14 +3,14 @@ package org.koitharu.kotatsu.core.model.parcelable import android.os.Parcel import android.os.Parcelable import org.koitharu.kotatsu.parsers.model.MangaTag -import org.koitharu.kotatsu.utils.ext.createSet +import org.koitharu.kotatsu.utils.ext.Set class ParcelableMangaTags( val tags: Set, ) : Parcelable { constructor(parcel: Parcel) : this( - createSet(parcel.readInt()) { parcel.readMangaTag() } + Set(parcel.readInt()) { parcel.readMangaTag() } ) override fun writeToParcel(parcel: Parcel, flags: Int) { diff --git a/app/src/main/java/org/koitharu/kotatsu/scrobbling/domain/Scrobbler.kt b/app/src/main/java/org/koitharu/kotatsu/scrobbling/domain/Scrobbler.kt index 2fe44e39c..b730d19cd 100644 --- a/app/src/main/java/org/koitharu/kotatsu/scrobbling/domain/Scrobbler.kt +++ b/app/src/main/java/org/koitharu/kotatsu/scrobbling/domain/Scrobbler.kt @@ -10,7 +10,7 @@ import org.koitharu.kotatsu.core.db.MangaDatabase import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.scrobbling.data.ScrobblingEntity import org.koitharu.kotatsu.scrobbling.domain.model.* -import org.koitharu.kotatsu.utils.ext.findKey +import org.koitharu.kotatsu.utils.ext.findKeyByValue import org.koitharu.kotatsu.utils.ext.printStackTraceDebug abstract class Scrobbler( @@ -59,7 +59,7 @@ abstract class Scrobbler( scrobbler = scrobblerService, mangaId = mangaId, targetId = targetId, - status = statuses.findKey(status), + status = statuses.findKeyByValue(status), chapter = chapter, comment = comment, rating = rating, diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/ext/CollectionExt.kt b/app/src/main/java/org/koitharu/kotatsu/utils/ext/CollectionExt.kt index f66a6dc22..611bbd442 100644 --- a/app/src/main/java/org/koitharu/kotatsu/utils/ext/CollectionExt.kt +++ b/app/src/main/java/org/koitharu/kotatsu/utils/ext/CollectionExt.kt @@ -18,25 +18,20 @@ inline fun MutableSet(size: Int, init: (index: Int) -> T): MutableSet { return set } -inline fun createSet(size: Int, init: (index: Int) -> T): Set = when (size) { +@Suppress("FunctionName") +inline fun Set(size: Int, init: (index: Int) -> T): Set = when (size) { 0 -> emptySet() 1 -> Collections.singleton(init(0)) else -> MutableSet(size, init) } -inline fun createList(size: Int, init: (index: Int) -> T): List = when (size) { - 0 -> emptyList() - 1 -> Collections.singletonList(init(0)) - else -> MutableList(size, init) -} - fun List.asArrayList(): ArrayList = if (this is ArrayList<*>) { this as ArrayList } else { ArrayList(this) } -fun Map.findKey(value: V): K? { +fun Map.findKeyByValue(value: V): K? { for ((k, v) in entries) { if (v == value) { return k diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/ext/LocaleExt.kt b/app/src/main/java/org/koitharu/kotatsu/utils/ext/LocaleExt.kt deleted file mode 100644 index ac878b538..000000000 --- a/app/src/main/java/org/koitharu/kotatsu/utils/ext/LocaleExt.kt +++ /dev/null @@ -1,34 +0,0 @@ -package org.koitharu.kotatsu.utils.ext - -import androidx.core.os.LocaleListCompat -import java.util.* - -fun LocaleListCompat.getOrThrow(index: Int) = get(index) ?: throw kotlin.NoSuchElementException() - -fun LocaleListCompat.toList(): List = createList(size()) { i -> getOrThrow(i) } - -operator fun LocaleListCompat.iterator() = object : Iterator { - private var index = 0 - override fun hasNext(): Boolean = index < size() - override fun next(): Locale = getOrThrow(index++) -} - -inline fun > LocaleListCompat.mapTo( - destination: C, - block: (Locale) -> R, -): C { - val len = size() - for (i in 0 until len) { - val item = get(i) ?: continue - destination.add(block(item)) - } - return destination -} - -inline fun LocaleListCompat.map(block: (Locale) -> T): List { - return mapTo(ArrayList(size()), block) -} - -inline fun LocaleListCompat.mapToSet(block: (Locale) -> T): Set { - return mapTo(LinkedHashSet(size()), block) -} \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/ext/LocaleListExt.kt b/app/src/main/java/org/koitharu/kotatsu/utils/ext/LocaleListExt.kt new file mode 100644 index 000000000..b6ae2535c --- /dev/null +++ b/app/src/main/java/org/koitharu/kotatsu/utils/ext/LocaleListExt.kt @@ -0,0 +1,35 @@ +package org.koitharu.kotatsu.utils.ext + +import androidx.core.os.LocaleListCompat +import java.util.* + +operator fun LocaleListCompat.iterator(): ListIterator = LocaleListCompatIterator(this) + +fun LocaleListCompat.toList(): List = List(size()) { i -> getOrThrow(i) } + +inline fun LocaleListCompat.map(block: (Locale) -> T): List { + return List(size()) { i -> block(getOrThrow(i)) } +} + +inline fun LocaleListCompat.mapToSet(block: (Locale) -> T): Set { + return Set(size()) { i -> block(getOrThrow(i)) } +} + +fun LocaleListCompat.getOrThrow(index: Int) = get(index) ?: throw NoSuchElementException() + +private class LocaleListCompatIterator(private val list: LocaleListCompat) : ListIterator { + + private var index = 0 + + override fun hasNext() = index < list.size() + + override fun hasPrevious() = index > 0 + + override fun next() = list.get(index++) ?: throw NoSuchElementException() + + override fun nextIndex() = index + + override fun previous() = list.get(--index) ?: throw NoSuchElementException() + + override fun previousIndex() = index - 1 +} \ No newline at end of file