Allow contact support from registration lock and screen lock screens.
This commit is contained in:
parent
589f345825
commit
dcfa7e3b36
4 changed files with 48 additions and 5 deletions
|
@ -57,8 +57,10 @@ import org.thoughtcrime.securesms.crypto.InvalidPassphraseException;
|
|||
import org.thoughtcrime.securesms.crypto.MasterSecret;
|
||||
import org.thoughtcrime.securesms.crypto.MasterSecretUtil;
|
||||
import org.thoughtcrime.securesms.logsubmit.SubmitDebugLogActivity;
|
||||
import org.thoughtcrime.securesms.util.CommunicationActions;
|
||||
import org.thoughtcrime.securesms.util.DynamicIntroTheme;
|
||||
import org.thoughtcrime.securesms.util.DynamicLanguage;
|
||||
import org.thoughtcrime.securesms.util.SupportEmailUtil;
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
|
||||
/**
|
||||
|
@ -137,7 +139,7 @@ public class PassphrasePromptActivity extends PassphraseActivity {
|
|||
MenuInflater inflater = this.getMenuInflater();
|
||||
menu.clear();
|
||||
|
||||
inflater.inflate(R.menu.log_submit, menu);
|
||||
inflater.inflate(R.menu.passphrase_prompt, menu);
|
||||
|
||||
super.onCreateOptionsMenu(menu);
|
||||
return true;
|
||||
|
@ -146,8 +148,12 @@ public class PassphrasePromptActivity extends PassphraseActivity {
|
|||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
super.onOptionsItemSelected(item);
|
||||
switch (item.getItemId()) {
|
||||
case R.id.menu_submit_debug_logs: handleLogSubmit(); return true;
|
||||
if (item.getItemId() == R.id.menu_submit_debug_logs) {
|
||||
handleLogSubmit();
|
||||
return true;
|
||||
} else if (item.getItemId() == R.id.menu_contact_support) {
|
||||
sendEmailToSupport();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -294,6 +300,17 @@ public class PassphrasePromptActivity extends PassphraseActivity {
|
|||
}
|
||||
}
|
||||
|
||||
private void sendEmailToSupport() {
|
||||
String body = SupportEmailUtil.generateSupportEmailBody(this,
|
||||
R.string.PassphrasePromptActivity_signal_android_lock_screen,
|
||||
null,
|
||||
null);
|
||||
CommunicationActions.openEmail(this,
|
||||
SupportEmailUtil.getSupportEmailAddress(this),
|
||||
getString(R.string.PassphrasePromptActivity_signal_android_lock_screen),
|
||||
body);
|
||||
}
|
||||
|
||||
private class PassphraseActionListener implements TextView.OnEditorActionListener {
|
||||
@Override
|
||||
public boolean onEditorAction(TextView exampleView, int actionId, KeyEvent keyEvent) {
|
||||
|
|
|
@ -29,7 +29,9 @@ import org.thoughtcrime.securesms.pin.PinRestoreRepository.TokenData;
|
|||
import org.thoughtcrime.securesms.registration.service.CodeVerificationRequest;
|
||||
import org.thoughtcrime.securesms.registration.service.RegistrationService;
|
||||
import org.thoughtcrime.securesms.registration.viewmodel.RegistrationViewModel;
|
||||
import org.thoughtcrime.securesms.util.CommunicationActions;
|
||||
import org.thoughtcrime.securesms.util.ServiceUtil;
|
||||
import org.thoughtcrime.securesms.util.SupportEmailUtil;
|
||||
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
@ -47,6 +49,7 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment {
|
|||
private TextView errorLabel;
|
||||
private TextView keyboardToggle;
|
||||
private long timeRemaining;
|
||||
private boolean isV1RegistrationLock;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
|
@ -67,9 +70,10 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment {
|
|||
|
||||
RegistrationLockFragmentArgs args = RegistrationLockFragmentArgs.fromBundle(requireArguments());
|
||||
|
||||
timeRemaining = args.getTimeRemaining();
|
||||
timeRemaining = args.getTimeRemaining();
|
||||
isV1RegistrationLock = args.getIsV1RegistrationLock();
|
||||
|
||||
if (args.getIsV1RegistrationLock()) {
|
||||
if (isV1RegistrationLock) {
|
||||
keyboardToggle.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
|
@ -117,6 +121,7 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment {
|
|||
.setTitle(R.string.RegistrationLockFragment__not_many_tries_left)
|
||||
.setMessage(getTriesRemainingDialogMessage(triesRemaining, daysRemaining))
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.setNeutralButton(R.string.PinRestoreEntryFragment_contact_support, (dialog, which) -> sendEmailToSupport())
|
||||
.show();
|
||||
}
|
||||
|
||||
|
@ -264,6 +269,7 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment {
|
|||
.setTitle(R.string.RegistrationLockFragment__forgot_your_pin)
|
||||
.setMessage(requireContext().getResources().getQuantityString(R.plurals.RegistrationLockFragment__for_your_privacy_and_security_there_is_no_way_to_recover, lockoutDays, lockoutDays))
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.setNeutralButton(R.string.PinRestoreEntryFragment_contact_support, (dialog, which) -> sendEmailToSupport())
|
||||
.show();
|
||||
}
|
||||
|
||||
|
@ -320,4 +326,18 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment {
|
|||
Navigation.findNavController(requireView()).navigate(RegistrationLockFragmentDirections.actionSuccessfulRegistration());
|
||||
});
|
||||
}
|
||||
|
||||
private void sendEmailToSupport() {
|
||||
int subject = isV1RegistrationLock ? R.string.RegistrationLockFragment__signal_registration_need_help_with_pin_for_android_v1_pin
|
||||
: R.string.RegistrationLockFragment__signal_registration_need_help_with_pin_for_android_v2_pin;
|
||||
|
||||
String body = SupportEmailUtil.generateSupportEmailBody(requireContext(),
|
||||
subject,
|
||||
null,
|
||||
null);
|
||||
CommunicationActions.openEmail(requireContext(),
|
||||
SupportEmailUtil.getSupportEmailAddress(requireContext()),
|
||||
getString(subject),
|
||||
body);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,4 +4,7 @@
|
|||
<item android:title="@string/preferences__submit_debug_log"
|
||||
android:id="@+id/menu_submit_debug_logs"
|
||||
android:icon="@android:drawable/ic_menu_upload" />
|
||||
|
||||
<item android:title="@string/PinRestoreEntryFragment_contact_support"
|
||||
android:id="@+id/menu_contact_support" />
|
||||
</menu>
|
|
@ -1278,6 +1278,7 @@
|
|||
<string name="PassphrasePromptActivity_ok_button_content_description">Submit passphrase</string>
|
||||
<string name="PassphrasePromptActivity_invalid_passphrase_exclamation">Invalid passphrase!</string>
|
||||
<string name="PassphrasePromptActivity_unlock_signal">Unlock Signal</string>
|
||||
<string name="PassphrasePromptActivity_signal_android_lock_screen">Signal Android - Lock Screen</string>
|
||||
|
||||
<!-- PlacePickerActivity -->
|
||||
<string name="PlacePickerActivity_title">Map</string>
|
||||
|
@ -2563,6 +2564,8 @@
|
|||
<string name="RegistrationLockFragment__incorrect_pin">Incorrect PIN</string>
|
||||
<string name="RegistrationLockFragment__forgot_your_pin">Forgot your PIN?</string>
|
||||
<string name="RegistrationLockFragment__not_many_tries_left">Not many tries left!</string>
|
||||
<string name="RegistrationLockFragment__signal_registration_need_help_with_pin_for_android_v1_pin">Signal Registration - Need Help with PIN for Android (v1 PIN)</string>
|
||||
<string name="RegistrationLockFragment__signal_registration_need_help_with_pin_for_android_v2_pin">Signal Registration - Need Help with PIN for Android (v2 PIN)</string>
|
||||
|
||||
<plurals name="RegistrationLockFragment__for_your_privacy_and_security_there_is_no_way_to_recover">
|
||||
<item quantity="one">For your privacy and security, there is no way to recover your PIN. If you can\'t remember your PIN, you can re-verify with SMS after %1$d day of inactivity. In this case, your account will be wiped and all content deleted.</item>
|
||||
|
|
Loading…
Add table
Reference in a new issue