Skip to content

Commit

Permalink
Issue #84: set default account
Browse files Browse the repository at this point in the history
  • Loading branch information
swentel committed Sep 7, 2018
1 parent d915a02 commit feb0b73
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 0 deletions.
1 change: 1 addition & 0 deletions app/src/main/assets/changelog
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Icons from <a href="https://material.io/tools/icons/">Material Design</a> and <a
<li>Support for media endpoint</li>
<li>Add maximum image size settings</li>
<li>Syndication targets are now saved via ?q=config</li>
<li>Get around a missing account preference</li>
</ul>
<h3>07/09/2018 - 0.12</h3>
<ul>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.indieweb.indigenous;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.indieweb.indigenous.MainActivity;
import com.indieweb.indigenous.R;
import com.indieweb.indigenous.model.User;
import com.indieweb.indigenous.util.Accounts;
import com.indieweb.indigenous.util.Connection;
import com.indieweb.indigenous.util.MicropubConfig;

Expand Down Expand Up @@ -73,6 +74,19 @@ protected void onCreate(Bundle savedInstanceState) {
info = findViewById(R.id.info);
signIn = findViewById(R.id.signInButton);
signIn.setOnClickListener(doSignIn);

// Show 'switch account' button.
SharedPreferences preferences = getSharedPreferences("indigenous", MODE_PRIVATE);
String accountName = preferences.getString("account", "");
AccountManager accountManager = AccountManager.get(this);
Account[] accounts = accountManager.getAccounts();
if (accountName.length() == 0 && accounts.length > 0) {
TextView setAccountInfo = findViewById(R.id.setAccountButtonInfo);
setAccountInfo.setVisibility(View.VISIBLE);
Button setAccount = findViewById(R.id.setAccountButton);
setAccount.setOnClickListener(doSetAccount);
setAccount.setVisibility(View.VISIBLE);
}
}

@Override
Expand All @@ -95,6 +109,15 @@ protected void onNewIntent(Intent intent) {
}
}

/**
* OnClickListener for the 'Set account' button.
*/
private final View.OnClickListener doSetAccount = new View.OnClickListener() {
public void onClick(View v) {
new Accounts(IndieAuthActivity.this).setAccount(IndieAuthActivity.this);
}
};

/**
* OnClickListener for the 'Sign in with your domain' button.
*/
Expand Down
35 changes: 35 additions & 0 deletions app/src/main/java/com/indieweb/indigenous/util/Accounts.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AlertDialog;
import android.widget.Toast;

import com.indieweb.indigenous.R;
import com.indieweb.indigenous.indieauth.IndieAuthActivity;
Expand Down Expand Up @@ -108,6 +109,40 @@ public void onClick(DialogInterface dialog, int index) {
builder.show();
}

/**
* Set account dialog.
*
* @param activity
* The current activity
*/
public void setAccount(final Activity activity) {
final List<String> accounts = new ArrayList<>();

final Account[] AllAccounts = this.getAllAccounts();
for (Account account: AllAccounts) {
accounts.add(account.name);
}

final CharSequence[] accountItems = accounts.toArray(new CharSequence[accounts.size()]);
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Set account");

builder.setCancelable(true);
builder.setItems(accountItems, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int index) {
Toast.makeText(context, "Account set to " + accounts.get(index), Toast.LENGTH_SHORT).show();
SharedPreferences.Editor editor = context.getSharedPreferences("indigenous", MODE_PRIVATE).edit();
editor.putString("account", accounts.get(index));
editor.apply();
Intent Main = new Intent(context, com.indieweb.indigenous.MainActivity.class);
context.startActivity(Main);
activity.finish();
}
});
builder.show();
}

/**
* Returns all accounts.
*
Expand Down
18 changes: 18 additions & 0 deletions app/src/main/res/layout/activity_indieauth.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,24 @@
android:layout_height="wrap_content"
android:text="@string/sign_in_with_domain" />

<TextView
android:visibility="gone"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:layout_marginTop="50dp"
android:id="@+id/setAccountButtonInfo"
android:text="@string/set_account_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<Button
android:visibility="gone"
android:layout_marginTop="10dp"
android:id="@+id/setAccountButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/set_account" />

</LinearLayout>

</ScrollView>
2 changes: 2 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
<string name="account_type">IndieAuth</string>
<string name="accounts">Accounts</string>
<string name="add_new_account">Add new account</string>
<string name="set_account">Set account</string>
<string name="set_account_info">No default account was set, you can select one by pressing the "Set account button".</string>
<string name="no_connection">No internet connection found</string>

<string name="domain_hint">http://example.com</string>
Expand Down

0 comments on commit feb0b73

Please sign in to comment.