Merge remote-tracking branch 'upstream/dev' into libsession-integration

This commit is contained in:
0x330a 2023-04-27 10:52:03 +10:00
commit 1f8fa4a904
No known key found for this signature in database
GPG Key ID: 267811D6E6A2698C
9 changed files with 54 additions and 17 deletions

View File

@ -1,5 +1,6 @@
package org.thoughtcrime.securesms; package org.thoughtcrime.securesms;
import static android.os.Build.VERSION.SDK_INT;
import static org.session.libsession.utilities.TextSecurePreferences.SELECTED_ACCENT_COLOR; import static org.session.libsession.utilities.TextSecurePreferences.SELECTED_ACCENT_COLOR;
import android.app.ActivityManager; import android.app.ActivityManager;
@ -18,6 +19,7 @@ import androidx.appcompat.app.AppCompatActivity;
import org.session.libsession.utilities.TextSecurePreferences; import org.session.libsession.utilities.TextSecurePreferences;
import org.session.libsession.utilities.dynamiclanguage.DynamicLanguageActivityHelper; import org.session.libsession.utilities.dynamiclanguage.DynamicLanguageActivityHelper;
import org.session.libsession.utilities.dynamiclanguage.DynamicLanguageContextWrapper; import org.session.libsession.utilities.dynamiclanguage.DynamicLanguageContextWrapper;
import org.thoughtcrime.securesms.conversation.v2.WindowUtil;
import org.thoughtcrime.securesms.util.ActivityUtilitiesKt; import org.thoughtcrime.securesms.util.ActivityUtilitiesKt;
import org.thoughtcrime.securesms.util.ThemeState; import org.thoughtcrime.securesms.util.ThemeState;
import org.thoughtcrime.securesms.util.UiModeUtilities; import org.thoughtcrime.securesms.util.UiModeUtilities;
@ -92,6 +94,11 @@ public abstract class BaseActionBarActivity extends AppCompatActivity {
if (!currentThemeState.equals(ActivityUtilitiesKt.themeState(getPreferences()))) { if (!currentThemeState.equals(ActivityUtilitiesKt.themeState(getPreferences()))) {
recreate(); recreate();
} }
// apply lightStatusBar manually as API 26 does not update properly via applyTheme
// https://issuetracker.google.com/issues/65883460?pli=1
if (SDK_INT >= 26 && SDK_INT <= 27) WindowUtil.setLightStatusBarFromTheme(this);
if (SDK_INT == 27) WindowUtil.setLightNavigationBarFromTheme(this);
} }
@Override @Override

View File

@ -0,0 +1,30 @@
package org.thoughtcrime.securesms.components
import android.annotation.SuppressLint
import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import androidx.viewpager.widget.ViewPager
/**
* An extension of ViewPager to swallow erroneous multi-touch exceptions.
*
* @see https://stackoverflow.com/questions/6919292/pointerindex-out-of-range-android-multitouch
*/
class SafeViewPager @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null
) : ViewPager(context, attrs) {
@SuppressLint("ClickableViewAccessibility")
override fun onTouchEvent(event: MotionEvent?): Boolean = try {
super.onTouchEvent(event)
} catch (e: IllegalArgumentException) {
false
}
override fun onInterceptTouchEvent(event: MotionEvent?): Boolean = try {
super.onInterceptTouchEvent(event)
} catch (e: IllegalArgumentException) {
false
}
}

View File

@ -38,14 +38,10 @@ public final class WindowUtil {
} }
public static void setNavigationBarColor(@NonNull Window window, @ColorInt int color) { public static void setNavigationBarColor(@NonNull Window window, @ColorInt int color) {
if (Build.VERSION.SDK_INT < 21) return;
window.setNavigationBarColor(color); window.setNavigationBarColor(color);
} }
public static void setLightStatusBarFromTheme(@NonNull Activity activity) { public static void setLightStatusBarFromTheme(@NonNull Activity activity) {
if (Build.VERSION.SDK_INT < 23) return;
final boolean isLightStatusBar = ThemeUtil.getThemedBoolean(activity, android.R.attr.windowLightStatusBar); final boolean isLightStatusBar = ThemeUtil.getThemedBoolean(activity, android.R.attr.windowLightStatusBar);
if (isLightStatusBar) setLightStatusBar(activity.getWindow()); if (isLightStatusBar) setLightStatusBar(activity.getWindow());
@ -53,20 +49,14 @@ public final class WindowUtil {
} }
public static void clearLightStatusBar(@NonNull Window window) { public static void clearLightStatusBar(@NonNull Window window) {
if (Build.VERSION.SDK_INT < 23) return;
clearSystemUiFlags(window, View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); clearSystemUiFlags(window, View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} }
public static void setLightStatusBar(@NonNull Window window) { public static void setLightStatusBar(@NonNull Window window) {
if (Build.VERSION.SDK_INT < 23) return;
setSystemUiFlags(window, View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); setSystemUiFlags(window, View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} }
public static void setStatusBarColor(@NonNull Window window, @ColorInt int color) { public static void setStatusBarColor(@NonNull Window window, @ColorInt int color) {
if (Build.VERSION.SDK_INT < 21) return;
window.setStatusBarColor(color); window.setStatusBarColor(color);
} }

View File

@ -10,10 +10,8 @@ import android.text.style.ForegroundColorSpan
import android.text.style.URLSpan import android.text.style.URLSpan
import android.text.util.Linkify import android.text.util.Linkify
import android.util.AttributeSet import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.MotionEvent import android.view.MotionEvent
import android.view.View import android.view.View
import android.widget.LinearLayout
import androidx.annotation.ColorInt import androidx.annotation.ColorInt
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
@ -22,6 +20,7 @@ import androidx.core.graphics.BlendModeColorFilterCompat
import androidx.core.graphics.BlendModeCompat import androidx.core.graphics.BlendModeCompat
import androidx.core.text.getSpans import androidx.core.text.getSpans
import androidx.core.text.toSpannable import androidx.core.text.toSpannable
import androidx.core.view.children
import androidx.core.view.isVisible import androidx.core.view.isVisible
import network.loki.messenger.R import network.loki.messenger.R
import network.loki.messenger.databinding.ViewVisibleMessageContentBinding import network.loki.messenger.databinding.ViewVisibleMessageContentBinding
@ -223,6 +222,7 @@ class VisibleMessageContentView : ConstraintLayout {
} }
binding.bodyTextView.isVisible = message.body.isNotEmpty() && !hideBody binding.bodyTextView.isVisible = message.body.isNotEmpty() && !hideBody
binding.contentParent.apply { isVisible = children.any { it.isVisible } }
if (message.body.isNotEmpty() && !hideBody) { if (message.body.isNotEmpty() && !hideBody) {
val color = getTextColor(context, message) val color = getTextColor(context, message)

View File

@ -22,7 +22,7 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager <org.thoughtcrime.securesms.components.SafeViewPager
android:id="@+id/media_pager" android:id="@+id/media_pager"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="classic_light_navigation_bar">@color/classic_light_6</color>
<color name="ocean_light_navigation_bar">@color/ocean_light_7</color>
</resources>

View File

@ -60,6 +60,9 @@
<color name="transparent_white_40">#40ffffff</color> <color name="transparent_white_40">#40ffffff</color>
<color name="transparent_white_aa">#aaffffff</color> <color name="transparent_white_aa">#aaffffff</color>
<color name="navigation_bar">@color/compose_view_background</color>
<color name="classic_light_navigation_bar">@color/navigation_bar</color>
<color name="ocean_light_navigation_bar">@color/navigation_bar</color>
<color name="action_mode_status_bar">@color/gray65</color> <color name="action_mode_status_bar">@color/gray65</color>
<color name="touch_highlight">#22000000</color> <color name="touch_highlight">#22000000</color>

View File

@ -228,11 +228,13 @@
<style name="FakeChatViewMessageBubble.Incoming"> <style name="FakeChatViewMessageBubble.Incoming">
<item name="android:background">@drawable/fake_chat_view_incoming_message_background</item> <item name="android:background">@drawable/fake_chat_view_incoming_message_background</item>
<item name="android:elevation">10dp</item> <item name="android:elevation">10dp</item>
<item name="android:textColor">?message_received_text_color</item>
</style> </style>
<style name="FakeChatViewMessageBubble.Outgoing"> <style name="FakeChatViewMessageBubble.Outgoing">
<item name="android:background">@drawable/fake_chat_view_outgoing_message_background</item> <item name="android:background">@drawable/fake_chat_view_outgoing_message_background</item>
<item name="android:elevation">10dp</item> <item name="android:elevation">10dp</item>
<item name="android:textColor">?message_sent_text_color</item>
</style> </style>
<!-- Session --> <!-- Session -->

View File

@ -326,7 +326,7 @@
<item name="android:textColor">?android:textColorPrimary</item> <item name="android:textColor">?android:textColorPrimary</item>
<item name="android:textColorHint">@color/gray27</item> <item name="android:textColorHint">@color/gray27</item>
<item name="android:windowBackground">?colorPrimary</item> <item name="android:windowBackground">?colorPrimary</item>
<item name="android:navigationBarColor">@color/compose_view_background</item> <item name="android:navigationBarColor">@color/navigation_bar</item>
<item name="dialog_background_color">@color/classic_dark_1</item> <item name="dialog_background_color">@color/classic_dark_1</item>
<item name="bottomSheetDialogTheme">@style/Classic.Dark.BottomSheet</item> <item name="bottomSheetDialogTheme">@style/Classic.Dark.BottomSheet</item>
<item name="actionMenuTextColor">?android:textColorPrimary</item> <item name="actionMenuTextColor">?android:textColorPrimary</item>
@ -404,7 +404,7 @@
<item name="android:textColor">?android:textColorPrimary</item> <item name="android:textColor">?android:textColorPrimary</item>
<item name="android:textColorHint">@color/gray27</item> <item name="android:textColorHint">@color/gray27</item>
<item name="android:windowBackground">?colorPrimary</item> <item name="android:windowBackground">?colorPrimary</item>
<item name="android:navigationBarColor">?colorPrimary</item> <item name="android:navigationBarColor">@color/classic_light_navigation_bar</item>
<item name="colorCellBackground">@color/classic_light_6</item> <item name="colorCellBackground">@color/classic_light_6</item>
<item name="colorSettingsBackground">@color/classic_light_5</item> <item name="colorSettingsBackground">@color/classic_light_5</item>
<item name="colorDividerBackground">@color/classic_light_3</item> <item name="colorDividerBackground">@color/classic_light_3</item>
@ -490,7 +490,7 @@
<item name="android:textColorHint">@color/ocean_dark_5</item> <item name="android:textColorHint">@color/ocean_dark_5</item>
<item name="android:windowBackground">?colorPrimary</item> <item name="android:windowBackground">?colorPrimary</item>
<item name="android:colorBackground">@color/default_background_start</item> <item name="android:colorBackground">@color/default_background_start</item>
<item name="android:navigationBarColor">@color/compose_view_background</item> <item name="android:navigationBarColor">@color/navigation_bar</item>
<item name="default_background_end">?colorPrimary</item> <item name="default_background_end">?colorPrimary</item>
<item name="default_background_start">?colorPrimaryDark</item> <item name="default_background_start">?colorPrimaryDark</item>
<item name="colorCellBackground">@color/ocean_dark_3</item> <item name="colorCellBackground">@color/ocean_dark_3</item>
@ -570,7 +570,7 @@
<item name="android:textColorTertiary">@color/ocean_light_2</item> <item name="android:textColorTertiary">@color/ocean_light_2</item>
<item name="android:textColor">?android:textColorPrimary</item> <item name="android:textColor">?android:textColorPrimary</item>
<item name="android:textColorHint">@color/ocean_light_6</item> <item name="android:textColorHint">@color/ocean_light_6</item>
<item name="android:navigationBarColor">@color/ocean_light_7</item> <item name="android:navigationBarColor">@color/ocean_light_navigation_bar</item>
<item name="android:windowBackground">?colorPrimary</item> <item name="android:windowBackground">?colorPrimary</item>
<item name="android:colorBackground">@color/default_background_start</item> <item name="android:colorBackground">@color/default_background_start</item>
<item name="default_background_end">@color/ocean_light_7</item> <item name="default_background_end">@color/ocean_light_7</item>