Merge branch 'master' of https://github.com/Pangoraw/Tusky into Pangoraw-master

main
Vavassor 8 years ago
commit a394779a58
  1. 22
      app/src/main/java/com/keylesspalace/tusky/LoginActivity.java
  2. 24
      app/src/main/res/layout/activity_login.xml
  3. 2
      app/src/main/res/values-fr/strings.xml
  4. 2
      app/src/main/res/values/strings.xml

@ -32,6 +32,7 @@ import android.text.method.LinkMovementMethod;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import com.keylesspalace.tusky.entity.AccessToken; import com.keylesspalace.tusky.entity.AccessToken;
@ -62,6 +63,9 @@ public class LoginActivity extends AppCompatActivity {
private String clientId; private String clientId;
private String clientSecret; private String clientSecret;
@BindView(R.id.login_input) LinearLayout input;
@BindView(R.id.login_loading) LinearLayout loading;
@BindView(R.id.edit_text_domain) EditText editText; @BindView(R.id.edit_text_domain) EditText editText;
@BindView(R.id.button_login) Button button; @BindView(R.id.button_login) Button button;
@BindView(R.id.whats_an_instance) TextView whatsAnInstance; @BindView(R.id.whats_an_instance) TextView whatsAnInstance;
@ -326,6 +330,8 @@ public class LoginActivity extends AppCompatActivity {
domain = preferences.getString("domain", null); domain = preferences.getString("domain", null);
clientId = preferences.getString("clientId", null); clientId = preferences.getString("clientId", null);
clientSecret = preferences.getString("clientSecret", null); clientSecret = preferences.getString("clientSecret", null);
setLoading(true);
/* Since authorization has succeeded, the final step to log in is to exchange /* Since authorization has succeeded, the final step to log in is to exchange
* the authorization code for an access token. */ * the authorization code for an access token. */
Callback<AccessToken> callback = new Callback<AccessToken>() { Callback<AccessToken> callback = new Callback<AccessToken>() {
@ -334,6 +340,8 @@ public class LoginActivity extends AppCompatActivity {
if (response.isSuccessful()) { if (response.isSuccessful()) {
onLoginSuccess(response.body().accessToken); onLoginSuccess(response.body().accessToken);
} else { } else {
setLoading(false);
editText.setError(getString(R.string.error_retrieving_oauth_token)); editText.setError(getString(R.string.error_retrieving_oauth_token));
Log.e(TAG, String.format("%s %s", Log.e(TAG, String.format("%s %s",
getString(R.string.error_retrieving_oauth_token), getString(R.string.error_retrieving_oauth_token),
@ -343,6 +351,7 @@ public class LoginActivity extends AppCompatActivity {
@Override @Override
public void onFailure(Call<AccessToken> call, Throwable t) { public void onFailure(Call<AccessToken> call, Throwable t) {
setLoading(false);
editText.setError(getString(R.string.error_retrieving_oauth_token)); editText.setError(getString(R.string.error_retrieving_oauth_token));
Log.e(TAG, String.format("%s %s", Log.e(TAG, String.format("%s %s",
getString(R.string.error_retrieving_oauth_token), getString(R.string.error_retrieving_oauth_token),
@ -355,21 +364,34 @@ public class LoginActivity extends AppCompatActivity {
} else if (error != null) { } else if (error != null) {
/* Authorization failed. Put the error response where the user can read it and they /* Authorization failed. Put the error response where the user can read it and they
* can try again. */ * can try again. */
setLoading(false);
editText.setError(getString(R.string.error_authorization_denied)); editText.setError(getString(R.string.error_authorization_denied));
Log.e(TAG, getString(R.string.error_authorization_denied) + error); Log.e(TAG, getString(R.string.error_authorization_denied) + error);
} else { } else {
setLoading(false);
// This case means a junk response was received somehow. // This case means a junk response was received somehow.
editText.setError(getString(R.string.error_authorization_unknown)); editText.setError(getString(R.string.error_authorization_unknown));
} }
} }
} }
private void setLoading(boolean loadingState) {
if (loadingState) {
loading.setVisibility(View.VISIBLE);
input.setVisibility(View.GONE);
} else {
loading.setVisibility(View.GONE);
input.setVisibility(View.VISIBLE);
}
}
private void onLoginSuccess(String accessToken) { private void onLoginSuccess(String accessToken) {
boolean committed = preferences.edit() boolean committed = preferences.edit()
.putString("domain", domain) .putString("domain", domain)
.putString("accessToken", accessToken) .putString("accessToken", accessToken)
.commit(); .commit();
if (!committed) { if (!committed) {
setLoading(false);
editText.setError(getString(R.string.error_retrieving_oauth_token)); editText.setError(getString(R.string.error_retrieving_oauth_token));
return; return;
} }

@ -20,6 +20,11 @@
android:src="@drawable/elephant_friend" android:src="@drawable/elephant_friend"
android:contentDescription="@null" /> android:contentDescription="@null" />
<LinearLayout
android:id="@+id/login_input"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.design.widget.TextInputLayout <android.support.design.widget.TextInputLayout
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="250dp"> android:layout_width="250dp">
@ -53,6 +58,25 @@
android:textAlignment="center" android:textAlignment="center"
android:id="@+id/whats_an_instance" android:id="@+id/whats_an_instance"
android:text="@string/link_whats_an_instance" /> android:text="@string/link_whats_an_instance" />
</LinearLayout>
<LinearLayout
android:id="@+id/login_loading"
android:visibility="gone"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ProgressBar
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:paddingTop="10dp"
android:textAlignment="center"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:text="@string/login_connection"/>
</LinearLayout>
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>

@ -111,6 +111,8 @@
<string name="link_whats_an_instance">Qu’est-ce qu’une instance ?</string> <string name="link_whats_an_instance">Qu’est-ce qu’une instance ?</string>
<string name="login_connection">Connexion en cours…</string>
<string name="dialog_whats_an_instance">Indiquer ici l’adresse ou le domaine d’une instance, comme mastodon.social, icosahedron.website, social.tchncs.de, <string name="dialog_whats_an_instance">Indiquer ici l’adresse ou le domaine d’une instance, comme mastodon.social, icosahedron.website, social.tchncs.de,
<a href="https://github.com/tootsuite/mastodon/blob/master/docs/Using-Mastodon/List-of-Mastodon-instances.md">et bien d’autres encore</a> (en anglais) ! <a href="https://github.com/tootsuite/mastodon/blob/master/docs/Using-Mastodon/List-of-Mastodon-instances.md">et bien d’autres encore</a> (en anglais) !
\n\nSi vous ne disposez d’aucun compte, vous pouvez renseigner le nom de l’instance que vous souhaitez rejoindre et y créer un compte.\n\nUne instance est l’endroit où votre compte est \n\nSi vous ne disposez d’aucun compte, vous pouvez renseigner le nom de l’instance que vous souhaitez rejoindre et y créer un compte.\n\nUne instance est l’endroit où votre compte est

@ -122,6 +122,8 @@
<string name="link_whats_an_instance">What\'s an instance?</string> <string name="link_whats_an_instance">What\'s an instance?</string>
<string name="login_connection">Connecting…</string>
<string name="dialog_whats_an_instance">The address or domain of any instance can be entered <string name="dialog_whats_an_instance">The address or domain of any instance can be entered
here, such as mastodon.social, icosahedron.website, social.tchncs.de, and here, such as mastodon.social, icosahedron.website, social.tchncs.de, and
<a href="https://github.com/tootsuite/mastodon/blob/master/docs/Using-Mastodon/List-of-Mastodon-instances.md">more!</a> <a href="https://github.com/tootsuite/mastodon/blob/master/docs/Using-Mastodon/List-of-Mastodon-instances.md">more!</a>

Loading…
Cancel
Save