diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a784f1a0d2..7606e5809a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -225,6 +225,17 @@ + + + + + + + @@ -241,13 +252,7 @@ - - - - - + startActivity(new Intent(Intent.ACTION_MAIN).setClass(this, MainActivity.class))); + toolbar.setNavigationOnClickListener(unused -> startActivity(MainActivity.clearTop(this))); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/deeplinks/DeepLinkEntryActivity.java b/app/src/main/java/org/thoughtcrime/securesms/deeplinks/DeepLinkEntryActivity.java new file mode 100644 index 0000000000..7a17c29fe7 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/deeplinks/DeepLinkEntryActivity.java @@ -0,0 +1,18 @@ +package org.thoughtcrime.securesms.deeplinks; + +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; + +import org.thoughtcrime.securesms.MainActivity; +import org.thoughtcrime.securesms.PassphraseRequiredActivity; + +public class DeepLinkEntryActivity extends PassphraseRequiredActivity { + @Override + protected void onCreate(Bundle savedInstanceState, boolean ready) { + Intent intent = MainActivity.clearTop(this); + Uri data = getIntent().getData(); + intent.setData(data); + startActivity(intent); + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/chooseadmin/ChooseNewAdminActivity.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/chooseadmin/ChooseNewAdminActivity.java index 9762e8da03..7820d734e5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/chooseadmin/ChooseNewAdminActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/chooseadmin/ChooseNewAdminActivity.java @@ -112,7 +112,7 @@ public final class ChooseNewAdminActivity extends PassphraseRequiredActivity { if (updateResult.isSuccess()) { String title = Recipient.externalGroupExact(this, groupId).getDisplayName(this); Toast.makeText(this, getString(R.string.ChooseNewAdminActivity_you_left, title), Toast.LENGTH_LONG).show(); - startActivity(new Intent(this, MainActivity.class)); + startActivity(MainActivity.clearTop(this)); finish(); } else { done.setClickable(true); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/managegroup/ManageGroupFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/managegroup/ManageGroupFragment.java index 66dc49eecb..64117b5060 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/managegroup/ManageGroupFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/managegroup/ManageGroupFragment.java @@ -264,7 +264,7 @@ public class ManageGroupFragment extends LoggingFragment { }); leaveGroup.setVisibility(groupId.isPush() ? View.VISIBLE : View.GONE); - leaveGroup.setOnClickListener(v -> LeaveGroupDialog.handleLeavePushGroup(requireActivity(), groupId.requirePush(), () -> startActivity(new Intent(requireActivity(), MainActivity.class)))); + leaveGroup.setOnClickListener(v -> LeaveGroupDialog.handleLeavePushGroup(requireActivity(), groupId.requirePush(), () -> startActivity(MainActivity.clearTop(context)))); viewModel.getDisappearingMessageTimer().observe(getViewLifecycleOwner(), string -> disappearingMessages.setText(string)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDecryptMessageJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDecryptMessageJob.java index 27984b8b5f..3240a13f64 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDecryptMessageJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDecryptMessageJob.java @@ -146,7 +146,7 @@ public final class PushDecryptMessageJob extends BaseJob { .setCategory(NotificationCompat.CATEGORY_MESSAGE) .setContentTitle(context.getString(R.string.PushDecryptJob_new_locked_message)) .setContentText(context.getString(R.string.PushDecryptJob_unlock_to_view_pending_messages)) - .setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0)) + .setContentIntent(PendingIntent.getActivity(context, 0, MainActivity.clearTop(context), 0)) .setDefaults(NotificationCompat.DEFAULT_SOUND | NotificationCompat.DEFAULT_VIBRATE) .build()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/MultipleRecipientNotificationBuilder.java b/app/src/main/java/org/thoughtcrime/securesms/notifications/MultipleRecipientNotificationBuilder.java index 3fbe38a3c2..f9ebfa8304 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/MultipleRecipientNotificationBuilder.java +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/MultipleRecipientNotificationBuilder.java @@ -30,7 +30,7 @@ public class MultipleRecipientNotificationBuilder extends AbstractNotificationBu setSmallIcon(R.drawable.ic_notification); setContentTitle(context.getString(R.string.app_name)); // TODO [greyson] Navigation - setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0)); + setContentIntent(PendingIntent.getActivity(context, 0, MainActivity.clearTop(context), 0)); setCategory(NotificationCompat.CATEGORY_MESSAGE); setGroupSummary(true); diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/PendingMessageNotificationBuilder.java b/app/src/main/java/org/thoughtcrime/securesms/notifications/PendingMessageNotificationBuilder.java index 4bb6c21a11..c07230d8fe 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/PendingMessageNotificationBuilder.java +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/PendingMessageNotificationBuilder.java @@ -18,9 +18,6 @@ public class PendingMessageNotificationBuilder extends AbstractNotificationBuild public PendingMessageNotificationBuilder(Context context, NotificationPrivacyPreference privacy) { super(context, privacy); - // TODO [greyson] Navigation - Intent intent = new Intent(context, MainActivity.class); - setSmallIcon(R.drawable.ic_notification); setColor(context.getResources().getColor(R.color.core_ultramarine)); setCategory(NotificationCompat.CATEGORY_MESSAGE); @@ -29,7 +26,8 @@ public class PendingMessageNotificationBuilder extends AbstractNotificationBuild setContentText(context.getString(R.string.MessageNotifier_open_signal_to_check_for_recent_notifications)); setTicker(context.getString(R.string.MessageNotifier_open_signal_to_check_for_recent_notifications)); - setContentIntent(PendingIntent.getActivity(context, 0, intent, 0)); + // TODO [greyson] Navigation + setContentIntent(PendingIntent.getActivity(context, 0, MainActivity.clearTop(context), 0)); setAutoCancel(true); setAlarms(null, RecipientDatabase.VibrateState.DEFAULT); diff --git a/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreActivity.java b/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreActivity.java index f871a7f51e..0b1e9da179 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreActivity.java @@ -29,7 +29,7 @@ public final class PinRestoreActivity extends AppCompatActivity { } void navigateToPinCreation() { - final Intent main = new Intent(this, MainActivity.class); + final Intent main = MainActivity.clearTop(this); final Intent createPin = CreateKbsPinActivity.getIntentForPinCreate(this); final Intent chained = PassphraseRequiredActivity.chainIntent(createPin, main); diff --git a/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreEntryFragment.java b/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreEntryFragment.java index f78c92c788..356b106d3e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreEntryFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreEntryFragment.java @@ -231,7 +231,7 @@ public class PinRestoreEntryFragment extends LoggingFragment { Activity activity = requireActivity(); if (Recipient.self().getProfileName().isEmpty() || !AvatarHelper.hasAvatar(activity, Recipient.self().getId())) { - final Intent main = new Intent(activity, MainActivity.class); + final Intent main = MainActivity.clearTop(activity); final Intent profile = EditProfileActivity.getIntentForUserProfile(activity); profile.putExtra("next_intent", main); @@ -239,7 +239,7 @@ public class PinRestoreEntryFragment extends LoggingFragment { } else { RegistrationUtil.maybeMarkRegistrationComplete(requireContext()); ApplicationDependencies.getJobManager().add(new ProfileUploadJob()); - startActivity(new Intent(activity, MainActivity.class)); + startActivity(MainActivity.clearTop(activity)); } activity.finish(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationCompleteFragment.java b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationCompleteFragment.java index d87ced1787..17fc98a524 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationCompleteFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationCompleteFragment.java @@ -35,7 +35,7 @@ public final class RegistrationCompleteFragment extends BaseRegistrationFragment if (SignalStore.storageServiceValues().needsAccountRestore()) { activity.startActivity(new Intent(activity, PinRestoreActivity.class)); } else if (!isReregister()) { - final Intent main = new Intent(activity, MainActivity.class); + final Intent main = MainActivity.clearTop(activity); final Intent profile = EditProfileActivity.getIntentForUserProfile(activity); Intent kbs = CreateKbsPinActivity.getIntentForPinCreate(requireContext()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/ApplicationMigrationService.java b/app/src/main/java/org/thoughtcrime/securesms/service/ApplicationMigrationService.java index 0f63c9501c..81e9184976 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/ApplicationMigrationService.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/ApplicationMigrationService.java @@ -136,7 +136,7 @@ public class ApplicationMigrationService extends Service builder.setOngoing(true); builder.setProgress(100, 0, false); // TODO [greyson] Navigation - builder.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0)); + builder.setContentIntent(PendingIntent.getActivity(this, 0, MainActivity.clearTop(this), 0)); stopForeground(true); startForeground(NotificationIds.APPLICATION_MIGRATION, builder.build()); @@ -188,7 +188,7 @@ public class ApplicationMigrationService extends Service builder.setContentTitle(context.getString(R.string.ApplicationMigrationService_import_complete)); builder.setContentText(context.getString(R.string.ApplicationMigrationService_system_database_import_is_complete)); // TODO [greyson] Navigation - builder.setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0)); + builder.setContentIntent(PendingIntent.getActivity(context, 0, MainActivity.clearTop(context), 0)); builder.setWhen(System.currentTimeMillis()); builder.setDefaults(Notification.DEFAULT_VIBRATE); builder.setAutoCancel(true); diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/GenericForegroundService.java b/app/src/main/java/org/thoughtcrime/securesms/service/GenericForegroundService.java index cfc0599b68..69098fea89 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/GenericForegroundService.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/GenericForegroundService.java @@ -108,7 +108,7 @@ public final class GenericForegroundService extends Service { .setSmallIcon(active.iconRes) .setContentTitle(active.title) .setProgress(active.progressMax, active.progress, active.indeterminate) - .setContentIntent(PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0)) + .setContentIntent(PendingIntent.getActivity(this, 0, MainActivity.clearTop(this), 0)) .build()); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/KeyCachingService.java b/app/src/main/java/org/thoughtcrime/securesms/service/KeyCachingService.java index 24156bec5d..8b415c78fd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/KeyCachingService.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/KeyCachingService.java @@ -287,9 +287,7 @@ public class KeyCachingService extends Service { private PendingIntent buildLaunchIntent() { // TODO [greyson] Navigation - Intent intent = new Intent(this, MainActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - return PendingIntent.getActivity(getApplicationContext(), 0, intent, 0); + return PendingIntent.getActivity(getApplicationContext(), 0, MainActivity.clearTop(this), 0); } private static PendingIntent buildExpirationPendingIntent(@NonNull Context context) { diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 2c60ca3594..4d15cd5f65 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -2,6 +2,15 @@ + +