mirror of
https://github.com/mihonapp/mihon.git
synced 2025-02-12 10:08:55 +01:00
Compare commits
2 Commits
a024218410
...
cb06898430
Author | SHA1 | Date | |
---|---|---|---|
|
cb06898430 | ||
|
39407407f2 |
@ -163,7 +163,7 @@ class SyncChaptersWithSource(
|
|||||||
var updatedToAdd = newChapters.map { toAddItem ->
|
var updatedToAdd = newChapters.map { toAddItem ->
|
||||||
var chapter = toAddItem.copy(dateFetch = nowMillis + itemCount--)
|
var chapter = toAddItem.copy(dateFetch = nowMillis + itemCount--)
|
||||||
|
|
||||||
if (chapter.isRecognizedNumber.not() || chapter.chapterNumber !in deletedChapterNumbers) return@map chapter
|
if (!chapter.isRecognizedNumber || chapter.chapterNumber !in deletedChapterNumbers) return@map chapter
|
||||||
|
|
||||||
chapter = chapter.copy(
|
chapter = chapter.copy(
|
||||||
read = chapter.chapterNumber in deletedReadChapterNumbers,
|
read = chapter.chapterNumber in deletedReadChapterNumbers,
|
||||||
|
@ -23,7 +23,7 @@ class GetExtensionSources(
|
|||||||
ExtensionSourceItem(
|
ExtensionSourceItem(
|
||||||
source = source,
|
source = source,
|
||||||
enabled = source.isEnabled(),
|
enabled = source.isEnabled(),
|
||||||
labelAsName = isMultiSource && isMultiLangSingleSource.not(),
|
labelAsName = isMultiSource && !isMultiLangSingleSource,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,9 +22,9 @@ class GetExtensionsByType(
|
|||||||
extensionManager.availableExtensionsFlow,
|
extensionManager.availableExtensionsFlow,
|
||||||
) { _activeLanguages, _installed, _untrusted, _available ->
|
) { _activeLanguages, _installed, _untrusted, _available ->
|
||||||
val (updates, installed) = _installed
|
val (updates, installed) = _installed
|
||||||
.filter { (showNsfwSources || it.isNsfw.not()) }
|
.filter { (showNsfwSources || !it.isNsfw) }
|
||||||
.sortedWith(
|
.sortedWith(
|
||||||
compareBy<Extension.Installed> { it.isObsolete.not() }
|
compareBy<Extension.Installed> { !it.isObsolete }
|
||||||
.thenBy(String.CASE_INSENSITIVE_ORDER) { it.name },
|
.thenBy(String.CASE_INSENSITIVE_ORDER) { it.name },
|
||||||
)
|
)
|
||||||
.partition { it.hasUpdate }
|
.partition { it.hasUpdate }
|
||||||
@ -36,7 +36,7 @@ class GetExtensionsByType(
|
|||||||
.filter { extension ->
|
.filter { extension ->
|
||||||
_installed.none { it.pkgName == extension.pkgName } &&
|
_installed.none { it.pkgName == extension.pkgName } &&
|
||||||
_untrusted.none { it.pkgName == extension.pkgName } &&
|
_untrusted.none { it.pkgName == extension.pkgName } &&
|
||||||
(showNsfwSources || extension.isNsfw.not())
|
(showNsfwSources || !extension.isNsfw)
|
||||||
}
|
}
|
||||||
.flatMap { ext ->
|
.flatMap { ext ->
|
||||||
if (ext.sources.isEmpty()) {
|
if (ext.sources.isEmpty()) {
|
||||||
|
@ -34,15 +34,15 @@ class GetSourcesWithFavoriteCount(
|
|||||||
when (sorting) {
|
when (sorting) {
|
||||||
SetMigrateSorting.Mode.ALPHABETICAL -> {
|
SetMigrateSorting.Mode.ALPHABETICAL -> {
|
||||||
when {
|
when {
|
||||||
a.first.isStub && b.first.isStub.not() -> -1
|
a.first.isStub && !b.first.isStub -> -1
|
||||||
b.first.isStub && a.first.isStub.not() -> 1
|
b.first.isStub && !a.first.isStub -> 1
|
||||||
else -> a.first.name.lowercase().compareToWithCollator(b.first.name.lowercase())
|
else -> a.first.name.lowercase().compareToWithCollator(b.first.name.lowercase())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SetMigrateSorting.Mode.TOTAL -> {
|
SetMigrateSorting.Mode.TOTAL -> {
|
||||||
when {
|
when {
|
||||||
a.first.isStub && b.first.isStub.not() -> -1
|
a.first.isStub && !b.first.isStub -> -1
|
||||||
b.first.isStub && a.first.isStub.not() -> 1
|
b.first.isStub && !a.first.isStub -> 1
|
||||||
else -> a.second.compareTo(b.second)
|
else -> a.second.compareTo(b.second)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ fun Track.toDbTrack(): DbTrack = DbTrack.create(trackerId).also {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun DbTrack.toDomainTrack(idRequired: Boolean = true): Track? {
|
fun DbTrack.toDomainTrack(idRequired: Boolean = true): Track? {
|
||||||
val trackId = id ?: if (idRequired.not()) -1 else return null
|
val trackId = id ?: if (!idRequired) -1 else return null
|
||||||
return Track(
|
return Track(
|
||||||
id = trackId,
|
id = trackId,
|
||||||
mangaId = manga_id,
|
mangaId = manga_id,
|
||||||
|
@ -203,7 +203,13 @@ private fun ExtensionContent(
|
|||||||
items(
|
items(
|
||||||
items = items,
|
items = items,
|
||||||
contentType = { "item" },
|
contentType = { "item" },
|
||||||
key = { "extension-${it.hashCode()}" },
|
key = { item ->
|
||||||
|
when (item.extension) {
|
||||||
|
is Extension.Untrusted -> "extension-untrusted-${item.hashCode()}"
|
||||||
|
is Extension.Installed -> "extension-installed-${item.hashCode()}"
|
||||||
|
is Extension.Available -> "extension-available-${item.hashCode()}"
|
||||||
|
}
|
||||||
|
},
|
||||||
) { item ->
|
) { item ->
|
||||||
ExtensionItem(
|
ExtensionItem(
|
||||||
modifier = Modifier.animateItemPlacement(),
|
modifier = Modifier.animateItemPlacement(),
|
||||||
|
@ -315,13 +315,13 @@ class DownloadManager(
|
|||||||
val capitalizationChanged = oldFolder.name.equals(newName, ignoreCase = true)
|
val capitalizationChanged = oldFolder.name.equals(newName, ignoreCase = true)
|
||||||
if (capitalizationChanged) {
|
if (capitalizationChanged) {
|
||||||
val tempName = newName + Downloader.TMP_DIR_SUFFIX
|
val tempName = newName + Downloader.TMP_DIR_SUFFIX
|
||||||
if (oldFolder.renameTo(tempName).not()) {
|
if (!oldFolder.renameTo(tempName)) {
|
||||||
logcat(LogPriority.ERROR) { "Failed to rename source download folder: ${oldFolder.name}" }
|
logcat(LogPriority.ERROR) { "Failed to rename source download folder: ${oldFolder.name}" }
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (oldFolder.renameTo(newName).not()) {
|
if (!oldFolder.renameTo(newName)) {
|
||||||
logcat(LogPriority.ERROR) { "Failed to rename source download folder: ${oldFolder.name}" }
|
logcat(LogPriority.ERROR) { "Failed to rename source download folder: ${oldFolder.name}" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -130,7 +130,7 @@ class DownloadProvider(
|
|||||||
val newChapterName = sanitizeChapterName(chapterName)
|
val newChapterName = sanitizeChapterName(chapterName)
|
||||||
return DiskUtil.buildValidFilename(
|
return DiskUtil.buildValidFilename(
|
||||||
when {
|
when {
|
||||||
chapterScanlator.isNullOrBlank().not() -> "${chapterScanlator}_$newChapterName"
|
!chapterScanlator.isNullOrBlank() -> "${chapterScanlator}_$newChapterName"
|
||||||
else -> newChapterName
|
else -> newChapterName
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
@ -185,7 +185,7 @@ class Anilist(id: Long) : BaseTracker(id, "AniList"), DeletableTracker {
|
|||||||
|
|
||||||
if (track.status != COMPLETED) {
|
if (track.status != COMPLETED) {
|
||||||
val isRereading = track.status == REREADING
|
val isRereading = track.status == REREADING
|
||||||
track.status = if (isRereading.not() && hasReadChapters) READING else track.status
|
track.status = if (!isRereading && hasReadChapters) READING else track.status
|
||||||
}
|
}
|
||||||
|
|
||||||
update(track)
|
update(track)
|
||||||
|
@ -104,7 +104,7 @@ class MyAnimeList(id: Long) : BaseTracker(id, "MyAnimeList"), DeletableTracker {
|
|||||||
|
|
||||||
if (track.status != COMPLETED) {
|
if (track.status != COMPLETED) {
|
||||||
val isRereading = track.status == REREADING
|
val isRereading = track.status == REREADING
|
||||||
track.status = if (isRereading.not() && hasReadChapters) READING else track.status
|
track.status = if (!isRereading && hasReadChapters) READING else track.status
|
||||||
}
|
}
|
||||||
|
|
||||||
update(track)
|
update(track)
|
||||||
|
@ -72,7 +72,7 @@ class Shikimori(id: Long) : BaseTracker(id, "Shikimori"), DeletableTracker {
|
|||||||
|
|
||||||
if (track.status != COMPLETED) {
|
if (track.status != COMPLETED) {
|
||||||
val isRereading = track.status == REREADING
|
val isRereading = track.status == REREADING
|
||||||
track.status = if (isRereading.not() && hasReadChapters) READING else track.status
|
track.status = if (!isRereading && hasReadChapters) READING else track.status
|
||||||
}
|
}
|
||||||
|
|
||||||
update(track)
|
update(track)
|
||||||
|
@ -338,6 +338,10 @@ class ExtensionManager(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onExtensionUntrusted(extension: Extension.Untrusted) {
|
override fun onExtensionUntrusted(extension: Extension.Untrusted) {
|
||||||
|
val installedExtension = _installedExtensionsFlow.value
|
||||||
|
.find { it.pkgName == extension.pkgName }
|
||||||
|
?: return
|
||||||
|
_installedExtensionsFlow.value -= installedExtension
|
||||||
_untrustedExtensionsFlow.value += extension
|
_untrustedExtensionsFlow.value += extension
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,8 +70,7 @@ internal class ExtensionInstallReceiver(private val listener: Listener) :
|
|||||||
launchNow {
|
launchNow {
|
||||||
when (val result = getExtensionFromIntent(context, intent)) {
|
when (val result = getExtensionFromIntent(context, intent)) {
|
||||||
is LoadResult.Success -> listener.onExtensionUpdated(result.extension)
|
is LoadResult.Success -> listener.onExtensionUpdated(result.extension)
|
||||||
// Not needed as a package can't be upgraded if the signature is different
|
is LoadResult.Untrusted -> listener.onExtensionUntrusted(result.extension)
|
||||||
// is LoadResult.Untrusted -> {}
|
|
||||||
else -> {}
|
else -> {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : Viewer {
|
|||||||
pager.addOnPageChangeListener(
|
pager.addOnPageChangeListener(
|
||||||
object : ViewPager.SimpleOnPageChangeListener() {
|
object : ViewPager.SimpleOnPageChangeListener() {
|
||||||
override fun onPageSelected(position: Int) {
|
override fun onPageSelected(position: Int) {
|
||||||
if (activity.isScrollingThroughPages.not()) {
|
if (!activity.isScrollingThroughPages) {
|
||||||
activity.hideMenu()
|
activity.hideMenu()
|
||||||
}
|
}
|
||||||
onPageChange(position)
|
onPageChange(position)
|
||||||
|
@ -89,7 +89,7 @@ internal class RateLimitInterceptor(
|
|||||||
while (requestQueue.size >= permits) { // queue is full, remove expired entries
|
while (requestQueue.size >= permits) { // queue is full, remove expired entries
|
||||||
val periodStart = SystemClock.elapsedRealtime() - rateLimitMillis
|
val periodStart = SystemClock.elapsedRealtime() - rateLimitMillis
|
||||||
var hasRemovedExpired = false
|
var hasRemovedExpired = false
|
||||||
while (requestQueue.isEmpty().not() && requestQueue.first <= periodStart) {
|
while (!requestQueue.isEmpty() && requestQueue.first <= periodStart) {
|
||||||
requestQueue.removeFirst()
|
requestQueue.removeFirst()
|
||||||
hasRemovedExpired = true
|
hasRemovedExpired = true
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ class GetApplicationRelease(
|
|||||||
val now = Instant.now()
|
val now = Instant.now()
|
||||||
|
|
||||||
// Limit checks to once every 3 days at most
|
// Limit checks to once every 3 days at most
|
||||||
if (arguments.forceCheck.not() && now.isBefore(
|
if (!arguments.forceCheck && now.isBefore(
|
||||||
Instant.ofEpochMilli(lastChecked.get()).plus(3, ChronoUnit.DAYS),
|
Instant.ofEpochMilli(lastChecked.get()).plus(3, ChronoUnit.DAYS),
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
|
@ -22,7 +22,7 @@ class StubSource(
|
|||||||
throw SourceNotInstalledException()
|
throw SourceNotInstalledException()
|
||||||
|
|
||||||
override fun toString(): String =
|
override fun toString(): String =
|
||||||
if (isInvalid.not()) "$name (${lang.uppercase()})" else id.toString()
|
if (!isInvalid) "$name (${lang.uppercase()})" else id.toString()
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun from(source: Source): StubSource {
|
fun from(source: Source): StubSource {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user