diff --git a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java
index 3347c715..7156d378 100644
--- a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java
@@ -1,5 +1,6 @@
package org.mian.gitnex.activities;
+import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
@@ -101,7 +102,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
boolean connToInternet = AppUtil.haveNetworkConnection(getApplicationContext());
if(!tinyDb.getBoolean("loggedInMode")) {
- logout();
+ logout(this, ctx);
return;
}
@@ -354,7 +355,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
new SettingsFragment()).commit();
break;
case R.id.nav_logout:
- logout();
+ logout(this, ctx);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
break;
case R.id.nav_about:
@@ -392,15 +393,15 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
}
}
- public void logout() {
+ public static void logout(Activity activity, Context ctx) {
- TinyDB tinyDb = new TinyDB(getApplicationContext());
+ TinyDB tinyDb = new TinyDB(ctx.getApplicationContext());
tinyDb.putBoolean("loggedInMode", false);
tinyDb.remove("basicAuthPassword");
tinyDb.putBoolean("basicAuthFlag", false);
//tinyDb.clear();
- finish();
- startActivity(new Intent(MainActivity.this, LoginActivity.class));
+ activity.finish();
+ ctx.startActivity(new Intent(ctx, LoginActivity.class));
}
diff --git a/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java
index 492af7c4..98fc3441 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java
@@ -13,7 +13,9 @@ import android.widget.LinearLayout;
import android.widget.Switch;
import android.widget.TextView;
import org.mian.gitnex.R;
+import org.mian.gitnex.activities.MainActivity;
import org.mian.gitnex.helpers.Toasty;
+import org.mian.gitnex.helpers.ssl.MemorizingTrustManager;
import org.mian.gitnex.util.TinyDB;
import java.util.Objects;
import androidx.annotation.NonNull;
@@ -67,6 +69,7 @@ public class SettingsFragment extends Fragment {
LinearLayout homeScreenFrame = v.findViewById(R.id.homeScreenFrame);
LinearLayout customFontFrame = v.findViewById(R.id.customFontFrame);
LinearLayout themeFrame = v.findViewById(R.id.themeSelectionFrame);
+ LinearLayout certsFrame = v.findViewById(R.id.certsFrame);
Switch issuesSwitch = v.findViewById(R.id.switchIssuesBadge);
Switch pdfModeSwitch = v.findViewById(R.id.switchPdfMode);
@@ -144,6 +147,32 @@ public class SettingsFragment extends Fragment {
pdfModeSwitch.setChecked(false);
}
+ // certs deletion
+ certsFrame.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
+ builder.setTitle("Delete trusted certificates?");
+ builder.setMessage("Are you really sure to delete any manually trusted certificate?\n\nNotice: Your will be logged out too.");
+ builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ ctx.getSharedPreferences(MemorizingTrustManager.KEYSTORE_NAME, Context.MODE_PRIVATE)
+ .edit()
+ .remove(MemorizingTrustManager.KEYSTORE_KEY)
+ .apply();
+
+ MainActivity.logout(Objects.requireNonNull(getActivity()), ctx);
+ }
+ });
+
+ builder.setNeutralButton("NO", (dialog, which) -> dialog.dismiss());
+ builder.create().show();
+ }
+ });
+
// issues badge switcher
issuesSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
diff --git a/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingTrustManager.java b/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingTrustManager.java
index 49ea6f6e..d79f1d6c 100644
--- a/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingTrustManager.java
+++ b/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingTrustManager.java
@@ -45,8 +45,8 @@ import javax.net.ssl.X509TrustManager;
public class MemorizingTrustManager implements X509TrustManager {
private final static int NOTIFICATION_ID = 100509;
- private final static String KEYSTORE_NAME = "keystore";
- private final static String KEYSTORE_KEY = "keystore";
+ public final static String KEYSTORE_NAME = "keystore";
+ public final static String KEYSTORE_KEY = "keystore";
private Context context;
private NotificationManager notificationManager;
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index 5f6eb145..09aec96b 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -33,7 +33,7 @@
layout="@layout/layout_settings_fileview"/>
+
+
+
+
diff --git a/app/src/main/res/layout/layout_settings_certs.xml b/app/src/main/res/layout/layout_settings_certs.xml
new file mode 100644
index 00000000..52b4a67b
--- /dev/null
+++ b/app/src/main/res/layout/layout_settings_certs.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c70314e0..711cf468 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -246,6 +246,8 @@
Translation
+ Certs
+ Delete certificates
Date & Time
Settings saved
Language