Cherry-picked Advanced Settings dialog

- Switched raw strings to string resources

- Removed unused fields / views from LoginActivity

- Reset 'Check Version' button text when changing SSL settings

- Fixed formatting
This commit is contained in:
Galen Abell
2018-11-10 10:59:33 -05:00
parent bcfa8ac221
commit 24e0495f19
7 changed files with 19 additions and 129 deletions

View File

@@ -28,8 +28,7 @@ public class ClientFactory {
return client; return client;
} }
public static ApiClient clientToken( public static ApiClient clientToken(String baseUrl, SSLSettings sslSettings, String token) {
String baseUrl, SSLSettings sslSettings, String token) {
ApiClient client = unauthorized(baseUrl, sslSettings); ApiClient client = unauthorized(baseUrl, sslSettings);
ApiKeyAuth tokenAuth = (ApiKeyAuth) client.getAuthentication("clientTokenHeader"); ApiKeyAuth tokenAuth = (ApiKeyAuth) client.getAuthentication("clientTokenHeader");
tokenAuth.setApiKey(token); tokenAuth.setApiKey(token);

View File

@@ -57,20 +57,20 @@ class AdvancedDialog {
new AlertDialog.Builder(context) new AlertDialog.Builder(context)
.setView(dialogView) .setView(dialogView)
.setTitle("Advanced Settings") .setTitle(R.string.advanced_settings)
.setPositiveButton("Done", (ignored, ignored2) -> {}) .setPositiveButton(context.getString(R.string.done), (ignored, ignored2) -> {})
.show(); .show();
return this; return this;
} }
private void showSelectCACertificate() { private void showSelectCACertificate() {
holder.toggleCaCert.setText("Select CA Certificate"); holder.toggleCaCert.setText(R.string.select_ca_certificate);
holder.toggleCaCert.setOnClickListener((a) -> onClickSelectCaCertificate.run()); holder.toggleCaCert.setOnClickListener((a) -> onClickSelectCaCertificate.run());
holder.selectedCaCertificate.setText("No certificate selected"); holder.selectedCaCertificate.setText(R.string.no_certificate_selected);
} }
void showRemoveCACertificate(String certificate) { void showRemoveCACertificate(String certificate) {
holder.toggleCaCert.setText("Remove CA Certificate"); holder.toggleCaCert.setText(R.string.remove_ca_certificate);
holder.toggleCaCert.setOnClickListener( holder.toggleCaCert.setOnClickListener(
(a) -> { (a) -> {
showSelectCACertificate(); showSelectCACertificate();

View File

@@ -8,18 +8,14 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.OnCheckedChanged;
import butterknife.OnClick; import butterknife.OnClick;
import butterknife.OnTextChanged; import butterknife.OnTextChanged;
import com.github.gotify.R; import com.github.gotify.R;
@@ -58,24 +54,9 @@ public class LoginActivity extends AppCompatActivity {
@BindView(R.id.password) @BindView(R.id.password)
EditText passwordField; EditText passwordField;
@BindView(R.id.sslGroup)
LinearLayout sslGroup;
@BindView(R.id.advanced_settings) @BindView(R.id.advanced_settings)
ImageView toggleAdvanced; ImageView toggleAdvanced;
@BindView(R.id.disableValidateSSL)
CheckBox disableSSLValidationCheckBox;
@BindView(R.id.or)
TextView orTextView;
@BindView(R.id.selectCACertificate)
Button selectCACertificate;
@BindView(R.id.caFile)
TextView caFileName;
@BindView(R.id.checkurl) @BindView(R.id.checkurl)
Button checkUrlButton; Button checkUrlButton;
@@ -88,13 +69,10 @@ public class LoginActivity extends AppCompatActivity {
@BindView(R.id.login_progress) @BindView(R.id.login_progress)
ProgressBar loginProgress; ProgressBar loginProgress;
private boolean showAdvanced = false;
private Settings settings; private Settings settings;
private boolean disableSSLValidation; private boolean disableSSLValidation;
private String caCertContents; private String caCertContents;
private AlertDialog advancedSettingsDialog;
private AdvancedDialog advancedDialog; private AdvancedDialog advancedDialog;
@Override @Override
@@ -116,6 +94,7 @@ public class LoginActivity extends AppCompatActivity {
usernameField.setVisibility(View.GONE); usernameField.setVisibility(View.GONE);
passwordField.setVisibility(View.GONE); passwordField.setVisibility(View.GONE);
loginButton.setVisibility(View.GONE); loginButton.setVisibility(View.GONE);
checkUrlButton.setText(getString(R.string.check_url));
} }
@OnClick(R.id.checkurl) @OnClick(R.id.checkurl)
@@ -128,15 +107,13 @@ public class LoginActivity extends AppCompatActivity {
checkUrlProgress.setVisibility(View.VISIBLE); checkUrlProgress.setVisibility(View.VISIBLE);
checkUrlButton.setVisibility(View.GONE); checkUrlButton.setVisibility(View.GONE);
sslGroup.setVisibility(View.GONE);
final String fixedUrl = url.endsWith("/") ? url.substring(0, url.length() - 1) : url; final String fixedUrl = url.endsWith("/") ? url.substring(0, url.length() - 1) : url;
Api.withLogging( Api.withLogging(
ClientFactory.versionApi( ClientFactory.versionApi(
fixedUrl, fixedUrl,
new SSLSettings( new SSLSettings(!disableSSLValidation, caCertContents))
!disableSSLValidation, caCertContents))
::getVersionAsync) ::getVersionAsync)
.handleInUIThread(this, onValidUrl(fixedUrl), onInvalidUrl(fixedUrl)); .handleInUIThread(this, onValidUrl(fixedUrl), onInvalidUrl(fixedUrl));
} }
@@ -166,14 +143,7 @@ public class LoginActivity extends AppCompatActivity {
.show(disableSSLValidation, selectedCertName); .show(disableSSLValidation, selectedCertName);
} }
@OnCheckedChanged(R.id.disableValidateSSL) private void doSelectCACertificate() {
void doChangeDisableValidateSSL(boolean disable) {
// temporarily set the ssl validation (don't store to settings until they decide to login)
disableSSLValidation = disable;
}
@OnClick(R.id.selectCACertificate)
void doSelectCACertificate() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
// we don't really care what kind of file it is as long as we can parse it // we don't really care what kind of file it is as long as we can parse it
intent.setType("*/*"); intent.setType("*/*");
@@ -238,7 +208,6 @@ public class LoginActivity extends AppCompatActivity {
usernameField.requestFocus(); usernameField.requestFocus();
passwordField.setVisibility(View.VISIBLE); passwordField.setVisibility(View.VISIBLE);
loginButton.setVisibility(View.VISIBLE); loginButton.setVisibility(View.VISIBLE);
sslGroup.setVisibility(View.VISIBLE);
}; };
} }
@@ -246,7 +215,6 @@ public class LoginActivity extends AppCompatActivity {
return (exception) -> { return (exception) -> {
checkUrlProgress.setVisibility(View.GONE); checkUrlProgress.setVisibility(View.GONE);
checkUrlButton.setVisibility(View.VISIBLE); checkUrlButton.setVisibility(View.VISIBLE);
sslGroup.setVisibility(View.VISIBLE);
Utils.showSnackBar(LoginActivity.this, versionError(url, exception)); Utils.showSnackBar(LoginActivity.this, versionError(url, exception));
}; };
} }
@@ -258,7 +226,6 @@ public class LoginActivity extends AppCompatActivity {
loginButton.setVisibility(View.GONE); loginButton.setVisibility(View.GONE);
loginProgress.setVisibility(View.VISIBLE); loginProgress.setVisibility(View.VISIBLE);
sslGroup.setVisibility(View.GONE);
ApiClient client = ApiClient client =
ClientFactory.basicAuth( ClientFactory.basicAuth(
@@ -273,7 +240,6 @@ public class LoginActivity extends AppCompatActivity {
private void onInvalidLogin(ApiException e) { private void onInvalidLogin(ApiException e) {
loginButton.setVisibility(View.VISIBLE); loginButton.setVisibility(View.VISIBLE);
loginProgress.setVisibility(View.GONE); loginProgress.setVisibility(View.GONE);
sslGroup.setVisibility(View.VISIBLE);
Utils.showSnackBar(this, getString(R.string.wronguserpw)); Utils.showSnackBar(this, getString(R.string.wronguserpw));
} }
@@ -312,13 +278,11 @@ public class LoginActivity extends AppCompatActivity {
Utils.showSnackBar(this, getString(R.string.create_client_failed)); Utils.showSnackBar(this, getString(R.string.create_client_failed));
loginProgress.setVisibility(View.GONE); loginProgress.setVisibility(View.GONE);
loginButton.setVisibility(View.VISIBLE); loginButton.setVisibility(View.VISIBLE);
sslGroup.setVisibility(View.VISIBLE);
} }
private void onCancelClientDialog(DialogInterface dialog, int which) { private void onCancelClientDialog(DialogInterface dialog, int which) {
loginProgress.setVisibility(View.GONE); loginProgress.setVisibility(View.GONE);
loginButton.setVisibility(View.VISIBLE); loginButton.setVisibility(View.VISIBLE);
sslGroup.setVisibility(View.VISIBLE);
} }
private String versionError(String url, ApiException exception) { private String versionError(String url, ApiException exception) {

View File

@@ -50,11 +50,10 @@ import com.squareup.okhttp.HttpUrl;
import com.squareup.picasso.OkHttp3Downloader; import com.squareup.picasso.OkHttp3Downloader;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target; import com.squareup.picasso.Target;
import okhttp3.OkHttpClient;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import okhttp3.OkHttpClient;
import static java.util.Collections.emptyList; import static java.util.Collections.emptyList;
@@ -184,9 +183,7 @@ public class MessagesActivity extends AppCompatActivity
OkHttp3Downloader downloader = new OkHttp3Downloader(builder.build()); OkHttp3Downloader downloader = new OkHttp3Downloader(builder.build());
return new Picasso.Builder(this) return new Picasso.Builder(this).downloader(downloader).build();
.downloader(downloader)
.build();
} }
private void initDrawer() { private void initDrawer() {

View File

@@ -110,78 +110,6 @@
app:layout_constraintWidth_max="280dp" app:layout_constraintWidth_max="280dp"
tools:text="Password" /> tools:text="Password" />
<LinearLayout
android:id="@+id/sslGroup"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:orientation="vertical"
app:layout_constraintWidth_max="280dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/login">
<Button
android:id="@+id/showAdvanced"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryDark"
android:textColor="@android:color/white"
android:ems="10"
android:text="@string/show_advanced"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<CheckBox
android:id="@+id/disableValidateSSL"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:text="@string/disabled_validate_ssl"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/showAdvanced" />
<TextView
android:id="@+id/or"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:ems="10"
android:text="@string/or"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/disableValidateSSL" />
<Button
android:id="@+id/selectCACertificate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:text="@string/select_ca_certificate"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/or" />
<TextView
android:id="@+id/caFile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:text="@string/no_ca_selected"
android:textAlignment="center"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/selectCACertificate" />
</LinearLayout>
<Button <Button
android:id="@+id/login" android:id="@+id/login"
android:layout_width="0dp" android:layout_width="0dp"

View File

@@ -8,17 +8,17 @@
android:id="@+id/disableSSL" android:id="@+id/disableSSL"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Disable SSL Validation" /> android:text="@string/disabled_validate_ssl" />
<Button <Button
android:id="@+id/toggle_ca_cert" android:id="@+id/toggle_ca_cert"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Select CA Certificate" /> android:text="@string/select_ca_certificate" />
<TextView <TextView
android:id="@+id/seleceted_ca_cert" android:id="@+id/seleceted_ca_cert"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="No Certificate selected" /> android:text="@string/no_certificate_selected" />
</LinearLayout> </LinearLayout>

View File

@@ -35,10 +35,8 @@
<string name="disabled_validate_ssl">Disable SSL Validation</string> <string name="disabled_validate_ssl">Disable SSL Validation</string>
<string name="select_ca_certificate">Select CA Certificate</string> <string name="select_ca_certificate">Select CA Certificate</string>
<string name="select_ca_file">Select a Certificate File</string> <string name="select_ca_file">Select a Certificate File</string>
<string name="or">OR</string>
<string name="please_install_file_browser">Please install a file browser</string> <string name="please_install_file_browser">Please install a file browser</string>
<string name="select_ca_failed">Failed to read CA: %s</string> <string name="select_ca_failed">Failed to read CA: %s</string>
<string name="no_ca_selected">No CA selected</string>
<string name="login">Login</string> <string name="login">Login</string>
<string name="check_url">Check URL</string> <string name="check_url">Check URL</string>
<string name="gotify_logo">gotify logo</string> <string name="gotify_logo">gotify logo</string>
@@ -52,4 +50,8 @@
<string name="websocket_init">Initializing</string> <string name="websocket_init">Initializing</string>
<string name="connection">%s@%s</string> <string name="connection">%s@%s</string>
<string name="server_version">Gotify-Server v%s</string> <string name="server_version">Gotify-Server v%s</string>
<string name="advanced_settings">Advanced Settings</string>
<string name="done">Done</string>
<string name="no_certificate_selected">No certificate selected</string>
<string name="remove_ca_certificate">Remove CA Certificate</string>
</resources> </resources>