From c07a81673431264aa6936746e04e11b532790ccd Mon Sep 17 00:00:00 2001 From: dkoukoul Date: Thu, 3 Sep 2020 16:19:55 +0300 Subject: [PATCH] changes on handling user sign in/up --- .../co/anode/anodium/AccountMainActivity.kt | 6 +++ .../anode/anodium/AccountNicknameActivity.kt | 11 ++++ .../main/java/co/anode/anodium/AnodeClient.kt | 5 +- .../java/co/anode/anodium/MainActivity.kt | 52 ++++++++++++++++--- .../java/co/anode/anodium/SignInActivity.kt | 9 ++++ 5 files changed, 72 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/co/anode/anodium/AccountMainActivity.kt b/app/src/main/java/co/anode/anodium/AccountMainActivity.kt index 22e81853..92db567f 100644 --- a/app/src/main/java/co/anode/anodium/AccountMainActivity.kt +++ b/app/src/main/java/co/anode/anodium/AccountMainActivity.kt @@ -142,6 +142,12 @@ class AccountMainActivity : AppCompatActivity() { val msg = jsonObj.getString("message") Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() } else if (jsonObj.has("accountConfirmationStatusUrl")){ //initial email response + val prefs = getSharedPreferences("co.anode.anodium", Context.MODE_PRIVATE) + with (prefs.edit()) { + putBoolean("SignedIn",true) + putBoolean("Registered",true) + commit() + } val accountConfirmation = jsonObj.getString("accountConfirmationStatusUrl") val verificationActivity = Intent(applicationContext, VerificationActivity::class.java) verificationActivity.putExtra("accountConfirmationStatusUrl", accountConfirmation) diff --git a/app/src/main/java/co/anode/anodium/AccountNicknameActivity.kt b/app/src/main/java/co/anode/anodium/AccountNicknameActivity.kt index f9abf6e4..515751c7 100644 --- a/app/src/main/java/co/anode/anodium/AccountNicknameActivity.kt +++ b/app/src/main/java/co/anode/anodium/AccountNicknameActivity.kt @@ -67,6 +67,15 @@ class AccountNicknameActivity : AppCompatActivity() { } } + override fun onBackPressed() { + val prefs = getSharedPreferences("co.anode.anodium", Context.MODE_PRIVATE) + with (prefs.edit()) { + putBoolean("NicknameActivity_BackPressed",true) + commit() + } + finish() + } + abstract class TextViewLinkHandler : LinkMovementMethod() { override fun onTouchEvent(widget: TextView, buffer: Spannable, event: MotionEvent): Boolean { if (event.action != MotionEvent.ACTION_UP) return super.onTouchEvent(widget, buffer, event) @@ -151,6 +160,8 @@ class AccountNicknameActivity : AppCompatActivity() { val prefs = getSharedPreferences("co.anode.anodium", Context.MODE_PRIVATE) with (prefs.edit()) { putString("username",username) + putBoolean("SignedIn",true) + putBoolean("Registered",false) putString("passwordRecoveryToken",passwordRecoveryToken) commit() } diff --git a/app/src/main/java/co/anode/anodium/AnodeClient.kt b/app/src/main/java/co/anode/anodium/AnodeClient.kt index 8285eb10..5bf7018e 100644 --- a/app/src/main/java/co/anode/anodium/AnodeClient.kt +++ b/app/src/main/java/co/anode/anodium/AnodeClient.kt @@ -636,7 +636,7 @@ object AnodeClient { override fun onPostExecute(result: String?) { super.onPostExecute(result) Log.i(LOGTAG,"Received from $API_LOGOUT_URL: $result") - if ((!result.isNullOrBlank()) && (!result.contains("500"))) { + if ((!result.isNullOrBlank()) && ((!result.contains("500")) && (!result.contains("404")))) { val jsonObj = JSONObject(result) if (jsonObj.has("status")) { if (jsonObj.getString("status") == "success") { @@ -645,10 +645,9 @@ object AnodeClient { val prefs = mycontext.getSharedPreferences("co.anode.anodium", Context.MODE_PRIVATE) with(prefs.edit()) { putBoolean("SignedIn", false) - putString("username", "") + putBoolean("Registered", false) commit() } - (mainActivity as MainActivity).setUsernameTopBar() } } } else { diff --git a/app/src/main/java/co/anode/anodium/MainActivity.kt b/app/src/main/java/co/anode/anodium/MainActivity.kt index 06b3996e..052551f3 100644 --- a/app/src/main/java/co/anode/anodium/MainActivity.kt +++ b/app/src/main/java/co/anode/anodium/MainActivity.kt @@ -146,7 +146,6 @@ class MainActivity : AppCompatActivity() { } mHandlerTask.run() */ - Thread(Runnable { Log.i(LOGTAG, "MainActivity.UploadErrorsThread startup") while (true) { @@ -206,16 +205,17 @@ class MainActivity : AppCompatActivity() { //Remove sign in and sign up from menu if (mainMenu != null) { mainMenu!!.findItem(R.id.action_signin).setVisible(false) - mainMenu!!.findItem(R.id.action_account_settings).setVisible(false) + //mainMenu!!.findItem(R.id.action_account_settings).setVisible(false) mainMenu!!.findItem(R.id.action_logout).setVisible(true) } + //Set username on title //this.title = "Anodium - $username" } else { topUsername.text = "" //Add sign in and sing up to menu if (mainMenu != null) { mainMenu!!.findItem(R.id.action_signin).setVisible(true) - mainMenu!!.findItem(R.id.action_account_settings).setVisible(true) + //mainMenu!!.findItem(R.id.action_account_settings).setVisible(true) mainMenu!!.findItem(R.id.action_logout).setVisible(false) } } @@ -223,8 +223,26 @@ class MainActivity : AppCompatActivity() { override fun onResume() { super.onResume() - + val prefs = getSharedPreferences("co.anode.anodium", Context.MODE_PRIVATE) + val signedin = prefs.getBoolean("SignedIn", false) + val nickname_backpressed = prefs.getBoolean("NicknameActivity_BackPressed", false) + val signin_backpressed = prefs.getBoolean("SignInActivity_BackPressed", false) + //Exit app if user is not signed in + if (!signedin and (nickname_backpressed or signin_backpressed)) { + with (prefs.edit()) { + putBoolean("NicknameActivity_BackPressed",false) + putBoolean("SignInActivity_BackPressed",false) + commit() + } + //Close app + finishAffinity() + System.exit(0) + } setUsernameTopBar() + //Show/Hide Registration on menu + if (mainMenu != null) { + mainMenu!!.findItem(R.id.action_account_settings).setVisible(!prefs.getBoolean("Registered",false)) + } } override fun onCreateOptionsMenu(menu: Menu): Boolean { // Inflate the menu; this adds items to the action bar if it is present. @@ -239,9 +257,15 @@ class MainActivity : AppCompatActivity() { // as you specify a parent activity in AndroidManifest.xml. val id = item.itemId if (id == R.id.action_account_settings) { - Log.i(LOGTAG, "Start nickname activity") - val accountNicknameActivity = Intent(applicationContext, AccountNicknameActivity::class.java) - startActivity(accountNicknameActivity) + Log.i(LOGTAG, "Start registration") + val prefs = getSharedPreferences("co.anode.anodium", Context.MODE_PRIVATE) + if (prefs.getString("username","").isNullOrEmpty()) { + val accountNicknameActivity = Intent(applicationContext, AccountNicknameActivity::class.java) + startActivity(accountNicknameActivity) + } else { + val accountMainActivity = Intent(applicationContext, AccountMainActivity::class.java) + startActivityForResult(accountMainActivity, 0) + } return true } else if (id == R.id.action_signin) { Log.i(LOGTAG, "Start sign in activity") @@ -269,6 +293,9 @@ class MainActivity : AppCompatActivity() { } else if (id == R.id.action_logout) { Log.i(LOGTAG, "Log out") AnodeClient.LogoutUser().execute() + //On Log out start sign in activity + val signinActivity = Intent(AnodeClient.mycontext, SignInActivity::class.java) + startActivity(signinActivity) return true } else { super.onOptionsItemSelected(item) @@ -280,10 +307,11 @@ class MainActivity : AppCompatActivity() { super.onActivityResult(requestCode, resultCode, data) if (resultCode == Activity.RESULT_OK) { //Initialize CJDNS socket - CjdnsSocket.init(anodeUtil!!.CJDNS_PATH + "/" + anodeUtil!!.CJDROUTE_SOCK) + CjdnsSocket.init(anodeUtil!!.CJDNS_PATH + "/" + anodeUtil!!.CJDROUTE_SOCK) } //On first run show nickname activity val prefs = getSharedPreferences("co.anode.anodium", Context.MODE_PRIVATE) + /* if (prefs.getBoolean("FirstRun", true)) { Log.i(LOGTAG, "First run: Start nickname activity") with(prefs.edit()) { @@ -292,6 +320,14 @@ class MainActivity : AppCompatActivity() { } val accountNicknameActivity = Intent(applicationContext, AccountNicknameActivity::class.java) startActivity(accountNicknameActivity) + }*/ + //If there is no username stored + if (prefs.getString("username","").isNullOrEmpty()) { + val accountNicknameActivity = Intent(applicationContext, AccountNicknameActivity::class.java) + startActivity(accountNicknameActivity) + } else if (!prefs.getBoolean("SignedIn", false)) { + val signinActivity = Intent(applicationContext, SignInActivity::class.java) + startActivity(signinActivity) } } diff --git a/app/src/main/java/co/anode/anodium/SignInActivity.kt b/app/src/main/java/co/anode/anodium/SignInActivity.kt index 61899043..6aebe324 100644 --- a/app/src/main/java/co/anode/anodium/SignInActivity.kt +++ b/app/src/main/java/co/anode/anodium/SignInActivity.kt @@ -53,6 +53,15 @@ class SignInActivity : AppCompatActivity() { } } + override fun onBackPressed() { + val prefs = getSharedPreferences("co.anode.anodium", Context.MODE_PRIVATE) + with (prefs.edit()) { + putBoolean("SignInActivity_BackPressed",true) + commit() + } + finish() + } + abstract class TextViewLinkHandler : LinkMovementMethod() { override fun onTouchEvent(widget: TextView, buffer: Spannable, event: MotionEvent): Boolean { if (event.action != MotionEvent.ACTION_UP) return super.onTouchEvent(widget, buffer, event)