Skip to content

Commit 35c968f

Browse files
committed
Keep track of signal verification
- signal_username keeps track of registered signal number, signal_verified_username will keep track if that has been verified or not - extract string constants into resources Signed-off-by: Arka Prava Basu <[email protected]>
1 parent 1d826da commit 35c968f

File tree

3 files changed

+70
-4
lines changed

3 files changed

+70
-4
lines changed

src/main/java/org/havenapp/main/PreferenceManager.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ public class PreferenceManager {
8686
public static final String REMOTE_ACCESS_CRED = "remote_access_credential";
8787

8888
private static final String SIGNAL_USERNAME = "signal_username";
89+
private static final String SIGNAL_VERIFIED_USERNAME = "signal_verified_username";
8990

9091
private static final String FIRST_LAUNCH = "first_launch";
9192

@@ -119,6 +120,16 @@ public void setFirstLaunch(boolean firstLaunch) {
119120
prefsEditor.commit();
120121
}
121122

123+
/**
124+
* Returns the Signal username registered. This may not be a good way to check for
125+
* Signal set up since this may not be verified.
126+
*
127+
* Usages should be checked with {@link #isSignalVerified()}
128+
*
129+
* @see #isSignalVerified()
130+
*
131+
* @return the Signal username; null when nothing is set up
132+
*/
122133
public String getSignalUsername ()
123134
{
124135
return appSharedPrefs.getString(SIGNAL_USERNAME,null);
@@ -130,6 +141,37 @@ public void setSignalUsername (String signalUsername)
130141
prefsEditor.commit();
131142
}
132143

144+
/**
145+
* Returns the Signal username verified. This may not be a good way to check for
146+
* Signal set up since this may invalidated by a call to register with a different username.
147+
*
148+
* Usages should be checked with {@link #isSignalVerified()}
149+
*
150+
* @see #isSignalVerified()
151+
*
152+
* @return the verified Signal username; null when no Signal username is verified even though registered.
153+
*/
154+
@Nullable
155+
public String getVerifiedSignalUsername() {
156+
return appSharedPrefs.getString(SIGNAL_VERIFIED_USERNAME, null);
157+
}
158+
159+
public void setVerifiedSignalUsername(String verifiedSignalUsername) {
160+
prefsEditor.putString(SIGNAL_VERIFIED_USERNAME, verifiedSignalUsername);
161+
prefsEditor.commit();
162+
}
163+
164+
/**
165+
* Checks if Signal is registered and verified for the Signal username returned by
166+
* {@link #getSignalUsername()}
167+
*
168+
* @return true iff registered Signal username is same as that of the verified one.
169+
*/
170+
public boolean isSignalVerified() {
171+
return !TextUtils.isEmpty(getSignalUsername()) &&
172+
getSignalUsername().equals(getVerifiedSignalUsername());
173+
}
174+
133175
public void activateRemoteAccess (boolean active) {
134176
prefsEditor.putBoolean(REMOTE_ACCESS_ACTIVE,active);
135177
prefsEditor.commit();

src/main/java/org/havenapp/main/SettingsFragment.java

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ public void onCreatePreferences(Bundle bundle, String s) {
217217
});
218218

219219
checkSignalUsername();
220+
checkSignalUsernameVerification();
220221
((EditTextPreference) findPreference(PreferenceManager.VERIFY_SIGNAL)).setText("");
221222
askForPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, 1);
222223

@@ -410,6 +411,7 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Strin
410411
findPreference(PreferenceManager.REGISTER_SIGNAL).setSummary(R.string.register_signal_desc);
411412
}
412413
onRemoteNotificationParameterChange();
414+
checkSignalUsernameVerification();
413415
break;
414416
case PreferenceManager.VERIFY_SIGNAL: {
415417
String text = ((EditTextPreference) findPreference(PreferenceManager.VERIFY_SIGNAL)).getText();
@@ -418,6 +420,7 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Strin
418420
}
419421
activateSignal(preferences.getSignalUsername(), text);
420422
onRemoteNotificationParameterChange();
423+
checkSignalUsernameVerification();
421424
break;
422425
}
423426
case PreferenceManager.REMOTE_PHONE_NUMBER:
@@ -585,12 +588,26 @@ private void checkSignalUsername() {
585588
}
586589
}
587590

591+
private void checkSignalUsernameVerification() {
592+
String signalUsername = preferences.getSignalUsername();
593+
594+
// this will fail for all users currently has signal verified
595+
if (checkValidString(signalUsername) &&
596+
signalUsername.equals(preferences.getVerifiedSignalUsername())) {
597+
findPreference(PreferenceManager.VERIFY_SIGNAL)
598+
.setSummary(R.string.verification_dialog_summary_verified);
599+
} else {
600+
findPreference(PreferenceManager.VERIFY_SIGNAL)
601+
.setSummary(R.string.verification_dialog_summary);
602+
}
603+
}
604+
588605
private void activateSignal(String username, String verifyCode) {
589606
SignalSender sender = SignalSender.getInstance(mActivity, username);
590607

591608
if (TextUtils.isEmpty(verifyCode)) {
592-
ProgressDialog progressDialog = ProgressDialog.show(getContext(), "Registering to Signal",
593-
"Please wait while we register you to Signal services");
609+
ProgressDialog progressDialog = ProgressDialog.show(getContext(), getString(R.string.registering_to_signal),
610+
getString(R.string.signal_registration_desc));
594611
sender.register(preferences.getVoiceVerificationEnabled(),
595612
new SignalExecutorTask.TaskResult() {
596613
@Override
@@ -610,14 +627,16 @@ public void onFailure(@NonNull String msg) {
610627
}
611628
});
612629
} else {
613-
ProgressDialog progressDialog = ProgressDialog.show(getContext(), "Verifying",
614-
"Please wait while we verify your registration to Signal services");
630+
ProgressDialog progressDialog = ProgressDialog.show(getContext(), getString(R.string.verifying_signal),
631+
getString(R.string.verifying_signal_desc));
615632
sender.verify(verifyCode, new SignalExecutorTask.TaskResult() {
616633
@Override
617634
public void onSuccess(@NonNull String msg) {
618635
if (isAdded() && getActivity() != null) {
619636
progressDialog.dismiss();
620637
}
638+
// mark that the current registered signal username is verified
639+
preferences.setVerifiedSignalUsername(preferences.getSignalUsername());
621640
Toast.makeText(getContext(), msg, Toast.LENGTH_SHORT).show();
622641
}
623642

src/main/res/values/strings.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@
117117
<string name="sms_dialog_message">Enter a remote phone number to send alert notifications to</string>
118118
<string name="signal_dialog_summary">A phone number to send from using Signal</string>
119119
<string name="verification_dialog_summary">Tap to verify your Signal number</string>
120+
<string name="verification_dialog_summary_verified">Signal number is verified</string>
120121
<string name="send_message_dialog">Enter a phone number to send a test alert notification message to</string>
121122
<string name="send_text_message">Test notifications…</string>
122123
<string name="service_address">Service Address</string>
@@ -177,5 +178,9 @@
177178
<string name="status_recording_video">Recording…</string>
178179
<string name="status_light">LIGHT DETECTED</string>
179180
<string name="run_disk_cleanup">Clean deleted logs from disk</string>
181+
<string name="registering_to_signal">Registering to Signal</string>
182+
<string name="signal_registration_desc">Please wait while we register you to Signal services</string>
183+
<string name="verifying_signal">Verifying</string>
184+
<string name="verifying_signal_desc">Please wait while we verify your registration to Signal services</string>
180185

181186
</resources>

0 commit comments

Comments
 (0)