From 86dfd69b4bd5c8163a6173aa48063e623901b6ee Mon Sep 17 00:00:00 2001 From: Jannik Date: Sat, 17 Apr 2021 20:59:37 +0200 Subject: [PATCH] add subscription info to settings fragment * update androidx.navigation: 2.3.4 -> 2.3.5 --- app/build.gradle | 4 +- .../java/org/mosad/teapod/parser/AoDParser.kt | 22 +++++++++ .../main/fragments/AccountFragment.kt | 17 +++++++ .../drawable/ic_baseline_access_time_24.xml | 6 +++ app/src/main/res/layout/fragment_account.xml | 46 ++++++++++++++++++- app/src/main/res/values-de-rDE/strings.xml | 3 ++ app/src/main/res/values/strings.xml | 3 ++ 7 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/drawable/ic_baseline_access_time_24.xml diff --git a/app/build.gradle b/app/build.gradle index 3a624d1..af99931 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -46,8 +46,8 @@ dependencies { implementation 'androidx.core:core-ktx:1.3.2' implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' - implementation 'androidx.navigation:navigation-fragment-ktx:2.3.4' - implementation 'androidx.navigation:navigation-ui-ktx:2.3.4' + implementation 'androidx.navigation:navigation-fragment-ktx:2.3.5' + implementation 'androidx.navigation:navigation-ui-ktx:2.3.5' implementation 'androidx.security:security-crypto:1.1.0-alpha03' implementation 'androidx.legacy:legacy-support-v4:1.0.0' diff --git a/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt b/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt index faaded4..1963c45 100644 --- a/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt +++ b/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt @@ -40,6 +40,7 @@ object AoDParser { private const val baseUrl = "https://www.anime-on-demand.de" private const val loginPath = "/users/sign_in" private const val libraryPath = "/animes" + private const val subscriptionPath = "/mypools" private const val userAgent = "Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0" @@ -117,6 +118,25 @@ object AoDParser { return media } + /** + * get subscription info from aod website, remove "Anime-Abo" Prefix and trim + */ + fun getSubscriptionInfoAsync(): Deferred { + return GlobalScope.async(Dispatchers.IO) { + // get the subscription page + val res = Jsoup.connect(baseUrl + subscriptionPath) + .cookies(sessionCookies) + .get() + + return@async res.select("a:contains(Anime-Abo)").text() + .removePrefix("Anime-Abo").trim() + } + } + + fun getSubscriptionUrl(): String { + return baseUrl + subscriptionPath + } + fun markAsWatched(mediaId: Int, episodeId: Int) = GlobalScope.launch { val episode = getMediaById(mediaId).getEpisodeById(episodeId) episode.watched = true @@ -261,6 +281,8 @@ object AoDParser { } /** + * TODO rework the media loading process, don't modify media object + * TODO catch SocketTimeoutException from loading to show a waring dialog * load streams for the media path, movies have one episode * @param media is used as call ba reference */ diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AccountFragment.kt b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AccountFragment.kt index 61ca637..84a9044 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AccountFragment.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AccountFragment.kt @@ -1,5 +1,7 @@ package org.mosad.teapod.ui.activity.main.fragments +import android.content.Intent +import android.net.Uri import android.os.Bundle import android.util.Log import android.view.LayoutInflater @@ -8,6 +10,8 @@ import android.view.ViewGroup import androidx.fragment.app.Fragment import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.list.listItemsSingleChoice +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch import org.mosad.teapod.BuildConfig import org.mosad.teapod.ui.activity.main.MainActivity import org.mosad.teapod.R @@ -31,6 +35,15 @@ class AccountFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + // load subscription (async) info before anything else + binding.textAccountSubscription.text = getString(R.string.account_subscription, getString(R.string.loading)) + GlobalScope.launch { + binding.textAccountSubscription.text = getString( + R.string.account_subscription, + AoDParser.getSubscriptionInfoAsync().await() + ) + } + binding.textAccountLogin.text = EncryptedPreferences.login binding.textInfoAboutDesc.text = getString(R.string.info_about_desc, BuildConfig.VERSION_NAME, getString(R.string.build_time)) binding.textThemeSelected.text = when (Preferences.theme) { @@ -49,6 +62,10 @@ class AccountFragment : Fragment() { showLoginDialog(true) } + binding.linearAccountSubscription.setOnClickListener { + startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(AoDParser.getSubscriptionUrl()))) + } + binding.linearTheme.setOnClickListener { showThemeDialog() } diff --git a/app/src/main/res/drawable/ic_baseline_access_time_24.xml b/app/src/main/res/drawable/ic_baseline_access_time_24.xml new file mode 100644 index 0000000..04584e8 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_access_time_24.xml @@ -0,0 +1,6 @@ + + + + diff --git a/app/src/main/res/layout/fragment_account.xml b/app/src/main/res/layout/fragment_account.xml index 20ed76c..ec914a6 100644 --- a/app/src/main/res/layout/fragment_account.xml +++ b/app/src/main/res/layout/fragment_account.xml @@ -79,8 +79,52 @@ android:text="@string/account_login_desc" android:textColor="?textSecondary" /> - + + + + + + + + + + + + + Account Zum bearbeiten tippen + Abo %1$s + Zum verlängern tippen Info Version %1$s (%2$s) Einstellungen @@ -77,6 +79,7 @@ speichern @android:string/cancel + lädt… Anmelden fehlgeschlagen Der Server scheint langsam zu antworten. Bitte versuche es später noch einmal. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fe2da5e..e97bfc8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -44,6 +44,8 @@ Account user@example.com Tap to edit + Subscription %1$s + Tap to extend Info Teapod by @Seil0 Version %1$s (%2$s) @@ -97,6 +99,7 @@ save @android:string/cancel + loading… Login failed Looks like the server is taking to long to respond. Please try again later.