Yipanic/app/src/main/java/org/bandie/yipanic/SettingsActivity.java

197 lines
6.4 KiB
Java
Raw Normal View History

2020-05-25 14:11:33 +00:00
package org.bandie.yipanic;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NavUtils;
import androidx.security.crypto.EncryptedSharedPreferences;
import com.google.android.material.snackbar.Snackbar;
import java.io.IOException;
import java.security.GeneralSecurityException;
public class SettingsActivity extends AppCompatActivity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 16908332:
case R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
ActionBar actionBar = getSupportActionBar();
EditText srv = findViewById(R.id.textServer);
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
try {
EncryptedSharedPreferences sharedPreferences = (EncryptedSharedPreferences) EncryptedSharedPreferences
.create(
"Yipanic",
"Yipanic",
getApplicationContext(),
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
);
String server = sharedPreferences.getString("server", null);
srv.setText(server);
} catch (IOException | GeneralSecurityException e) {
if (e.getMessage() != null)
Log.e("Yipanic", e.getMessage());
else
Log.e("Yipanic", "[ No exception message ]");
}
}
@Override
protected void onPause() {
super.onPause();
this.finish();
}
public void saveServerSettings(View view) {
Snackbar sbSaved = Snackbar.make(view, "Server settings saved! <3", 3000);
Snackbar sbFailedToSave = Snackbar.make(view, "Couldn't save settings! :'(", 3000);
try {
EditText srv = findViewById(R.id.textServer);
EditText k = findViewById(R.id.pwKey);
EditText s = findViewById(R.id.pwSecret);
EncryptedSharedPreferences sharedPreferences = (EncryptedSharedPreferences) EncryptedSharedPreferences
.create(
"Yipanic",
"Yipanic",
this,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
);
SharedPreferences.Editor sharedPrefsEditor = sharedPreferences.edit();
sharedPrefsEditor.putString("server", srv.getText().toString());
if (!k.getText().toString().equals(""))
sharedPrefsEditor.putString("key", k.getText().toString());
if (!s.getText().toString().equals(""))
sharedPrefsEditor.putString("secret", s.getText().toString());
sharedPrefsEditor.apply();
sbSaved.show();
} catch (IOException | GeneralSecurityException e) {
if (e.getMessage() != null)
Log.e("Yipanic", e.getMessage());
else
Log.e("Yipanic", "[ No exception message ]");
sbFailedToSave.show();
}
}
public void savePasscode(View view) {
Snackbar sbSaved = Snackbar.make(view, "Passcode saved! <3", 3000);
Snackbar sbFailedToSave = Snackbar.make(view, "Couldn't save! :'(", 3000);
try {
EditText pc = findViewById(R.id.pwSetPasscode);
EditText pcc = findViewById(R.id.pwSetPasscodeConfirm);
String pcS = pc.getText().toString();
String pccS = pcc.getText().toString();
if (pcS.equals("") || pccS.equals("")) {
pc.setError("Passcode is empty. >;(");
pcc.setError("Passcode is empty. >;(");
sbFailedToSave.show();
return;
}
if (pcS.length() < 4) {
pc.setError("Passcode needs to have at least 4 digits.");
pcc.setError("Passcode needs to have at least 4 digits.");
sbFailedToSave.show();
return;
}
if (!pcS.equals(pccS)) {
pc.setError("Passcode didn't match. ;(");
pcc.setError("Passcode didn't match. ;(");
sbFailedToSave.show();
return;
}
EncryptedSharedPreferences sharedPreferences = (EncryptedSharedPreferences) EncryptedSharedPreferences
.create(
"Yipanic",
"Yipanic",
this,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
);
SharedPreferences.Editor sharedPrefsEditor = sharedPreferences.edit();
sharedPrefsEditor.putString("passcode", pcS);
sharedPrefsEditor.apply();
sbSaved.show();
pc.setText("");
pcc.setText("");
} catch (IOException | GeneralSecurityException e) {
if (e.getMessage() != null)
Log.e("Yipanic", e.getMessage());
else
Log.e("Yipanic", "[ No exception message ]");
sbFailedToSave.show();
}
}
public void deletePasscode(View view) {
Snackbar sbSaved = Snackbar.make(view, "Passcode deleted! D:", 3000);
Snackbar sbFailedToSave = Snackbar.make(view, "Couldn't delete passcode! :'(", 3000);
try {
EditText pc = findViewById(R.id.pwSetPasscode);
String pcS = pc.getText().toString();
EncryptedSharedPreferences sharedPreferences = (EncryptedSharedPreferences) EncryptedSharedPreferences
.create(
"Yipanic",
"Yipanic",
this,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
);
SharedPreferences.Editor sharedPrefsEditor = sharedPreferences.edit();
if (pcS.equals(sharedPreferences.getString("passcode", null))) {
sharedPrefsEditor.remove("passcode");
sharedPrefsEditor.apply();
sbSaved.show();
} else {
pc.setError("Wrong passcode.");
sbFailedToSave.show();
}
} catch (IOException | GeneralSecurityException e) {
if (e.getMessage() != null)
Log.e("Yipanic", e.getMessage());
else
Log.e("Yipanic", "[ No exception message ]");
sbFailedToSave.show();
}
}
}