From a2a600a9dec116618ec115282d764ec0124e92f0 Mon Sep 17 00:00:00 2001 From: Vavassor Date: Mon, 8 May 2017 15:00:33 -0400 Subject: [PATCH] Adds back button to the about page and for the Tusky's Profile button it searches for the account first and saves the ID for subsequent presses. Closes #279 --- .../keylesspalace/tusky/AboutActivity.java | 83 +++++++++++++++++-- .../com/keylesspalace/tusky/MainActivity.java | 1 + app/src/main/res/layout/activity_about.xml | 6 +- 3 files changed, 82 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/keylesspalace/tusky/AboutActivity.java b/app/src/main/java/com/keylesspalace/tusky/AboutActivity.java index bc5fd14eb..01e59066b 100644 --- a/app/src/main/java/com/keylesspalace/tusky/AboutActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/AboutActivity.java @@ -2,13 +2,25 @@ package com.keylesspalace.tusky; import android.content.Intent; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import android.support.design.widget.Snackbar; +import android.support.v7.app.ActionBar; import android.support.v7.widget.Toolbar; +import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.TextView; +import com.keylesspalace.tusky.entity.Account; + +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + public class AboutActivity extends BaseActivity { + private Button appAccountButton; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -16,24 +28,81 @@ public class AboutActivity extends BaseActivity { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); + ActionBar bar = getSupportActionBar(); + if (bar != null) { + bar.setDisplayHomeAsUpEnabled(true); + bar.setDisplayShowHomeEnabled(true); + } TextView versionTextView = (TextView) findViewById(R.id.versionTV); - Button mTuskyAccountButton = (Button) findViewById(R.id.tusky_profile_button); - String versionName = BuildConfig.VERSION_NAME; String versionFormat = getString(R.string.about_application_version); versionTextView.setText(String.format(versionFormat, versionName)); - mTuskyAccountButton.setOnClickListener(new View.OnClickListener() { + + appAccountButton = (Button) findViewById(R.id.tusky_profile_button); + appAccountButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - onAccountTVClick(); + onAccountButtonClick(); } }); } - private void onAccountTVClick() { + private void onAccountButtonClick() { + String appAccountId = getPrivatePreferences().getString("appAccountId", null); + if (appAccountId != null) { + viewAccount(appAccountId); + } else { + searchForAccountThenViewIt(); + } + } + + private void viewAccount(String id) { Intent intent = new Intent(this, AccountActivity.class); - intent.putExtra("id", "72306"); + intent.putExtra("id", id); startActivity(intent); } + + private void searchForAccountThenViewIt() { + Callback> callback = new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + if (response.isSuccessful()) { + List accountList = response.body(); + if (!accountList.isEmpty()) { + String id = accountList.get(0).id; + getPrivatePreferences().edit() + .putString("appAccountId", id) + .apply(); + viewAccount(id); + } else { + onSearchFailed(); + } + } else { + onSearchFailed(); + } + } + + @Override + public void onFailure(Call> call, Throwable t) { + onSearchFailed(); + } + }; + mastodonAPI.searchAccounts("Tusky@mastodon.social", true, null).enqueue(callback); + } + + private void onSearchFailed() { + Snackbar.make(appAccountButton, R.string.error_generic, Snackbar.LENGTH_LONG).show(); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: { + onBackPressed(); + return true; + } + } + return super.onOptionsItemSelected(item); + } } diff --git a/app/src/main/java/com/keylesspalace/tusky/MainActivity.java b/app/src/main/java/com/keylesspalace/tusky/MainActivity.java index 7f183a947..3d39b81ae 100644 --- a/app/src/main/java/com/keylesspalace/tusky/MainActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/MainActivity.java @@ -355,6 +355,7 @@ public class MainActivity extends BaseActivity implements SFragment.OnUserRemove getPrivatePreferences().edit() .remove("domain") .remove("accessToken") + .remove("appAccountId") .apply(); Intent intent = new Intent(MainActivity.this, LoginActivity.class); diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index 2c83347e7..c36fd02be 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -15,7 +15,8 @@ android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" - android:background="?attr/colorPrimary" /> + android:background="?attr/toolbar_background_color" + android:elevation="4dp" />