diff --git a/app/src/main/java/org/thoughtcrime/securesms/megaphone/MegaphoneRepository.java b/app/src/main/java/org/thoughtcrime/securesms/megaphone/MegaphoneRepository.java
index 561b239e53..f132e2e0a6 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/megaphone/MegaphoneRepository.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/megaphone/MegaphoneRepository.java
@@ -57,6 +57,7 @@ public class MegaphoneRepository {
database.markFinished(Event.RESEARCH);
database.markFinished(Event.GROUP_CALLING);
database.markFinished(Event.CHAT_COLORS);
+ database.markFinished(Event.ADD_A_PROFILE_PHOTO);
resetDatabaseCache();
});
}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java b/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java
index 6baffd5d84..a4529178cf 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java
@@ -25,7 +25,9 @@ import org.thoughtcrime.securesms.lock.v2.CreateKbsPinActivity;
import org.thoughtcrime.securesms.lock.v2.KbsMigrationActivity;
import org.thoughtcrime.securesms.messagerequests.MessageRequestMegaphoneActivity;
import org.thoughtcrime.securesms.notifications.NotificationChannels;
+import org.thoughtcrime.securesms.profiles.AvatarHelper;
import org.thoughtcrime.securesms.profiles.ProfileName;
+import org.thoughtcrime.securesms.profiles.manage.ManageProfileActivity;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.CommunicationActions;
import org.thoughtcrime.securesms.util.FeatureFlags;
@@ -105,6 +107,7 @@ public final class Megaphones {
put(Event.ONBOARDING, shouldShowOnboardingMegaphone(context) ? ALWAYS : NEVER);
put(Event.NOTIFICATIONS, shouldShowNotificationsMegaphone(context) ? RecurringSchedule.every(TimeUnit.DAYS.toMillis(30)) : NEVER);
put(Event.CHAT_COLORS, ALWAYS);
+ put(Event.ADD_A_PROFILE_PHOTO, shouldShowAddAProfileMegaphone(context) ? ALWAYS : NEVER);
}};
}
@@ -134,6 +137,8 @@ public final class Megaphones {
return buildNotificationsMegaphone(context);
case CHAT_COLORS:
return buildChatColorsMegaphone(context);
+ case ADD_A_PROFILE_PHOTO:
+ return buildAddAProfilePhotoMegaphone(context);
default:
throw new IllegalArgumentException("Event not handled!");
}
@@ -320,6 +325,21 @@ public final class Megaphones {
.build();
}
+ private static @NonNull Megaphone buildAddAProfilePhotoMegaphone(@NonNull Context context) {
+ return new Megaphone.Builder(Event.ADD_A_PROFILE_PHOTO, Megaphone.Style.BASIC)
+ .setTitle(R.string.AddAProfilePhotoMegaphone__add_a_profile_photo)
+ .setImage(R.drawable.ic_add_a_profile_megaphone_image)
+ .setBody(R.string.AddAProfilePhotoMegaphone__choose_a_look_and_color)
+ .setActionButton(R.string.AddAProfilePhotoMegaphone__add_photo, (megaphone, listener) -> {
+ listener.onMegaphoneNavigationRequested(ManageProfileActivity.getIntentForAvatarEdit(context));
+ listener.onMegaphoneCompleted(Event.ADD_A_PROFILE_PHOTO);
+ })
+ .setSecondaryButton(R.string.AddAProfilePhotoMegaphone__not_now, (megaphone, listener) -> {
+ listener.onMegaphoneCompleted(Event.ADD_A_PROFILE_PHOTO);
+ })
+ .build();
+ }
+
private static boolean shouldShowMessageRequestsMegaphone() {
return Recipient.self().getProfileName() == ProfileName.EMPTY;
}
@@ -363,6 +383,10 @@ public final class Megaphones {
return shouldShow;
}
+ private static boolean shouldShowAddAProfileMegaphone(@NonNull Context context) {
+ return !AvatarHelper.hasAvatar(context, Recipient.self().getId());
+ }
+
public enum Event {
REACTIONS("reactions"),
PINS_FOR_ALL("pins_for_all"),
@@ -375,7 +399,8 @@ public final class Megaphones {
GROUP_CALLING("group_calling"),
ONBOARDING("onboarding"),
NOTIFICATIONS("notifications"),
- CHAT_COLORS("chat_colors");
+ CHAT_COLORS("chat_colors"),
+ ADD_A_PROFILE_PHOTO("add_a_profile_photo");
private final String key;
diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/ManageProfileActivity.java b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/ManageProfileActivity.java
index 12139b4348..c4cd90b4c6 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/ManageProfileActivity.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/ManageProfileActivity.java
@@ -25,6 +25,7 @@ public class ManageProfileActivity extends PassphraseRequiredActivity implements
private final DynamicTheme dynamicTheme = new DynamicNoActionBarTheme();
public static final String START_AT_USERNAME = "start_at_username";
+ public static final String START_AT_AVATAR = "start_at_avatar";
public static @NonNull Intent getIntent(@NonNull Context context) {
return new Intent(context, ManageProfileActivity.class);
@@ -36,6 +37,12 @@ public class ManageProfileActivity extends PassphraseRequiredActivity implements
return intent;
}
+ public static @NonNull Intent getIntentForAvatarEdit(@NonNull Context context) {
+ Intent intent = new Intent(context, ManageProfileActivity.class);
+ intent.putExtra(START_AT_AVATAR, true);
+ return intent;
+ }
+
@Override
public void onCreate(Bundle bundle, boolean ready) {
dynamicTheme.onCreate(this);
@@ -52,6 +59,11 @@ public class ManageProfileActivity extends PassphraseRequiredActivity implements
NavDirections action = ManageProfileFragmentDirections.actionManageUsername();
Navigation.findNavController(this, R.id.nav_host_fragment).navigate(action);
}
+
+ if (extras != null && extras.getBoolean(START_AT_AVATAR, false)) {
+ NavDirections action = ManageProfileFragmentDirections.actionManageProfileFragmentToAvatarPicker(null, null);
+ Navigation.findNavController(this, R.id.nav_host_fragment).navigate(action);
+ }
}
}
diff --git a/app/src/main/res/drawable/ic_add_a_profile_megaphone_image.xml b/app/src/main/res/drawable/ic_add_a_profile_megaphone_image.xml
new file mode 100644
index 0000000000..f65a4a5630
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_a_profile_megaphone_image.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c38ed5118f..d691d72604 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -3533,6 +3533,12 @@
Appearance
Not now
+
+ Add a profile photo
+ Choose a look and color or customize your initials.
+ Not now
+ Add photo
+
Emoji
Open emoji search