Skip to content

Commit 232f1db

Browse files
committed
Merge branch 'release/25.03.1' into main
2 parents 18b9593 + 2caa754 commit 232f1db

File tree

675 files changed

+2856
-2498
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

675 files changed

+2856
-2498
lines changed

.github/workflows/blocked.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: Prevent blocked
2+
on:
3+
pull_request:
4+
types: [opened, labeled, unlabeled]
5+
jobs:
6+
prevent-blocked:
7+
name: Prevent blocked
8+
runs-on: ubuntu-latest
9+
permissions:
10+
pull-requests: read
11+
steps:
12+
- name: Add notice
13+
uses: actions/github-script@v7
14+
if: contains(github.event.pull_request.labels.*.name, 'X-Blocked')
15+
with:
16+
script: |
17+
core.setFailed("PR has been labeled with X-Blocked; it cannot be merged.");

.github/workflows/quality.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
- name: Run code quality check suite
3030
run: ./tools/check/check_code_quality.sh
3131

32-
checkScreesnhot:
32+
checkScreenshot:
3333
name: Search for invalid screenshot files
3434
runs-on: ubuntu-latest
3535
steps:

CHANGES.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,80 @@
1+
Changes in Element X v25.03.0
2+
=============================
3+
4+
<!-- Release notes generated using configuration in .github/release.yml at v25.03.0 -->
5+
6+
## What's Changed
7+
### ✨ Features
8+
* Create `SyncOrchestrator` by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4176
9+
* feature(crypto): verification violation handling and block sending by @BillCarsonFr in https://github.com/element-hq/element-x-android/pull/4126
10+
* Update Matrix Room API and allow media swipe on pinned event only. by @bmarty in https://github.com/element-hq/element-x-android/pull/4274
11+
* Feature : join room by address by @ganfra in https://github.com/element-hq/element-x-android/pull/4302
12+
### 🙌 Improvements
13+
* Change : Room Preview by @ganfra in https://github.com/element-hq/element-x-android/pull/4250
14+
### 🐛 Bugfixes
15+
* SyncOrchestrator: restore the initial sync step by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4242
16+
* When an emoji is used as the 'initial' for an avatar, use the whole emoji by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4277
17+
* Try avoiding trailing punctuation inside linkified URLs by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4214
18+
* Preload account urls by @bmarty in https://github.com/element-hq/element-x-android/pull/4301
19+
* Fix issues due to multiple ntfy applications with the same name. by @bmarty in https://github.com/element-hq/element-x-android/pull/4312
20+
* Use `Settings.System.DEFAULT_RINGTONE_URI` for ringing notifications by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4310
21+
### 🗣 Translations
22+
* Sync Strings - New translations to turkish by @ElementBot in https://github.com/element-hq/element-x-android/pull/4253
23+
* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/4298
24+
### 🧱 Build
25+
* Fix nightly reports by @bmarty in https://github.com/element-hq/element-x-android/pull/4235
26+
* Fix nightly reports - next step by @bmarty in https://github.com/element-hq/element-x-android/pull/4239
27+
* Prepare application for being configurable by @bmarty in https://github.com/element-hq/element-x-android/pull/4285
28+
* runQualityChecks task shouldn't fail fast by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4309
29+
* Get library ComposablePreviewScanner from maven and update to the latest version by @bmarty in https://github.com/element-hq/element-x-android/pull/4327
30+
### Dependency upgrades
31+
* Update dependency com.posthog:posthog-android to v3.11.2 by @renovate in https://github.com/element-hq/element-x-android/pull/4230
32+
* Update dependency org.matrix.rustcomponents:sdk-android to v0.2.78 by @renovate in https://github.com/element-hq/element-x-android/pull/4234
33+
* Update dependency org.maplibre.gl:android-sdk to v11.8.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4245
34+
* fix(deps): update dependency org.jetbrains.kotlinx:kotlinx-datetime to v0.6.2 by @renovate in https://github.com/element-hq/element-x-android/pull/4258
35+
* fix(deps): update dependency io.sentry:sentry-android to v8.2.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4262
36+
* fix(deps): update telephoto to v0.15.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4270
37+
* fix(deps): update dependency com.google.firebase:firebase-bom to v33.9.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4249
38+
* chore(deps): update danger/danger-js action to v12.3.4 by @renovate in https://github.com/element-hq/element-x-android/pull/4259
39+
* fix(deps): update android.gradle.plugin to v8.8.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4263
40+
* chore(deps): update plugin dependencycheck to v12.1.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4272
41+
* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25 by @renovate in https://github.com/element-hq/element-x-android/pull/4273
42+
* fix(deps): update dependency androidx.compose:compose-bom to v2025.02.00 by @renovate in https://github.com/element-hq/element-x-android/pull/4261
43+
* fix(deps): update kotlin to v2.1.10-1.0.30 by @renovate in https://github.com/element-hq/element-x-android/pull/4265
44+
* fix(deps): update dependency io.github.zxing-cpp:android to v2.3.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4282
45+
* fix(deps): update firebaseappdistribution to v5.1.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4246
46+
* fix(deps): update dependencyanalysis to v2.8.2 by @renovate in https://github.com/element-hq/element-x-android/pull/4251
47+
* fix(deps): update dependency com.google.accompanist:accompanist-permissions to v0.37.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4283
48+
* fix(deps): update dependency com.google.accompanist:accompanist-permissions to v0.37.2 by @renovate in https://github.com/element-hq/element-x-android/pull/4287
49+
* fix(deps): update dependencyanalysis to v2.10.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4288
50+
* fix(deps): update dependencyanalysis to v2.10.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4295
51+
* Upgrade SDK version to 25.02.26 by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4305
52+
* fix(deps): update kotlinpoet to v2.1.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4304
53+
* Update compound by @bmarty in https://github.com/element-hq/element-x-android/pull/4319
54+
* fix(deps): update dependency androidx.constraintlayout:constraintlayout-compose to v1.1.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4324
55+
* fix(deps): update activity to v1.10.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4321
56+
* fix(deps): update dependency androidx.exifinterface:exifinterface to v1.4.0 - autoclosed by @renovate in https://github.com/element-hq/element-x-android/pull/4325
57+
* fix(deps): update dependency androidx.constraintlayout:constraintlayout to v2.2.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4322
58+
* fix(deps): update dependency io.sentry:sentry-android to v8.3.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4316
59+
* fix(deps): update dependency com.posthog:posthog-android to v3.11.3 by @renovate in https://github.com/element-hq/element-x-android/pull/4313
60+
* fix(deps): update dependency com.android.tools:desugar_jdk_libs to v2.1.5 by @renovate in https://github.com/element-hq/element-x-android/pull/4299
61+
* chore(deps): update plugin detekt to v1.23.8 by @renovate in https://github.com/element-hq/element-x-android/pull/4292
62+
### Others
63+
* Update incoming call notification content to "📹 Incoming call" by @bmarty in https://github.com/element-hq/element-x-android/pull/4231
64+
* Display a bottom sheet to let user confirm the DM creation by @bmarty in https://github.com/element-hq/element-x-android/pull/4233
65+
* Open chat links in regular browser tabs by @cbs228 in https://github.com/element-hq/element-x-android/pull/4198
66+
* Theme override by @bmarty in https://github.com/element-hq/element-x-android/pull/4226
67+
* Allow user certificate in production builds. by @bmarty in https://github.com/element-hq/element-x-android/pull/4275
68+
* Replace Material icons with Compound icons wherever it's possible by @bmarty in https://github.com/element-hq/element-x-android/pull/4323
69+
70+
## New Contributors
71+
* @cbs228 made their first contribution in https://github.com/element-hq/element-x-android/pull/4198
72+
73+
**Full Changelog**: https://github.com/element-hq/element-x-android/compare/v25.02.0...v25.03.0
74+
75+
Changes in Element X v25.02.0 (2025-02-04)
76+
==========================================
77+
178
<!-- Release notes generated using configuration in .github/release.yml at v25.02.0 -->
279

380
## What's Changed

appnav/src/main/kotlin/io/element/android/appnav/LoggedInAppScopeFlowNode.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@
55
* Please see LICENSE files in the repository root for full details.
66
*/
77

8+
@file:OptIn(DelicateCoilApi::class)
9+
810
package io.element.android.appnav
911

1012
import android.os.Parcelable
1113
import androidx.compose.runtime.Composable
1214
import androidx.compose.ui.Modifier
13-
import coil.Coil
15+
import coil3.SingletonImageLoader
16+
import coil3.annotation.DelicateCoilApi
1417
import com.bumble.appyx.core.composable.Children
1518
import com.bumble.appyx.core.lifecycle.subscribe
1619
import com.bumble.appyx.core.modality.BuildContext
@@ -69,7 +72,7 @@ class LoggedInAppScopeFlowNode @AssistedInject constructor(
6972
super.onBuilt()
7073
lifecycle.subscribe(
7174
onCreate = {
72-
Coil.setImageLoader(imageLoaderHolder.get(inputs.matrixClient))
75+
SingletonImageLoader.setUnsafe(imageLoaderHolder.get(inputs.matrixClient))
7376
},
7477
)
7578
}

appnav/src/main/kotlin/io/element/android/appnav/LoggedInEventProcessor.kt

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,33 @@ package io.element.android.appnav
1010
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher
1111
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage
1212
import io.element.android.libraries.matrix.api.room.RoomMembershipObserver
13+
import io.element.android.libraries.matrix.api.timeline.item.event.MembershipChange
1314
import io.element.android.libraries.ui.strings.CommonStrings
1415
import kotlinx.coroutines.CoroutineScope
1516
import kotlinx.coroutines.Job
1617
import kotlinx.coroutines.flow.filter
1718
import kotlinx.coroutines.flow.launchIn
18-
import kotlinx.coroutines.flow.map
1919
import kotlinx.coroutines.flow.onEach
20-
import kotlinx.coroutines.launch
2120
import javax.inject.Inject
2221

2322
class LoggedInEventProcessor @Inject constructor(
2423
private val snackbarDispatcher: SnackbarDispatcher,
25-
roomMembershipObserver: RoomMembershipObserver,
24+
private val roomMembershipObserver: RoomMembershipObserver,
2625
) {
2726
private var observingJob: Job? = null
2827

29-
private val displayLeftRoomMessage = roomMembershipObserver.updates
30-
.map { !it.isUserInRoom }
31-
3228
fun observeEvents(coroutineScope: CoroutineScope) {
33-
observingJob = coroutineScope.launch {
34-
displayLeftRoomMessage
35-
.filter { it }
36-
.onEach {
37-
displayMessage(CommonStrings.common_current_user_left_room)
29+
observingJob = roomMembershipObserver.updates
30+
.filter { !it.isUserInRoom }
31+
.onEach {
32+
when (it.change) {
33+
MembershipChange.LEFT -> displayMessage(CommonStrings.common_current_user_left_room)
34+
MembershipChange.INVITATION_REJECTED -> displayMessage(CommonStrings.common_current_user_rejected_invite)
35+
MembershipChange.KNOCK_RETRACTED -> displayMessage(CommonStrings.common_current_user_canceled_knock)
36+
else -> Unit
3837
}
39-
.launchIn(this)
40-
}
38+
}
39+
.launchIn(coroutineScope)
4140
}
4241

4342
fun stopObserving() {

appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -262,10 +262,6 @@ class LoggedInFlowNode @AssistedInject constructor(
262262
plugins<Callback>().forEach { it.onOpenBugReport() }
263263
}
264264

265-
override fun onRoomDirectorySearchClick() {
266-
backstack.push(NavTarget.RoomDirectorySearch)
267-
}
268-
269265
override fun onLogoutForNativeSlidingSyncMigrationNeeded() {
270266
backstack.push(NavTarget.LogoutForNativeSlidingSyncMigrationNeeded)
271267
}
@@ -360,6 +356,10 @@ class LoggedInFlowNode @AssistedInject constructor(
360356
override fun onOpenRoom(roomIdOrAlias: RoomIdOrAlias, serverNames: List<String>) {
361357
backstack.replace(NavTarget.Room(roomIdOrAlias = roomIdOrAlias, serverNames = serverNames))
362358
}
359+
360+
override fun onOpenRoomDirectory() {
361+
backstack.push(NavTarget.RoomDirectorySearch)
362+
}
363363
}
364364

365365
createRoomEntryPoint

appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@
55
* Please see LICENSE files in the repository root for full details.
66
*/
77

8+
@file:OptIn(DelicateCoilApi::class)
9+
810
package io.element.android.appnav
911

1012
import android.os.Parcelable
1113
import androidx.compose.runtime.Composable
1214
import androidx.compose.ui.Modifier
13-
import coil.Coil
15+
import coil3.SingletonImageLoader
16+
import coil3.annotation.DelicateCoilApi
1417
import com.bumble.appyx.core.lifecycle.subscribe
1518
import com.bumble.appyx.core.modality.BuildContext
1619
import com.bumble.appyx.core.node.Node
@@ -55,7 +58,7 @@ class NotLoggedInFlowNode @AssistedInject constructor(
5558
super.onBuilt()
5659
lifecycle.subscribe(
5760
onCreate = {
58-
Coil.setImageLoader(notLoggedInImageLoaderFactory)
61+
SingletonImageLoader.setUnsafe(notLoggedInImageLoaderFactory.newImageLoader())
5962
},
6063
)
6164
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Main changes in this version: Event cache / Join room by address.
2+
Full changelog: https://github.com/element-hq/element-x-android/releases

features/call/impl/src/main/kotlin/io/element/android/features/call/impl/data/WidgetMessage.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ data class WidgetMessage(
3333
@SerialName("im.vector.hangup")
3434
HangUp,
3535

36+
@SerialName("io.element.close")
37+
Close,
38+
3639
@SerialName("send_event")
3740
SendEvent,
3841
}

features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallScreenPresenter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ class CallScreenPresenter @AssistedInject constructor(
135135

136136
val parsedMessage = parseMessage(it)
137137
if (parsedMessage?.direction == WidgetMessage.Direction.FromWidget) {
138-
if (parsedMessage.action == WidgetMessage.Action.HangUp) {
138+
if (parsedMessage.action == WidgetMessage.Action.Close) {
139139
close(callWidgetDriver.value, navigator)
140140
} else if (parsedMessage.action == WidgetMessage.Action.SendEvent) {
141141
// This event is received when a member joins the call, the first one will be the current one

0 commit comments

Comments
 (0)