Skip to content

Commit c2e622d

Browse files
mathiascodeCl1608Ho
authored andcommitted
Better auth toggle error handling (#42)
* Better auth toggle error handling * Bump recyclerview version
1 parent c270c45 commit c2e622d

File tree

2 files changed

+49
-25
lines changed

2 files changed

+49
-25
lines changed

app/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ dependencies {
3030
implementation fileTree(include: ['*.jar'], dir: 'libs')
3131
implementation 'androidx.appcompat:appcompat:1.1.0'
3232
implementation 'androidx.preference:preference:1.1.0'
33+
implementation 'androidx.recyclerview:recyclerview:1.2.0-alpha01'
3334
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
34-
implementation 'com.google.android.material:material:1.2.0-alpha01'
35+
implementation 'com.google.android.material:material:1.2.0-alpha03'
3536
implementation 'org.ini4j:ini4j:0.5.4'
3637
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
3738
}

app/src/main/java/org/cuberite/android/fragments/SettingsFragment.java

Lines changed: 47 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,14 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
116116
try {
117117
final Ini ini = createWebadminIni(webadminFile);
118118
final String ip = CuberiteService.getIpAddress(getContext());
119-
final String port = ini.get("WebAdmin", "Ports");
119+
int port;
120+
try {
121+
port = Integer.parseInt(ini.get("WebAdmin", "Ports"));
122+
} catch (NumberFormatException e) {
123+
ini.put("WebAdmin", "Ports", 8080);
124+
ini.store(webadminFile);
125+
port = Integer.parseInt(ini.get("WebAdmin", "Ports"));
126+
}
120127
url = "http://" + ip + ":" + port;
121128

122129
Preference webadminDescription = findPreference("webadminDescription");
@@ -221,37 +228,30 @@ public boolean onPreferenceClick(Preference preference) {
221228

222229
// Authentication
223230
final SwitchPreference toggleAuthentication = findPreference("troubleshootingAuthenticationToggle");
224-
toggleAuthentication.setShouldDisableView(false);
225-
toggleAuthentication.setEnabled(true);
226-
227231
final File settingsFile = new File(cuberiteDir.getAbsolutePath() + "/settings.ini");
228-
int enabled = 0;
229232

230-
try {
231-
Ini ini = new Ini(settingsFile);
232-
enabled = Integer.parseInt(ini.get("Authentication", "Authenticate"));
233-
234-
if (enabled == 1) {
235-
toggleAuthentication.setChecked(true);
236-
} else {
237-
toggleAuthentication.setChecked(false);
238-
}
239-
} catch(IOException e) {
240-
Log.e(LOG, "Settings.ini doesn't exist, disabling authentication toggle");
241-
toggleAuthentication.setShouldDisableView(true);
242-
toggleAuthentication.setEnabled(false);
243-
}
233+
updateAuthenticationToggle(settingsFile, toggleAuthentication);
244234

245235
toggleAuthentication.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
246236
@Override
247237
public boolean onPreferenceClick(Preference preference) {
248238
try {
249-
Ini ini = new Ini(settingsFile);
250-
int enabled = Integer.parseInt(ini.get("Authentication", "Authenticate"));
251-
int newenabled = enabled ^ 1; // XOR: 0 ^ 1 => 1, 1 ^ 1 => 0
252-
ini.put("Authentication", "Authenticate", newenabled);
239+
final Ini ini = new Ini(settingsFile);
240+
int newEnabled;
241+
242+
try {
243+
final int enabled = Integer.parseInt(ini.get("Authentication", "Authenticate"));
244+
newEnabled = enabled ^ 1; // XOR: 0 ^ 1 => 1, 1 ^ 1 => 0
245+
} catch (NumberFormatException e) {
246+
newEnabled = 1;
247+
}
248+
249+
boolean newEnabledBool = newEnabled != 0;
250+
toggleAuthentication.setChecked(newEnabledBool);
251+
252+
ini.put("Authentication", "Authenticate", newEnabled);
253253
ini.store(settingsFile);
254-
MainActivity.showSnackBar(getActivity(), String.format(getString(R.string.settings_authentication_toggle_success), getString((newenabled == 1 ? R.string.enabled : R.string.disabled))));
254+
MainActivity.showSnackBar(getActivity(), String.format(getString(R.string.settings_authentication_toggle_success), getString(newEnabled == 1 ? R.string.enabled : R.string.disabled)));
255255
} catch(IOException e) {
256256
Log.e(LOG, "Something went wrong while opening the ini file", e);
257257
MainActivity.showSnackBar(getActivity(), getString(R.string.settings_authentication_toggle_error));
@@ -434,6 +434,29 @@ public void onClick(DialogInterface dialog, int id) {
434434
dialog.show();
435435
}
436436

437+
private void updateAuthenticationToggle(File settingsFile, SwitchPreference toggle) {
438+
try {
439+
final Ini ini = new Ini(settingsFile);
440+
441+
try {
442+
final int enabled = Integer.parseInt(ini.get("Authentication", "Authenticate"));
443+
444+
if (enabled == 0) {
445+
toggle.setChecked(false);
446+
}
447+
} catch (NumberFormatException e) {
448+
ini.put("Authentication", "Authenticate", 1);
449+
ini.store(settingsFile);
450+
toggle.setChecked(true);
451+
}
452+
} catch(IOException e) {
453+
Log.e(LOG, "Settings.ini doesn't exist, disabling authentication toggle");
454+
toggle.setShouldDisableView(true);
455+
toggle.setEnabled(false);
456+
toggle.setChecked(true);
457+
}
458+
}
459+
437460
@Override
438461
public void onActivityResult(int requestCode, int resultCode, Intent data) {
439462
super.onActivityResult(requestCode, resultCode, data);

0 commit comments

Comments
 (0)