Skip to content

Commit

Permalink
Option to reset Signal configuration
Browse files Browse the repository at this point in the history
- will clear out existing Signal configuration calling a rest on
  SignalSender and clear out credentials, ie, registered number
  verified number and notification time

- this will enable a full restart of Signal onboarding without having to
  clear out whole app data

Signed-off-by: Arka Prava Basu <[email protected]>
  • Loading branch information
archie94 committed Mar 28, 2019
1 parent 10079ff commit a570c3e
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 1 deletion.
1 change: 1 addition & 0 deletions src/main/java/org/havenapp/main/PreferenceManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ public class PreferenceManager {
public static final String REGISTER_SIGNAL = "register_signal";
public static final String VERIFY_SIGNAL = "verify_signal";
public static final String VOICE_VERIFY_SIGNAL = "voice_verify_signal";
public static final String RESET_SIGNAL_CONFIG = "reset_signal_config";
private static final String UNLOCK_CODE="unlock_code";

private static final String ACCESS_TOKEN="access_token";
Expand Down
29 changes: 28 additions & 1 deletion src/main/java/org/havenapp/main/SettingsFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,11 @@ public void onCreatePreferences(Bundle bundle, String s) {
findPreference(PreferenceManager.NOTIFICATION_TIME).setSummary(preferences.getNotificationTimeMs()/60000 + " " + getString(R.string.minutes));
}

findPreference(PreferenceManager.RESET_SIGNAL_CONFIG).setOnPreferenceClickListener(preference -> {
showResetSignalDialog();
return true;
});

if (preferences.getHeartbeatActive())
{
((SwitchPreference) findPreference(PreferenceManager.HEARTBEAT_MONITOR_ACTIVE)).setChecked(true);
Expand Down Expand Up @@ -225,6 +230,21 @@ public void onCreatePreferences(Bundle bundle, String s) {

}

private void showResetSignalDialog() {
new AlertDialog.Builder(getActivity())
.setTitle(R.string.reset_configuration_question)
.setMessage(R.string.reset_configuration_desc)
.setPositiveButton(android.R.string.yes, (dialog, which) -> {
dialog.dismiss();
resetSignalAndClearPrefs();
findPreference(PreferenceManager.REGISTER_SIGNAL).setSummary(R.string.signal_dialog_summary);
findPreference(PreferenceManager.NOTIFICATION_TIME).setSummary(R.string.notification_time_summary);
checkSignalUsernameVerification();
})
.setNegativeButton(android.R.string.no, (dialog, which) -> dialog.dismiss())
.show();
}

private boolean canSendRemoteNotification() {
String remotePhoneNumber = preferences.getRemotePhoneNumber();
String signalUsername = preferences.getSignalUsername();
Expand Down Expand Up @@ -407,7 +427,7 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Strin
}
activateSignal(preferences.getSignalUsername(), null);
} else if (!getCountryCode().equalsIgnoreCase(signalNum)) {
preferences.setSignalUsername("");
preferences.setSignalUsername(null);
findPreference(PreferenceManager.REGISTER_SIGNAL).setSummary(R.string.register_signal_desc);
}
onRemoteNotificationParameterChange();
Expand Down Expand Up @@ -679,6 +699,13 @@ private void showVerificationSuccessDialog() {
.show();
}

private void resetSignalAndClearPrefs() {
resetSignal(preferences.getSignalUsername());
preferences.setSignalUsername(null);
preferences.setVerifiedSignalUsername(null);
preferences.setNotificationTimeMs(-1);
}

private void resetSignal(String username) {
if (checkValidString((username))) {
SignalSender sender = SignalSender.getInstance(mActivity, username.trim());
Expand Down
3 changes: 3 additions & 0 deletions src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -188,5 +188,8 @@
<string name="verification_successful">Verification Successful</string>
<string name="signal_verification_success_desc">All set to send Haven alerts from Signal!</string>
<string name="setup_signal_toast">Please set up Signal notifications from settings</string>
<string name="reset_signal_configuration">Reset Signal Configuration</string>
<string name="reset_configuration_question">Reset Signal Configuration?</string>
<string name="reset_configuration_desc">This will clear out all Signal configurations. You will have to register and verify again to use Signal services in the future. Are you sure?</string>

</resources>
5 changes: 5 additions & 0 deletions src/main/res/xml/settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,11 @@
android:summary="@string/notification_time_summary"
android:title="@string/notification_time" />

<Preference
app:iconSpaceReserved="false"
android:key="reset_signal_config"
android:title="@string/reset_signal_configuration" />

</PreferenceCategory>
<PreferenceCategory
app:iconSpaceReserved="false"
Expand Down

0 comments on commit a570c3e

Please sign in to comment.