mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Fix chapter recognition regex and detail number (#1213)
* Update basic filter for sources that include space between numbers Wasnts matching on vol. 1 ch. 10 previously so mangadex last chapter was showing volume number. * Don't show last chapter number when there are 0 chapters or chapters with no numbers. This prevents one shots from showing with -1 as last chapter and instead just leaves it blank * added else to be Unknown instead of blank * removed empty line added test case * switched to null safe ?. * Revert "switched to null safe ?." This reverts commit 97a9300d1bedc8e01efb439c180eced8eaa1da5b. undo * switched to null safe ?.
This commit is contained in:
		
				
					committed by
					
						
						Bram van de Kerkhof
					
				
			
			
				
	
			
			
			
						parent
						
							1292c0ecea
						
					
				
				
					commit
					7f90ad7847
				
			@@ -7,7 +7,6 @@ import android.content.ClipboardManager
 | 
			
		||||
import android.content.Context
 | 
			
		||||
import android.content.Intent
 | 
			
		||||
import android.graphics.Bitmap
 | 
			
		||||
import android.graphics.Color
 | 
			
		||||
import android.graphics.drawable.Drawable
 | 
			
		||||
import android.net.Uri
 | 
			
		||||
import android.os.Build
 | 
			
		||||
@@ -91,7 +90,7 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
 | 
			
		||||
        // Set SwipeRefresh to refresh manga data.
 | 
			
		||||
        swipe_refresh.refreshes().subscribeUntilDestroy { fetchMangaFromSource() }
 | 
			
		||||
 | 
			
		||||
        manga_full_title.longClicks().subscribeUntilDestroy{
 | 
			
		||||
        manga_full_title.longClicks().subscribeUntilDestroy {
 | 
			
		||||
            copyToClipboard(view.context.getString(R.string.title), manga_full_title.text.toString())
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -191,14 +190,14 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // If manga source is known update source TextView.
 | 
			
		||||
        manga_source.text = if(source == null) {
 | 
			
		||||
        manga_source.text = if (source == null) {
 | 
			
		||||
            view.context.getString(R.string.unknown)
 | 
			
		||||
        } else {
 | 
			
		||||
            source.toString()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Update genres list
 | 
			
		||||
        if(manga.genre.isNullOrBlank().not()){
 | 
			
		||||
        if (manga.genre.isNullOrBlank().not()) {
 | 
			
		||||
            manga_genres_tags.setTags(manga.genre?.split(", "))
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -249,10 +248,14 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
 | 
			
		||||
     * @param count number of chapters.
 | 
			
		||||
     */
 | 
			
		||||
    fun setChapterCount(count: Float) {
 | 
			
		||||
        manga_chapters?.text = DecimalFormat("#.#").format(count)
 | 
			
		||||
        if (count > 0f) {
 | 
			
		||||
            manga_chapters?.text = DecimalFormat("#.#").format(count)
 | 
			
		||||
        } else {
 | 
			
		||||
            manga_chapters?.text = resources?.getString(R.string.unknown)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun setLastUpdateDate(date: Date){
 | 
			
		||||
    fun setLastUpdateDate(date: Date) {
 | 
			
		||||
        manga_last_update?.text = DateFormat.getDateInstance(DateFormat.SHORT).format(date)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -381,7 +384,7 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            activity?.toast(activity?.getString(R.string.manga_added_library))
 | 
			
		||||
        }else{
 | 
			
		||||
        } else {
 | 
			
		||||
            activity?.toast(activity?.getString(R.string.manga_removed_library))
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -465,8 +468,8 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
 | 
			
		||||
     * @param label Label to show to the user describing the content
 | 
			
		||||
     * @param content the actual text to copy to the board
 | 
			
		||||
     */
 | 
			
		||||
    private fun copyToClipboard(label: String, content: String){
 | 
			
		||||
        if(content.isBlank()) return
 | 
			
		||||
    private fun copyToClipboard(label: String, content: String) {
 | 
			
		||||
        if (content.isBlank()) return
 | 
			
		||||
 | 
			
		||||
        val activity = activity ?: return
 | 
			
		||||
        val view = view ?: return
 | 
			
		||||
@@ -474,7 +477,7 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
 | 
			
		||||
        val clipboard = activity.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
 | 
			
		||||
        clipboard.primaryClip = ClipData.newPlainText(label, content)
 | 
			
		||||
 | 
			
		||||
        activity.toast( view.context.getString(R.string.copied_to_clipboard, content.truncateCenter(20)),
 | 
			
		||||
        activity.toast(view.context.getString(R.string.copied_to_clipboard, content.truncateCenter(20)),
 | 
			
		||||
                Toast.LENGTH_SHORT)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -483,7 +486,7 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
 | 
			
		||||
     *
 | 
			
		||||
     * @param query the search query to pass to the search controller
 | 
			
		||||
     */
 | 
			
		||||
    fun performGlobalSearch(query: String){
 | 
			
		||||
    fun performGlobalSearch(query: String) {
 | 
			
		||||
        val router = parentController?.router ?: return
 | 
			
		||||
        router.pushController(CatalogueSearchController(query).withFadeTransaction())
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ object ChapterRecognition {
 | 
			
		||||
     * All cases with Ch.xx
 | 
			
		||||
     * Mokushiroku Alice Vol.1 Ch. 4: Misrepresentation -R> 4
 | 
			
		||||
     */
 | 
			
		||||
    private val basic = Regex("""(?<=ch\.)([0-9]+)(\.[0-9]+)?(\.?[a-z]+)?""")
 | 
			
		||||
    private val basic = Regex("""(?<=ch\.) *([0-9]+)(\.[0-9]+)?(\.?[a-z]+)?""")
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Regex used when only one number occurrence
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user