diff --git a/app/build.gradle b/app/build.gradle index 561e619112..811cab900e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ android { minSdk 21 targetSdk 34 versionCode((System.currentTimeMillis() / 60000).toInteger()) - versionName "3.0.0" - versionCode 300000000 + versionName "3.1.0" + versionCode 300100000 signingConfig signingConfigs.debug } @@ -51,7 +51,7 @@ android { } debug { applicationIdSuffix ".beta" - versionNameSuffix "-beta04" + versionNameSuffix "-beta01" manifestPlaceholders.icon_placeholder = "@mipmap/ic_launcher_beta" manifestPlaceholders.icon_placeholder_round = "@mipmap/ic_launcher_beta_round" debuggable false diff --git a/app/src/main/java/ani/dantotsu/Functions.kt b/app/src/main/java/ani/dantotsu/Functions.kt index e7f8304eca..04b83f523d 100644 --- a/app/src/main/java/ani/dantotsu/Functions.kt +++ b/app/src/main/java/ani/dantotsu/Functions.kt @@ -1409,6 +1409,49 @@ fun ImageView.openImage(title: String, image: String) { } } +/** + * Attempts to open the link in the app, otherwise copies it to the clipboard + * @param link the link to open + */ +fun openOrCopyAnilistLink(link: String) { + if (link.startsWith("https://anilist.co/anime/") || link.startsWith("https://anilist.co/manga/")) { + val mangaAnime = link.substringAfter("https://anilist.co/").substringBefore("/") + val id = + link.substringAfter("https://anilist.co/$mangaAnime/").substringBefore("/") + .toIntOrNull() + if (id != null && currContext() != null) { + ContextCompat.startActivity( + currContext()!!, + Intent(currContext()!!, MediaDetailsActivity::class.java) + .putExtra("mediaId", id), + null + ) + } else { + copyToClipboard(link, true) + } + } else if (link.startsWith("https://anilist.co/user/")) { + val username = link.substringAfter("https://anilist.co/user/").substringBefore("/") + val id = username.toIntOrNull() + if (currContext() != null) { + val intent = Intent(currContext()!!, ProfileActivity::class.java) + if (id != null) { + intent.putExtra("userId", id) + } else { + intent.putExtra("username", username) + } + ContextCompat.startActivity( + currContext()!!, + intent, + null + ) + } else { + copyToClipboard(link, true) + } + } else { + copyToClipboard(link, true) + } +} + /** * Builds the markwon instance with all the plugins * @return the markwon instance @@ -1424,36 +1467,7 @@ fun buildMarkwon( .usePlugin(object : AbstractMarkwonPlugin() { override fun configureConfiguration(builder: MarkwonConfiguration.Builder) { builder.linkResolver { _, link -> - if (link.startsWith("https://anilist.co/anime/") || link.startsWith("https://anilist.co/manga/")) { - val mangaAnime = link.substringAfter("https://anilist.co/").substringBefore("/") - val id = - link.substringAfter("https://anilist.co/$mangaAnime/").substringBefore("/") - .toIntOrNull() - if (id != null && currContext() != null) { - ContextCompat.startActivity( - currContext()!!, - Intent(currContext()!!, MediaDetailsActivity::class.java) - .putExtra("mediaId", id), - null - ) - } else { - copyToClipboard(link, true) - } - } else if (link.startsWith("https://anilist.co/user/")) { - val username = link.substringAfter("https://anilist.co/user/").substringBefore("/") - if (currContext() != null) { - ContextCompat.startActivity( - currContext()!!, - Intent(currContext()!!, ProfileActivity::class.java) - .putExtra("username", username), - null - ) - } else { - copyToClipboard(link, true) - } - } else { - copyToClipboard(link, true) - } + openOrCopyAnilistLink(link) } } }) diff --git a/app/src/main/java/ani/dantotsu/addons/download/DownloadAddonApiV2.kt b/app/src/main/java/ani/dantotsu/addons/download/DownloadAddonApiV2.kt index 7637416bb5..ee82acba0c 100644 --- a/app/src/main/java/ani/dantotsu/addons/download/DownloadAddonApiV2.kt +++ b/app/src/main/java/ani/dantotsu/addons/download/DownloadAddonApiV2.kt @@ -35,6 +35,6 @@ interface DownloadAddonApiV2 { fun getStackTrace(sessionId: Long): String? fun hadError(sessionId: Long): Boolean - + fun getFileExtension(): Pair = Pair("mkv", "video/x-matroska") } diff --git a/app/src/main/java/ani/dantotsu/profile/ProfileFragment.kt b/app/src/main/java/ani/dantotsu/profile/ProfileFragment.kt index 1d4b8f7242..678d7f77a8 100644 --- a/app/src/main/java/ani/dantotsu/profile/ProfileFragment.kt +++ b/app/src/main/java/ani/dantotsu/profile/ProfileFragment.kt @@ -26,6 +26,7 @@ import ani.dantotsu.media.Character import ani.dantotsu.media.CharacterAdapter import ani.dantotsu.media.Media import ani.dantotsu.media.MediaAdaptor +import ani.dantotsu.openOrCopyAnilistLink import ani.dantotsu.setBaseline import ani.dantotsu.setSlideIn import ani.dantotsu.setSlideUp @@ -97,6 +98,7 @@ class ProfileFragment : Fragment() { view: WebView?, request: WebResourceRequest? ): Boolean { + openOrCopyAnilistLink(request?.url.toString()) return true } } diff --git a/stable.md b/stable.md index d7fc24f9ca..671ed23531 100644 --- a/stable.md +++ b/stable.md @@ -1,29 +1,51 @@ -# 2.2.0 - -- **Important:** - - All settings will be reset due to the new settings system. Sorry for the inconvenience! +# 3.1.0 - **New Features:** - - Import/Export settings - - New source organization system in extension settings - - Filter sources by language - - Defaulting to the external casting system (internal cast can be enabled in settings) - - sub/dub toggle for some sources (requires source settings page to be opened at least once) - - SoftSub downloads (when available) + - Addons + - Torrent support addon + - Anime downloading addon (mkv files pog) + - Available in app settings + - Anilist reviews in app + - Media subscriptions added to notification tab + - Notification filtering + - Ability to post activitys + - Ability to reply to activities + - Extension tester + - Media subscription Viewer + - Instagram-style stories + - More audio options for some extensions + - Ability to hide items on the home screen + - Ability to set a downloads directory + - 2 functioning widgets + - App lock ( ͡° ͜ʖ ͡°) + - More manga and anime feeds on the home page + - Settings page redesign + - New app crash notifier + - Voice actors + - Additional repo support - Various UI uplifts - - Many small features (see beta changelogs) - - New easter egg :3 - **Bugfixes:** - - Many source fixes - - Better information on Anilist rate limiting - - User will get a notification when rate limited - - Rate limiting less likely to occur (especially on app startup) + - Scanlator/language not saving after leaving app + - notification red dot not hiding on home pages + - comment/activity scrolling not working on some parts of the screen + - comment notifications falling to the bottom of the list + - Fixed some sources without audio + - Initial app loading time reduced + - activity text more visible + - novel extensions not installing + - Many sources not working + - Subscription notifications not using the correct source + - Notification red dot showing with no new notifications - Various bug/crash fixes - General theme tweaks - - Popups will now follow OLED mode + - Fixed some network-related crashes + - Subscription notifications not working for some people - Fix for file permissions on older Android versions - - Many small bug fixes (see beta changelogs) + - Search list view not working + - Media page opening twice on notification click + + - A Special Thanks to all those who contributed :heart: - **Like what you see?** - Consider supporting me on [Github](https://github.com/sponsors/rebelonion) or [Buy Me a Coffee](https://www.buymeacoffee.com/rebelonion)!