From 9ec4c24e216cb8fd334ebbab9e0cb5c1835168fa Mon Sep 17 00:00:00 2001 From: Jannik Date: Mon, 12 Oct 2020 23:26:32 +0200 Subject: [PATCH] verify login data on start, added german translation --- .../java/org/mosad/teapod/MainActivity.kt | 26 +++++++++++------ .../java/org/mosad/teapod/parser/AoDParser.kt | 21 ++++++++------ .../teapod/ui/account/AccountFragment.kt | 23 +++++++++++---- .../mosad/teapod/ui/components/LoginDialog.kt | 4 +-- app/src/main/res/values-de-rDE/strings.xml | 28 +++++++++++++++++++ app/src/main/res/values/strings.xml | 15 +++++----- 6 files changed, 86 insertions(+), 31 deletions(-) create mode 100644 app/src/main/res/values-de-rDE/strings.xml diff --git a/app/src/main/java/org/mosad/teapod/MainActivity.kt b/app/src/main/java/org/mosad/teapod/MainActivity.kt index 65ab332..16fdf55 100644 --- a/app/src/main/java/org/mosad/teapod/MainActivity.kt +++ b/app/src/main/java/org/mosad/teapod/MainActivity.kt @@ -76,15 +76,11 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS private fun load() { EncryptedPreferences.readCredentials(this) + // make sure credentials are set and valid if (EncryptedPreferences.password.isEmpty()) { - Log.i(javaClass.name, "please login!") - - LoginDialog(this).positiveButton { - EncryptedPreferences.saveCredentials(login, password, context) - }.negativeButton { - Log.i(javaClass.name, "Login canceled, exiting.") - finish() - }.show() + showLoginDialog(true) + } else if (!AoDParser().login()) { + showLoginDialog(false) } } @@ -107,4 +103,18 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS } startActivity(intent) } + + private fun showLoginDialog(firstTry: Boolean) { + LoginDialog(this, firstTry).positiveButton { + EncryptedPreferences.saveCredentials(login, password, context) + + if (!AoDParser().login()) { + showLoginDialog(false) + Log.w(javaClass.name, "Login failed, please try again.") + } + }.negativeButton { + Log.i(javaClass.name, "Login canceled, exiting.") + finish() + }.show() + } } \ No newline at end of file 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 69868f8..55b6655 100644 --- a/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt +++ b/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt @@ -25,7 +25,7 @@ class AoDParser { val mediaList = arrayListOf() } - private fun login() = runBlocking { + fun login(): Boolean = runBlocking { val userAgent = "Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0" @@ -57,11 +57,12 @@ class AoDParser { .execute() //println(resLogin.body()) - - loginSuccess = resLogin.body().contains("Hallo, du bist jetzt angemeldet.") - println("Status: ${resLogin.statusCode()} (${resLogin.statusMessage()}), login successful: $loginSuccess") - sessionCookies = resLogin.cookies() + loginSuccess = resLogin.body().contains("Hallo, du bist jetzt angemeldet.") + + Log.i(javaClass.name, "Status: ${resLogin.statusCode()} (${resLogin.statusMessage()}), login successful: $loginSuccess") + + loginSuccess } } @@ -96,7 +97,7 @@ class AoDParser { mediaList.add(media) } - println("got ${mediaList.size} anime") + Log.i(javaClass.name, "Total library size is: ${mediaList.size}") return@withContext mediaList } @@ -109,7 +110,7 @@ class AoDParser { if (sessionCookies.isEmpty()) login() if (!loginSuccess) { - println("please log in") // TODO + Log.w(javaClass.name, "Login, was not successful.") return@runBlocking listOf() } @@ -127,7 +128,11 @@ class AoDParser { //println("first entry: ${playlists.first()}") //println("csrf token is: $csrfToken") - return@withContext loadStreamInfo(playlists.first(), csrfToken, media.type) + return@withContext if (playlists.size > 0) { + loadStreamInfo(playlists.first(), csrfToken, media.type) + } else { + listOf() + } } } diff --git a/app/src/main/java/org/mosad/teapod/ui/account/AccountFragment.kt b/app/src/main/java/org/mosad/teapod/ui/account/AccountFragment.kt index 0f0713e..6891512 100644 --- a/app/src/main/java/org/mosad/teapod/ui/account/AccountFragment.kt +++ b/app/src/main/java/org/mosad/teapod/ui/account/AccountFragment.kt @@ -1,6 +1,7 @@ package org.mosad.teapod.ui.account import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,6 +10,7 @@ import com.afollestad.materialdialogs.MaterialDialog import kotlinx.android.synthetic.main.fragment_account.* import org.mosad.teapod.BuildConfig import org.mosad.teapod.R +import org.mosad.teapod.parser.AoDParser import org.mosad.teapod.preferences.EncryptedPreferences import org.mosad.teapod.ui.components.LoginDialog @@ -29,12 +31,7 @@ class AccountFragment : Fragment() { private fun initActions() { linear_account_login.setOnClickListener { - LoginDialog(requireContext()).positiveButton { - EncryptedPreferences.saveCredentials(login, password, context) - }.show { - login = EncryptedPreferences.login - password = "" - } + showLoginDialog(true) } linear_about.setOnClickListener { @@ -44,4 +41,18 @@ class AccountFragment : Fragment() { .show() } } + + private fun showLoginDialog(firstTry: Boolean) { + LoginDialog(requireContext(), firstTry).positiveButton { + EncryptedPreferences.saveCredentials(login, password, context) + + if (!AoDParser().login()) { + showLoginDialog(false) + Log.w(javaClass.name, "Login failed, please try again.") + } + }.show { + login = EncryptedPreferences.login + password = "" + } + } } \ No newline at end of file diff --git a/app/src/main/java/org/mosad/teapod/ui/components/LoginDialog.kt b/app/src/main/java/org/mosad/teapod/ui/components/LoginDialog.kt index b521c21..d681b0e 100644 --- a/app/src/main/java/org/mosad/teapod/ui/components/LoginDialog.kt +++ b/app/src/main/java/org/mosad/teapod/ui/components/LoginDialog.kt @@ -31,7 +31,7 @@ import com.afollestad.materialdialogs.customview.customView import com.afollestad.materialdialogs.customview.getCustomView import org.mosad.teapod.R -class LoginDialog(val context: Context) { +class LoginDialog(val context: Context, firstTry: Boolean) { private val dialog = MaterialDialog(context, BottomSheet()) @@ -43,7 +43,7 @@ class LoginDialog(val context: Context) { init { dialog.title(R.string.login) - .message(R.string.login_desc) + .message(if (firstTry) R.string.login_desc else R.string.login_failed_desc) .customView(R.layout.dialog_login) .positiveButton(R.string.save) .negativeButton(R.string.cancel) diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml new file mode 100644 index 0000000..ad6ce21 --- /dev/null +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -0,0 +1,28 @@ + + + Startseite + Übersicht + Suche + Account + + + Suche nach Filmen und Serien + + + Abspielen + + + Account + Zum bearbeiten tippen + Info + + + speichern + \@android:string/cancel + + + Login + Um Teapod zu benutzen musst du eingeloggt sein. Die Login-Daten weden verschüsselt aud deinem Gerät gespeichert. + Login nicht erfolgreich. Bitte versuche es erneut. + Passwort + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 54f68aa..19a7e1b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - Teapod + Teapod Home Library Search @@ -10,17 +10,17 @@ Play - A Silent Voice - Shouya Ishida ist ein sehr aktives Kind. Mit seinen Freunden … + A Silent Voice + Shouya Ishida starts bullying the new girl in class … Account - user@example.com + user@example.com Tap to edit Info - Teapod by @Seil0 + Teapod by @Seil0 Version %1$s (%2$s) - This software is published under the terms and conditions of GPL 3. For further information visit git.mosad.xyz/Seil0 \n\n© 2020 seil0@mosad.xyz + This software is published under the terms and conditions of GPL 3. For further information visit: \ngit.mosad.xyz/Seil0/teapod \n\n© 2020 seil0@mosad.xyz save @@ -28,7 +28,8 @@ Login - You need to login before you can use Teapod. Your Login-Data will be stored encrypted on your device. + You need to login before you can use Teapod. The Login-Data will be stored encrypted on your device. + Could not login. Please try again. Password