Fix reaction display issues.

This commit is contained in:
Alex Hart 2019-12-04 09:59:27 -04:00 committed by Greyson Parrelli
parent 6558eae032
commit 244db437cb
37 changed files with 128 additions and 64 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<org.thoughtcrime.securesms.conversation.ConversationReactionOverlay <org.thoughtcrime.securesms.conversation.ConversationReactionOverlay xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/conversation_reaction_scrubber" android:id="@+id/conversation_reaction_scrubber"
@ -23,17 +22,18 @@
<View <View
android:id="@+id/conversation_reaction_scrubber_background" android:id="@+id/conversation_reaction_scrubber_background"
android:layout_width="320dp" android:layout_width="@dimen/reaction_scrubber_width"
android:layout_height="?attr/actionBarSize" android:layout_height="?attr/actionBarSize"
android:layout_marginTop="40dp" android:layout_marginTop="40dp"
android:layout_marginBottom="40dp" android:layout_marginBottom="40dp"
android:alpha="0" android:alpha="0"
tools:alpha="1"
android:background="?reactions_overlay_scrubber_background" android:background="?reactions_overlay_scrubber_background"
android:elevation="4dp" /> android:elevation="4dp" />
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/conversation_reaction_scrubber_foreground" android:id="@+id/conversation_reaction_scrubber_foreground"
android:layout_width="320dp" android:layout_width="@dimen/reaction_scrubber_width"
android:layout_height="@dimen/conversation_reaction_scrubber_height" android:layout_height="@dimen/conversation_reaction_scrubber_height"
android:clipToPadding="false" android:clipToPadding="false"
android:elevation="4dp"> android:elevation="4dp">
@ -49,103 +49,103 @@
app:layout_constraintRight_toRightOf="@id/reaction_3" app:layout_constraintRight_toRightOf="@id/reaction_3"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<org.thoughtcrime.securesms.components.emoji.EmojiTextView <ImageView
android:id="@+id/reaction_1" android:id="@+id/reaction_1"
android:layout_width="32dp" android:layout_width="32dp"
android:layout_height="48dp" android:layout_height="48dp"
android:alpha="0" android:alpha="0"
android:gravity="center" android:src="@drawable/reaction_scrubber_love_48"
android:singleLine="true"
android:textSize="@dimen/conversation_reaction_picker_emoji_text_size"
android:translationY="@dimen/reaction_scrubber_anim_start_translation_y" android:translationY="@dimen/reaction_scrubber_anim_start_translation_y"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/reaction_2" app:layout_constraintEnd_toStartOf="@id/reaction_2"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
tools:alpha="1"
tools:translationY="0dp" />
<org.thoughtcrime.securesms.components.emoji.EmojiTextView <ImageView
android:id="@+id/reaction_2" android:id="@+id/reaction_2"
android:layout_width="32dp" android:layout_width="32dp"
android:layout_height="48dp" android:layout_height="48dp"
android:alpha="0" android:alpha="0"
android:gravity="center" android:src="@drawable/reaction_scrubber_like_48"
android:singleLine="true"
android:textSize="@dimen/conversation_reaction_picker_emoji_text_size"
android:translationY="@dimen/reaction_scrubber_anim_start_translation_y" android:translationY="@dimen/reaction_scrubber_anim_start_translation_y"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/reaction_3" app:layout_constraintEnd_toStartOf="@id/reaction_3"
app:layout_constraintStart_toEndOf="@id/reaction_1" app:layout_constraintStart_toEndOf="@id/reaction_1"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
tools:alpha="1"
tools:translationY="0dp" />
<org.thoughtcrime.securesms.components.emoji.EmojiTextView <ImageView
android:id="@+id/reaction_3" android:id="@+id/reaction_3"
android:layout_width="32dp" android:layout_width="32dp"
android:layout_height="48dp" android:layout_height="48dp"
android:alpha="0" android:alpha="0"
android:gravity="center" android:src="@drawable/reaction_scrubber_dislike_48"
android:singleLine="true"
android:textSize="@dimen/conversation_reaction_picker_emoji_text_size"
android:translationY="@dimen/reaction_scrubber_anim_start_translation_y" android:translationY="@dimen/reaction_scrubber_anim_start_translation_y"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/reaction_4" app:layout_constraintEnd_toStartOf="@id/reaction_4"
app:layout_constraintStart_toEndOf="@id/reaction_2" app:layout_constraintStart_toEndOf="@id/reaction_2"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
tools:alpha="1"
tools:translationY="0dp" />
<org.thoughtcrime.securesms.components.emoji.EmojiTextView <ImageView
android:id="@+id/reaction_4" android:id="@+id/reaction_4"
android:layout_width="32dp" android:layout_width="32dp"
android:layout_height="48dp" android:layout_height="48dp"
android:alpha="0" android:alpha="0"
android:gravity="center" android:src="@drawable/reaction_scrubber_haha_48"
android:singleLine="true"
android:textSize="@dimen/conversation_reaction_picker_emoji_text_size"
android:translationY="@dimen/reaction_scrubber_anim_start_translation_y" android:translationY="@dimen/reaction_scrubber_anim_start_translation_y"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/reaction_5" app:layout_constraintEnd_toStartOf="@id/reaction_5"
app:layout_constraintStart_toEndOf="@id/reaction_3" app:layout_constraintStart_toEndOf="@id/reaction_3"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
tools:alpha="1"
tools:translationY="0dp" />
<org.thoughtcrime.securesms.components.emoji.EmojiTextView <ImageView
android:id="@+id/reaction_5" android:id="@+id/reaction_5"
android:layout_width="32dp" android:layout_width="32dp"
android:layout_height="48dp" android:layout_height="48dp"
android:alpha="0" android:alpha="0"
android:gravity="center" android:src="@drawable/reaction_scrubber_wow_48"
android:singleLine="true"
android:textSize="@dimen/conversation_reaction_picker_emoji_text_size"
android:translationY="@dimen/reaction_scrubber_anim_start_translation_y" android:translationY="@dimen/reaction_scrubber_anim_start_translation_y"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/reaction_6" app:layout_constraintEnd_toStartOf="@id/reaction_6"
app:layout_constraintStart_toEndOf="@id/reaction_4" app:layout_constraintStart_toEndOf="@id/reaction_4"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
tools:alpha="1"
tools:translationY="0dp" />
<org.thoughtcrime.securesms.components.emoji.EmojiTextView <ImageView
android:id="@+id/reaction_6" android:id="@+id/reaction_6"
android:layout_width="32dp" android:layout_width="32dp"
android:layout_height="48dp" android:layout_height="48dp"
android:alpha="0" android:alpha="0"
android:gravity="center" android:src="@drawable/reaction_scrubber_sad_48"
android:singleLine="true"
android:textSize="@dimen/conversation_reaction_picker_emoji_text_size"
android:translationY="@dimen/reaction_scrubber_anim_start_translation_y" android:translationY="@dimen/reaction_scrubber_anim_start_translation_y"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/reaction_7" app:layout_constraintEnd_toStartOf="@id/reaction_7"
app:layout_constraintStart_toEndOf="@id/reaction_5" app:layout_constraintStart_toEndOf="@id/reaction_5"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
tools:alpha="1"
tools:translationY="0dp" />
<org.thoughtcrime.securesms.components.emoji.EmojiTextView <ImageView
android:id="@+id/reaction_7" android:id="@+id/reaction_7"
android:layout_width="32dp" android:layout_width="32dp"
android:layout_height="48dp" android:layout_height="48dp"
android:alpha="0" android:alpha="0"
android:gravity="center" android:src="@drawable/reaction_scrubber_angry_48"
android:singleLine="true"
android:textSize="@dimen/conversation_reaction_picker_emoji_text_size"
android:translationY="@dimen/reaction_scrubber_anim_start_translation_y" android:translationY="@dimen/reaction_scrubber_anim_start_translation_y"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/reaction_6" app:layout_constraintStart_toEndOf="@id/reaction_6"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
tools:alpha="1"
tools:translationY="0dp" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</org.thoughtcrime.securesms.conversation.ConversationReactionOverlay> </org.thoughtcrime.securesms.conversation.ConversationReactionOverlay>

View File

@ -35,4 +35,15 @@
<item name="android:navigationBarColor">@color/media_preview_bar_background</item> <item name="android:navigationBarColor">@color/media_preview_bar_background</item>
</style> </style>
<style name="Theme.Design.Light.BottomSheetDialog.Fixed">
<item name="android:windowIsFloating">false</item>
<item name="android:statusBarColor">@color/transparent</item>
</style>
<style name="Theme.Design.BottomSheetDialog.Fixed">
<item name="android:windowIsFloating">false</item>
<item name="android:statusBarColor">@color/core_grey_95</item>
<item name="android:navigationBarColor">@color/transparent</item>
</style>
</resources> </resources>

View File

@ -33,4 +33,18 @@
<item name="android:windowLightStatusBar">false</item> <item name="android:windowLightStatusBar">false</item>
<item name="android:navigationBarColor">@color/core_grey_95</item> <item name="android:navigationBarColor">@color/core_grey_95</item>
</style> </style>
<style name="Theme.Design.Light.BottomSheetDialog.Fixed">
<item name="android:windowIsFloating">false</item>
<item name="android:windowLightStatusBar">false</item>
<item name="android:statusBarColor">@color/transparent</item>
</style>
<style name="Theme.Design.BottomSheetDialog.Fixed">
<item name="android:windowIsFloating">false</item>
<item name="android:navigationBarColor">@color/core_grey_95</item>
<item name="android:statusBarColor">@color/transparent</item>
<item name="android:windowLightStatusBar">false</item>
</style>
</resources> </resources>

View File

@ -42,4 +42,20 @@
<item name="android:navigationBarColor">@color/core_grey_95</item> <item name="android:navigationBarColor">@color/core_grey_95</item>
<item name="android:windowLightNavigationBar">false</item> <item name="android:windowLightNavigationBar">false</item>
</style> </style>
<style name="Theme.Design.Light.BottomSheetDialog.Fixed">
<item name="android:windowIsFloating">false</item>
<item name="android:windowLightStatusBar">false</item>
<item name="android:statusBarColor">@color/transparent</item>
<item name="android:navigationBarColor">@color/white</item>
<item name="android:windowLightNavigationBar">true</item>
</style>
<style name="Theme.Design.BottomSheetDialog.Fixed">
<item name="android:windowIsFloating">false</item>
<item name="android:statusBarColor">@color/transparent</item>
<item name="android:windowLightStatusBar">false</item>
<item name="android:navigationBarColor">@color/core_black</item>
<item name="android:windowLightNavigationBar">false</item>
</style>
</resources> </resources>

View File

@ -70,10 +70,9 @@
<dimen name="conversation_vertical_message_spacing_default">8dp</dimen> <dimen name="conversation_vertical_message_spacing_default">8dp</dimen>
<dimen name="conversation_vertical_message_spacing_collapse">1dp</dimen> <dimen name="conversation_vertical_message_spacing_collapse">1dp</dimen>
<dimen name="conversation_reaction_picker_emoji_text_size">28dp</dimen>
<dimen name="reaction_scrubber_anim_start_translation_y">25dp</dimen> <dimen name="reaction_scrubber_anim_start_translation_y">25dp</dimen>
<dimen name="reaction_scrubber_anim_end_translation_y">0dp</dimen> <dimen name="reaction_scrubber_anim_end_translation_y">0dp</dimen>
<dimen name="reaction_scrubber_width">320dp</dimen>
<dimen name="conversation_item_reply_size">20dp</dimen> <dimen name="conversation_item_reply_size">20dp</dimen>
<dimen name="conversation_item_avatar_size">28dp</dimen> <dimen name="conversation_item_avatar_size">28dp</dimen>

View File

@ -689,4 +689,12 @@
<item name="android:windowLightNavigationBar" tools:ignore="NewApi">false</item> <item name="android:windowLightNavigationBar" tools:ignore="NewApi">false</item>
</style> </style>
<style name="Theme.Design.Light.BottomSheetDialog.Fixed">
<item name="android:windowIsFloating">false</item>
</style>
<style name="Theme.Design.BottomSheetDialog.Fixed">
<item name="android:windowIsFloating">false</item>
</style>
</resources> </resources>

View File

@ -7,7 +7,10 @@ import android.content.Context;
import android.graphics.PointF; import android.graphics.PointF;
import android.graphics.Rect; import android.graphics.Rect;
import android.os.Build; import android.os.Build;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.HapticFeedbackConstants;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
@ -36,6 +39,8 @@ import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.database.model.ReactionRecord; import org.thoughtcrime.securesms.database.model.ReactionRecord;
import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.MessageRecordUtil; import org.thoughtcrime.securesms.util.MessageRecordUtil;
import org.thoughtcrime.securesms.util.ServiceUtil;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.thoughtcrime.securesms.util.ThemeUtil; import org.thoughtcrime.securesms.util.ThemeUtil;
import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.ViewUtil; import org.thoughtcrime.securesms.util.ViewUtil;
@ -77,6 +82,7 @@ public final class ConversationReactionOverlay extends RelativeLayout {
private float distanceFromTouchDownPointToBottomOfScrubberDeadZone; private float distanceFromTouchDownPointToBottomOfScrubberDeadZone;
private int scrubberDistanceFromTouchDown; private int scrubberDistanceFromTouchDown;
private int scrubberHeight; private int scrubberHeight;
private int scrubberWidth;
private int halfActionBarHeight; private int halfActionBarHeight;
private int selectedVerticalTranslation; private int selectedVerticalTranslation;
private int scrubberHorizontalMargin; private int scrubberHorizontalMargin;
@ -111,11 +117,8 @@ public final class ConversationReactionOverlay extends RelativeLayout {
toolbar.setNavigationOnClickListener(view -> hide()); toolbar.setNavigationOnClickListener(view -> hide());
emojiViews = Stream.of(ReactionEmoji.values()) emojiViews = Stream.of(ReactionEmoji.values())
.map(e -> { .map(e -> findViewById(e.viewId))
EmojiTextView view = findViewById(e.viewId); .toArray(View[]::new);
view.setText(e.emoji);
return view;
}).toArray(View[]::new);
distanceFromTouchDownPointToTopOfScrubberDeadZone = getResources().getDimensionPixelSize(R.dimen.conversation_reaction_scrub_deadzone_distance_from_touch_top); distanceFromTouchDownPointToTopOfScrubberDeadZone = getResources().getDimensionPixelSize(R.dimen.conversation_reaction_scrub_deadzone_distance_from_touch_top);
distanceFromTouchDownPointToBottomOfScrubberDeadZone = getResources().getDimensionPixelSize(R.dimen.conversation_reaction_scrub_deadzone_distance_from_touch_bottom); distanceFromTouchDownPointToBottomOfScrubberDeadZone = getResources().getDimensionPixelSize(R.dimen.conversation_reaction_scrub_deadzone_distance_from_touch_bottom);
@ -124,6 +127,7 @@ public final class ConversationReactionOverlay extends RelativeLayout {
statusBarHeight = ViewUtil.getStatusBarHeight(this); statusBarHeight = ViewUtil.getStatusBarHeight(this);
scrubberDistanceFromTouchDown = getResources().getDimensionPixelOffset(R.dimen.conversation_reaction_scrubber_distance); scrubberDistanceFromTouchDown = getResources().getDimensionPixelOffset(R.dimen.conversation_reaction_scrubber_distance);
scrubberHeight = getResources().getDimensionPixelOffset(R.dimen.conversation_reaction_scrubber_height); scrubberHeight = getResources().getDimensionPixelOffset(R.dimen.conversation_reaction_scrubber_height);
scrubberWidth = getResources().getDimensionPixelOffset(R.dimen.reaction_scrubber_width);
halfActionBarHeight = (int) ThemeUtil.getThemedDimen(getContext(), R.attr.actionBarSize) / 2; halfActionBarHeight = (int) ThemeUtil.getThemedDimen(getContext(), R.attr.actionBarSize) / 2;
selectedVerticalTranslation = getResources().getDimensionPixelOffset(R.dimen.conversation_reaction_scrub_vertical_translation); selectedVerticalTranslation = getResources().getDimensionPixelOffset(R.dimen.conversation_reaction_scrub_vertical_translation);
scrubberHorizontalMargin = getResources().getDimensionPixelOffset(R.dimen.conversation_reaction_scrub_horizontal_margin); scrubberHorizontalMargin = getResources().getDimensionPixelOffset(R.dimen.conversation_reaction_scrub_horizontal_margin);
@ -149,7 +153,7 @@ public final class ConversationReactionOverlay extends RelativeLayout {
final float scrubberTranslationY = Math.max(-scrubberDistanceFromTouchDown + halfActionBarHeight, final float scrubberTranslationY = Math.max(-scrubberDistanceFromTouchDown + halfActionBarHeight,
lastSeenDownPoint.y - scrubberHeight - scrubberDistanceFromTouchDown); lastSeenDownPoint.y - scrubberHeight - scrubberDistanceFromTouchDown);
final float halfWidth = foregroundView.getWidth() / 2f + scrubberHorizontalMargin; final float halfWidth = scrubberWidth / 2f + scrubberHorizontalMargin;
final float screenWidth = getResources().getDisplayMetrics().widthPixels; final float screenWidth = getResources().getDisplayMetrics().widthPixels;
final float scrubberTranslationX = Util.clamp(lastSeenDownPoint.x - halfWidth, final float scrubberTranslationX = Util.clamp(lastSeenDownPoint.x - halfWidth,
scrubberHorizontalMargin, scrubberHorizontalMargin,
@ -202,6 +206,19 @@ public final class ConversationReactionOverlay extends RelativeLayout {
return messageRecord; return messageRecord;
} }
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
backgroundView.getGlobalVisibleRect(emojiStripViewBounds);
emojiViews[0].getGlobalVisibleRect(emojiViewGlobalRect);
emojiStripViewBounds.left = emojiViewGlobalRect.left;
emojiViews[emojiViews.length - 1].getGlobalVisibleRect(emojiViewGlobalRect);
emojiStripViewBounds.right = emojiViewGlobalRect.right;
segmentSize = emojiStripViewBounds.width() / (float) emojiViews.length;
}
public boolean applyTouchEvent(@NonNull MotionEvent motionEvent) { public boolean applyTouchEvent(@NonNull MotionEvent motionEvent) {
if (!isShowing()) { if (!isShowing()) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
@ -215,14 +232,6 @@ public final class ConversationReactionOverlay extends RelativeLayout {
} }
if (overlayState == OverlayState.UNINITAILIZED) { if (overlayState == OverlayState.UNINITAILIZED) {
backgroundView.getGlobalVisibleRect(emojiStripViewBounds);
emojiViews[0].getGlobalVisibleRect(emojiViewGlobalRect);
emojiStripViewBounds.left = emojiViewGlobalRect.left;
emojiViews[emojiViews.length - 1].getGlobalVisibleRect(emojiViewGlobalRect);
emojiStripViewBounds.right = emojiViewGlobalRect.right;
segmentSize = emojiStripViewBounds.width() / (float) emojiViews.length;
downIsOurs = false; downIsOurs = false;
deadzoneTouchPoint.set(motionEvent.getRawX(), motionEvent.getRawY()); deadzoneTouchPoint.set(motionEvent.getRawX(), motionEvent.getRawY());
@ -345,6 +354,7 @@ public final class ConversationReactionOverlay extends RelativeLayout {
} }
private void growView(@NonNull View view) { private void growView(@NonNull View view) {
view.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP);
view.animate() view.animate()
.scaleY(1.5f) .scaleY(1.5f)
.scaleX(1.5f) .scaleX(1.5f)
@ -486,7 +496,7 @@ public final class ConversationReactionOverlay extends RelativeLayout {
hideAnimatorSet.addListener(new AnimationCompleteListener() { hideAnimatorSet.addListener(new AnimationCompleteListener() {
@Override @Override
public void onAnimationEnd(Animator animation) { public void onAnimationEnd(Animator animation) {
setVisibility(View.INVISIBLE); setVisibility(View.GONE);
} }
}); });

View File

@ -11,17 +11,12 @@ import org.thoughtcrime.securesms.crypto.UnidentifiedAccessUtil;
import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.MessagingDatabase; import org.thoughtcrime.securesms.database.MessagingDatabase;
import org.thoughtcrime.securesms.database.NoSuchMessageException; import org.thoughtcrime.securesms.database.NoSuchMessageException;
import org.thoughtcrime.securesms.database.ThreadDatabase;
import org.thoughtcrime.securesms.database.model.MessageRecord; import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
import org.thoughtcrime.securesms.database.model.ReactionRecord; import org.thoughtcrime.securesms.database.model.ReactionRecord;
import org.thoughtcrime.securesms.database.model.SmsMessageRecord;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.recipients.RecipientUtil; import org.thoughtcrime.securesms.recipients.RecipientUtil;
@ -37,8 +32,6 @@ import org.whispersystems.signalservice.api.messages.SignalServiceGroup;
import org.whispersystems.signalservice.api.push.SignalServiceAddress; import org.whispersystems.signalservice.api.push.SignalServiceAddress;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -84,7 +77,7 @@ public class ReactionSendJob extends BaseJob {
} }
List<RecipientId> recipients = conversationRecipient.isGroup() ? Stream.of(conversationRecipient.getParticipants()).map(Recipient::getId).toList() List<RecipientId> recipients = conversationRecipient.isGroup() ? Stream.of(conversationRecipient.getParticipants()).map(Recipient::getId).toList()
: Arrays.asList(conversationRecipient.getId()); : Stream.of(conversationRecipient.getId()).toList();
recipients.remove(Recipient.self().getId()); recipients.remove(Recipient.self().getId());

View File

@ -15,6 +15,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment; import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.util.ThemeUtil;
public final class ReactionsBottomSheetDialogFragment extends BottomSheetDialogFragment { public final class ReactionsBottomSheetDialogFragment extends BottomSheetDialogFragment {
@ -41,6 +42,18 @@ public final class ReactionsBottomSheetDialogFragment extends BottomSheetDialogF
return fragment; return fragment;
} }
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
if (ThemeUtil.isDarkTheme(requireContext())) {
setStyle(DialogFragment.STYLE_NORMAL, R.style.Theme_Design_BottomSheetDialog_Fixed);
} else {
setStyle(DialogFragment.STYLE_NORMAL, R.style.Theme_Design_Light_BottomSheetDialog_Fixed);
}
super.onCreate(savedInstanceState);
}
@Override @Override
public @Nullable View onCreateView(@NonNull LayoutInflater inflater, public @Nullable View onCreateView(@NonNull LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable ViewGroup container,