Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,14 @@ concurrency:

jobs:
build:
name: Signal pinned release
name: Signal ${{ matrix.signal == 'pinned' && 'pinned release' || matrix.signal }}
if: github.repository == 'ambr-s/vesper-android' && github.event.pull_request.head.repo.full_name == github.repository
runs-on: blacksmith-8vcpu-ubuntu-2404
timeout-minutes: 120
strategy:
fail-fast: false
matrix:
signal: [pinned, v8.28.2]

steps:
- name: Check out Vesper patchset
Expand All @@ -35,8 +39,13 @@ jobs:

- name: Resolve Signal tag
id: version
env:
SIGNAL_TARGET: ${{ matrix.signal }}
run: |
tag="$(sed -n 's/^signal=//p' upstream.pin)"
tag="$SIGNAL_TARGET"
if [[ "$tag" == pinned ]]; then
tag="$(sed -n 's/^signal=//p' upstream.pin)"
fi
if [[ ! "$tag" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Invalid Signal tag: $tag" >&2
exit 1
Expand Down Expand Up @@ -110,6 +119,6 @@ jobs:
- name: Upload unsigned universal APK
uses: actions/upload-artifact@v7
with:
name: Vesper-pr-${{ github.event.pull_request.number }}-unsigned-universal
name: Vesper-pr-${{ github.event.pull_request.number }}-${{ matrix.signal }}-unsigned-universal
path: ${{ steps.apk.outputs.path }}
if-no-files-found: error
30 changes: 14 additions & 16 deletions patches/0001-feat-add-Material-You-dynamic-theming.patch
Original file line number Diff line number Diff line change
Expand Up @@ -123,29 +123,27 @@ index 4982c2605f..22721e75df 100644

WindowUtil.clearLightStatusBar(getWindow());
diff --git a/app/src/main/java/org/thoughtcrime/securesms/MainActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/MainActivity.kt
index 168554abe4..fbad2c63c5 100644
index e3a9873d79..dab325a7f2 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/MainActivity.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/MainActivity.kt
@@ -56,7 +56,6 @@ import androidx.compose.ui.Modifier
@@ -53,7 +53,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.toArgb
-import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalResources
import androidx.compose.ui.unit.Dp
@@ -90,9 +89,9 @@ import org.signal.core.ui.compose.split.PaneAnchor
import org.signal.core.ui.compose.split.rememberListDetailPaneLayout
import org.signal.core.ui.compose.split.rememberListDetailPaneMetrics
@@ -91,7 +90,7 @@ import org.signal.core.ui.compose.systemBarsCompat
import org.signal.core.ui.compose.theme.SignalTheme
+import org.signal.core.ui.compose.theme.colorAttribute
import org.signal.core.ui.permissions.Permissions
import org.signal.core.ui.rememberIsSplitPane
-import org.signal.core.ui.util.ThemeUtil
+import org.signal.core.ui.compose.theme.colorAttribute
import org.signal.core.util.AppForegroundObserver
import org.signal.core.util.Util
import org.signal.core.util.concurrent.LifecycleDisposable
@@ -418,12 +417,11 @@ class MainActivity :
@@ -417,12 +416,11 @@ class MainActivity :
val detailLocation by mainNavigationViewModel.detailLocation.collectAsStateWithLifecycle()
val isConversationFullscreen = !isSplitPane && detailLocation is MainDetailRoute.Conversation

Expand All @@ -159,7 +157,7 @@ index 168554abe4..fbad2c63c5 100644
}

LaunchedEffect(isDarkTheme, navBarColor) {
@@ -438,6 +436,10 @@ class MainActivity :
@@ -437,6 +435,10 @@ class MainActivity :
} else {
enableEdgeToEdge()
}
Expand All @@ -170,7 +168,7 @@ index 168554abe4..fbad2c63c5 100644
}

val convoTransitionState = ConversationTransitionState.remember(isSplitPane)
@@ -621,7 +623,7 @@ class MainActivity :
@@ -620,7 +622,7 @@ class MainActivity :
Column(
modifier = Modifier
.clip(contentLayoutData.navigationBarShape)
Expand Down Expand Up @@ -299,7 +297,7 @@ index 6acd230877..7f9e0cacb5 100644
}
}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java b/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java
index 0f4a96bc8e..520d835dca 100644
index 7a05730b65..2b9b5c2441 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java
@@ -1,7 +1,5 @@
Expand Down Expand Up @@ -714,7 +712,7 @@ index 051afd67c5..2443b290f1 100644
}
)
diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java
index 1c6e4ae2c5..bce9bf3063 100644
index 899fd99b7f..cc2f8de532 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java
@@ -129,6 +129,7 @@ import org.thoughtcrime.securesms.linkpreview.LinkPreview;
Expand All @@ -725,7 +723,7 @@ index 1c6e4ae2c5..bce9bf3063 100644
import org.thoughtcrime.securesms.mms.ImageSlide;
import org.thoughtcrime.securesms.mms.PartAuthority;
import org.thoughtcrime.securesms.mms.Slide;
@@ -1402,8 +1403,8 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
@@ -1406,8 +1407,8 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
CallLinkRootKey callLinkRootKey = CallLinks.isCallLink(linkPreview.getUrl()) ? CallLinks.parseUrl(linkPreview.getUrl()) : null;
if (callLinkRootKey != null) {
joinCallLinkStub.setVisibility(View.VISIBLE);
Expand All @@ -736,7 +734,7 @@ index 1c6e4ae2c5..bce9bf3063 100644
joinCallLinkStub.get().setOnClickListener(v -> {
if (eventListener != null) {
eventListener.onJoinCallLink(callLinkRootKey);
@@ -1825,7 +1826,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
@@ -1829,7 +1830,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
int end = messageBody.getSpanEnd(placeholder);
URLSpan span = new InterceptableLongClickCopyLinkSpan(placeholder.getValue(),
urlClickListener,
Expand All @@ -745,7 +743,7 @@ index 1c6e4ae2c5..bce9bf3063 100644
isReleaseNotes);

messageBody.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
@@ -1998,11 +1999,15 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
@@ -2002,11 +2003,15 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
private void setReactionsWithWidth(@NonNull MessageRecord current, int width) {
reactionsView.setReactions(current.getReactions());
reactionsView.setBubbleWidth(width);
Expand All @@ -766,7 +764,7 @@ index 1c6e4ae2c5..bce9bf3063 100644

private void setFooter(@NonNull MessageRecord current, @NonNull Optional<MessageRecord> next, @NonNull Locale locale, boolean isGroupThread, boolean hasWallpaper) {
diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java
index 2fc122fe05..1c4ce2306e 100644
index af7845c763..d6d9e1cd9a 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java
@@ -855,11 +855,11 @@ public final class ConversationUpdateItem extends FrameLayout
Expand Down Expand Up @@ -849,7 +847,7 @@ index 5b58874ee0..10a6aab945 100644
)
}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt
index ff87ff9097..46e5ad71b4 100644
index b6b238a8cb..e78ecb65cb 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt
@@ -410,6 +410,7 @@ import java.util.Optional
Expand Down
5 changes: 5 additions & 0 deletions tools/test_materialised_theme.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ def test_media_theme_is_applied_before_activity_creation(self) -> None:
self.assertEqual(source.count("override fun onResume()"), 1)
self.assertRegex(source, r"override fun onResume\(\)\s*\{\s*super\.onResume\(\)\s*theme\.onResume\(this\)")

def test_main_activity_imports_dynamic_color_resolver(self) -> None:
source = (SOURCE / "MainActivity.kt").read_text()
self.assertIn('import org.signal.core.ui.compose.theme.colorAttribute\n', source)
self.assertNotIn('import org.signal.core.ui.util.ThemeUtil\n', source)

def test_navigation_inset_uses_the_navigation_container_surface(self) -> None:
source = (SOURCE / "MainActivity.kt").read_text()
self.assertRegex(
Expand Down
Loading