From fa7346f79b6233abba80bb2c6d82293a507c80fe Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Mon, 14 Dec 2020 18:26:07 -0400 Subject: [PATCH] Add group calling tooltip and megaphone. --- .../conversation/ConversationActivity.java | 24 ++++++++++++++++++ .../ConversationListFragment.java | 1 + .../keyvalue/MiscellaneousValues.java | 12 ++++----- .../securesms/keyvalue/TooltipValues.java | 20 +++++++++++++-- .../megaphone/MegaphoneRepository.java | 1 + .../securesms/megaphone/Megaphones.java | 23 ++++++++++++++++- .../webrtc/GroupPreJoinActionProcessor.java | 2 ++ .../ic_group_calls_megaphone.webp | Bin 0 -> 3658 bytes .../ic_group_calls_megaphone.webp | Bin 0 -> 7838 bytes .../ic_group_calls_megaphone.webp | Bin 0 -> 13106 bytes app/src/main/res/values/colors.xml | 2 ++ app/src/main/res/values/strings.xml | 5 ++++ 12 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 app/src/main/res/drawable-mdpi/ic_group_calls_megaphone.webp create mode 100644 app/src/main/res/drawable-xhdpi/ic_group_calls_megaphone.webp create mode 100644 app/src/main/res/drawable-xxhdpi/ic_group_calls_megaphone.webp diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java index 3fca08669a..a97ef7323d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -374,6 +374,7 @@ public class ConversationActivity extends PassphraseRequiredActivity private View cancelJoinRequest; private Stub mentionsSuggestions; private MaterialButton joinGroupCallButton; + private boolean callingTooltipShown; private LinkPreviewViewModel linkPreviewViewModel; private ConversationSearchViewModel searchViewModel; @@ -830,6 +831,7 @@ public class ConversationActivity extends PassphraseRequiredActivity if (groupCallViewModel != null && Boolean.TRUE.equals(groupCallViewModel.hasActiveGroupCall().getValue())) { hideMenuItem(menu, R.id.menu_video_secure); } + showGroupCallingTooltip(); } inflater.inflate(R.menu.conversation_group_options, menu); @@ -2137,6 +2139,28 @@ public class ConversationActivity extends PassphraseRequiredActivity groupCallViewModel.groupCallHasCapacity().observe(this, hasCapacity -> joinGroupCallButton.setText(hasCapacity ? R.string.ConversationActivity_join : R.string.ConversationActivity_full)); } + private void showGroupCallingTooltip() { + if (!FeatureFlags.groupCalling() || !SignalStore.tooltips().shouldShowGroupCallingTooltip() || callingTooltipShown) { + return; + } + + View anchor = findViewById(R.id.menu_video_secure); + if (anchor == null) { + Log.w(TAG, "Video Call tooltip anchor is null. Skipping tooltip..."); + return; + } + + callingTooltipShown = true; + + SignalStore.tooltips().markGroupCallSpeakerViewSeen(); + TooltipPopup.forTarget(anchor) + .setBackgroundTint(ContextCompat.getColor(this, R.color.signal_accent_green)) + .setTextColor(getResources().getColor(R.color.core_white)) + .setText(R.string.ConversationActivity__tap_here_to_start_a_group_call) + .setOnDismissListener(() -> SignalStore.tooltips().markGroupCallingTooltipSeen()) + .show(TooltipPopup.POSITION_BELOW); + } + private void showStickerIntroductionTooltip() { TextSecurePreferences.setMediaKeyboardMode(this, MediaKeyboardMode.STICKER); inputPanel.setMediaKeyboardToggleMode(true); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java index 47be5f279a..efc6652659 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java @@ -103,6 +103,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.events.ReminderUpdateEvent; import org.thoughtcrime.securesms.insights.InsightsLauncher; import org.thoughtcrime.securesms.jobs.ServiceOutageDetectionJob; +import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.lock.v2.CreateKbsPinActivity; import org.thoughtcrime.securesms.mediasend.MediaSendActivity; import org.thoughtcrime.securesms.megaphone.Megaphone; diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/MiscellaneousValues.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/MiscellaneousValues.java index b64475d4a2..c0bb184ff3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/MiscellaneousValues.java +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/MiscellaneousValues.java @@ -4,12 +4,12 @@ import androidx.annotation.NonNull; public final class MiscellaneousValues extends SignalStoreValues { - private static final String LAST_PREKEY_REFRESH_TIME = "last_prekey_refresh_time"; - private static final String MESSAGE_REQUEST_ENABLE_TIME = "message_request_enable_time"; - private static final String LAST_PROFILE_REFRESH_TIME = "misc.last_profile_refresh_time"; - private static final String LAST_GV1_ROUTINE_MIGRATION_TIME = "misc.last_gv1_routine_migration_time"; - private static final String USERNAME_SHOW_REMINDER = "username.show.reminder"; - private static final String CLIENT_DEPRECATED = "misc.client_deprecated"; + private static final String LAST_PREKEY_REFRESH_TIME = "last_prekey_refresh_time"; + private static final String MESSAGE_REQUEST_ENABLE_TIME = "message_request_enable_time"; + private static final String LAST_PROFILE_REFRESH_TIME = "misc.last_profile_refresh_time"; + private static final String LAST_GV1_ROUTINE_MIGRATION_TIME = "misc.last_gv1_routine_migration_time"; + private static final String USERNAME_SHOW_REMINDER = "username.show.reminder"; + private static final String CLIENT_DEPRECATED = "misc.client_deprecated"; MiscellaneousValues(@NonNull KeyValueStore store) { super(store); diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/TooltipValues.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/TooltipValues.java index 6c0b578a09..33a2fc6b4c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/TooltipValues.java +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/TooltipValues.java @@ -4,8 +4,12 @@ import androidx.annotation.NonNull; public class TooltipValues extends SignalStoreValues { - private static final String BLUR_HUD_ICON = "tooltip.blur_hud_icon"; - private static final String GROUP_CALL_SPEAKER_VIEW = "tooltip.group_call_speaker_view"; + private static final int GROUP_CALLING_MAX_TOOLTIP_DISPLAY_COUNT = 3; + + private static final String BLUR_HUD_ICON = "tooltip.blur_hud_icon"; + private static final String GROUP_CALL_SPEAKER_VIEW = "tooltip.group_call_speaker_view"; + private static final String GROUP_CALL_TOOLTIP_DISPLAY_COUNT = "tooltip.group_call_tooltip_display_count"; + TooltipValues(@NonNull KeyValueStore store) { super(store); @@ -30,4 +34,16 @@ public class TooltipValues extends SignalStoreValues { public void markGroupCallSpeakerViewSeen() { putBoolean(GROUP_CALL_SPEAKER_VIEW, true); } + + public boolean shouldShowGroupCallingTooltip() { + return getInteger(GROUP_CALL_TOOLTIP_DISPLAY_COUNT, 0) < GROUP_CALLING_MAX_TOOLTIP_DISPLAY_COUNT; + } + + public void markGroupCallingTooltipSeen() { + putInteger(GROUP_CALL_TOOLTIP_DISPLAY_COUNT, getInteger(GROUP_CALL_TOOLTIP_DISPLAY_COUNT, 0) + 1); + } + + public void markGroupCallingLobbyEntered() { + putInteger(GROUP_CALL_TOOLTIP_DISPLAY_COUNT, Integer.MAX_VALUE); + } } 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 fbf124ddfe..67c905597a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/megaphone/MegaphoneRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/megaphone/MegaphoneRepository.java @@ -54,6 +54,7 @@ public class MegaphoneRepository { database.markFinished(Event.MESSAGE_REQUESTS); database.markFinished(Event.LINK_PREVIEWS); database.markFinished(Event.RESEARCH); + database.markFinished(Event.GROUP_CALLING); 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 54a7a2e85d..cdb48bf941 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java +++ b/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java @@ -92,6 +92,7 @@ public final class Megaphones { put(Event.CLIENT_DEPRECATED, SignalStore.misc().isClientDeprecated() ? ALWAYS : NEVER); put(Event.RESEARCH, shouldShowResearchMegaphone(context) ? ShowForDurationSchedule.showForDays(7) : NEVER); put(Event.DONATE, shouldShowDonateMegaphone(context) ? ShowForDurationSchedule.showForDays(7) : NEVER); + put(Event.GROUP_CALLING, shouldShowGroupCallingMegaphone() ? ALWAYS : NEVER); }}; } @@ -113,6 +114,8 @@ public final class Megaphones { return buildResearchMegaphone(context); case DONATE: return buildDonateMegaphone(context); + case GROUP_CALLING: + return buildGroupCallingMegaphone(context); default: throw new IllegalArgumentException("Event not handled!"); } @@ -239,6 +242,19 @@ public final class Megaphones { .build(); } + private static @NonNull Megaphone buildGroupCallingMegaphone(@NonNull Context context) { + return new Megaphone.Builder(Event.GROUP_CALLING, Megaphone.Style.BASIC) + .disableSnooze() + .setTitle(R.string.GroupCallingMegaphone__introducing_group_calls) + .setBody(R.string.GroupCallingMegaphone__open_a_new_group_to_start) + .setImage(R.drawable.ic_group_calls_megaphone) + .setActionButton(android.R.string.ok, (megaphone, controller) -> { + controller.onMegaphoneCompleted(megaphone.getEvent()); + }) + .setPriority(Megaphone.Priority.DEFAULT) + .build(); + } + private static boolean shouldShowMessageRequestsMegaphone() { return Recipient.self().getProfileName() == ProfileName.EMPTY; } @@ -255,6 +271,10 @@ public final class Megaphones { return TextSecurePreferences.wereLinkPreviewsEnabled(context) && !SignalStore.settings().isLinkPreviewsEnabled(); } + private static boolean shouldShowGroupCallingMegaphone() { + return FeatureFlags.groupCalling(); + } + public enum Event { REACTIONS("reactions"), PINS_FOR_ALL("pins_for_all"), @@ -263,7 +283,8 @@ public final class Megaphones { LINK_PREVIEWS("link_previews"), CLIENT_DEPRECATED("client_deprecated"), RESEARCH("research"), - DONATE("donate"); + DONATE("donate"), + GROUP_CALLING("group_calling"); private final String key; diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupPreJoinActionProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupPreJoinActionProcessor.java index c7025442d4..7bcde5a6b1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupPreJoinActionProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupPreJoinActionProcessor.java @@ -15,6 +15,7 @@ import org.thoughtcrime.securesms.components.webrtc.BroadcastVideoSink; import org.thoughtcrime.securesms.events.CallParticipant; import org.thoughtcrime.securesms.events.CallParticipantId; import org.thoughtcrime.securesms.events.WebRtcViewModel; +import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.ringrtc.RemotePeer; import org.thoughtcrime.securesms.service.webrtc.state.WebRtcServiceState; @@ -57,6 +58,7 @@ public class GroupPreJoinActionProcessor extends GroupActionProcessor { return groupCallFailure(currentState, "Unable to connect to group call", e); } + SignalStore.tooltips().markGroupCallingLobbyEntered(); return currentState.builder() .changeCallInfoState() .groupCall(groupCall) diff --git a/app/src/main/res/drawable-mdpi/ic_group_calls_megaphone.webp b/app/src/main/res/drawable-mdpi/ic_group_calls_megaphone.webp new file mode 100644 index 0000000000000000000000000000000000000000..5f185d35e81e108c7d6513319e9f965b22bef694 GIT binary patch literal 3658 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_group_calls_megaphone.webp b/app/src/main/res/drawable-xhdpi/ic_group_calls_megaphone.webp new file mode 100644 index 0000000000000000000000000000000000000000..ec7c15bfb0df65ad7347eda9882f32be1a227d70 GIT binary patch literal 7838 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_group_calls_megaphone.webp b/app/src/main/res/drawable-xxhdpi/ic_group_calls_megaphone.webp new file mode 100644 index 0000000000000000000000000000000000000000..c48fae3ee496b1b7824b8f8f77d87653ac7d933e GIT binary patch literal 13106 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 M*2Obk+lqYv0AZ&8aR2}S literal 0 HcmV?d00001 diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 56bc1be2b3..2f01abc2c9 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -3,6 +3,8 @@ @color/core_white @color/core_black + #4CAF50 + #0D000000 #18000000 #26000000 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5786554bf8..4ca1e8c594 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -243,6 +243,7 @@ Recipient is not a valid SMS or email address! Message is empty! Group members + Tap here to start a group call Invalid recipient! Added to home screen @@ -484,6 +485,10 @@ Donate No Thanks + + Introducing Group Calls + Open a New Group to start a free encrypted group call + Optimize for missing Play Services This device does not support Play Services. Tap to disable system battery optimizations that prevent Signal from retrieving messages while inactive.