diff --git a/app/src/main/java/eu/kanade/data/chapter/CleanupChapterName.kt b/app/src/main/java/eu/kanade/data/chapter/CleanupChapterName.kt new file mode 100644 index 0000000000..12ce6b298e --- /dev/null +++ b/app/src/main/java/eu/kanade/data/chapter/CleanupChapterName.kt @@ -0,0 +1,47 @@ +package eu.kanade.data.chapter + +object CleanupChapterName { + + fun await(chapterName: String, mangaTitle: String): String { + return chapterName + .trim() + .removePrefix(mangaTitle) + .trim(*CHAPTER_TRIM_CHARS) + } + + private val CHAPTER_TRIM_CHARS = arrayOf( + // Whitespace + ' ', + '\u0009', + '\u000A', + '\u000B', + '\u000C', + '\u000D', + '\u0020', + '\u0085', + '\u00A0', + '\u1680', + '\u2000', + '\u2001', + '\u2002', + '\u2003', + '\u2004', + '\u2005', + '\u2006', + '\u2007', + '\u2008', + '\u2009', + '\u200A', + '\u2028', + '\u2029', + '\u202F', + '\u205F', + '\u3000', + + // Separators + '-', + '_', + ',', + ':', + ).toCharArray() +} diff --git a/app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt b/app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt index 9bd7ccdc16..c61585faaf 100644 --- a/app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt +++ b/app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt @@ -1,5 +1,6 @@ package eu.kanade.domain.chapter.interactor +import eu.kanade.data.chapter.CleanupChapterName import eu.kanade.data.chapter.NoChaptersException import eu.kanade.domain.chapter.model.Chapter import eu.kanade.domain.chapter.model.toChapterUpdate @@ -50,6 +51,7 @@ class SyncChaptersWithSource( .mapIndexed { i, sChapter -> Chapter.create() .copyFromSChapter(sChapter) + .copy(name = CleanupChapterName.await(sChapter.name, manga.title)) .copy(mangaId = manga.id, sourceOrder = i.toLong()) }