Skip to content

Commit e80cfe4

Browse files
committed
Merge branch 'release/0.6.0' into main
2 parents eff868d + b2f110d commit e80cfe4

File tree

36 files changed

+301
-107
lines changed

36 files changed

+301
-107
lines changed

.github/workflows/sync-localazy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
./tools/localazy/importSupportedLocalesFromLocalazy.py
3737
./tools/test/generateAllScreenshots.py
3838
- name: Create Pull Request for Strings
39-
uses: peter-evans/create-pull-request@v6
39+
uses: peter-evans/create-pull-request@v7
4040
with:
4141
token: ${{ secrets.DANGER_GITHUB_API_TOKEN }}
4242
commit-message: Sync Strings from Localazy

.github/workflows/sync-sas-strings.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
- name: Run SAS String script
2424
run: ./tools/sas/import_sas_strings.py
2525
- name: Create Pull Request for SAS Strings
26-
uses: peter-evans/create-pull-request@v6
26+
uses: peter-evans/create-pull-request@v7
2727
with:
2828
commit-message: Sync SAS Strings
2929
title: Sync SAS Strings

.idea/dictionaries/shared.xml

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CHANGES.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,35 @@
1+
Changes in Element X v0.5.3 (2024-09-10)
2+
========================================
3+
4+
### ✨ Features
5+
* Add banner for optional migration to simplified sliding sync by @jmartinesp in https://github.com/element-hq/element-x-android/pull/3429
6+
7+
### 🙌 Improvements
8+
* Timeline : remove the encrypted history banner by @ganfra in https://github.com/element-hq/element-x-android/pull/3410
9+
10+
### 🐛 Bugfixes
11+
* Fix new logins with Simplified SS using the proxy by @jmartinesp in https://github.com/element-hq/element-x-android/pull/3417
12+
* Ensure Call is not hang up when user is asked to grant system permissions by @bmarty in https://github.com/element-hq/element-x-android/pull/3419
13+
* Wait for a room with joined state in `/sync` after creating it by @jmartinesp in https://github.com/element-hq/element-x-android/pull/3421
14+
* [Bugfix] : fix self verification flow by @ganfra in https://github.com/element-hq/element-x-android/pull/3426
15+
16+
### 🗣 Translations
17+
* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/3425
18+
19+
### 🚧 In development 🚧
20+
* [Feature] Pinned messages list by @ganfra in https://github.com/element-hq/element-x-android/pull/3392
21+
* Pinned messages banner : adjust indicator to match design. by @ganfra in https://github.com/element-hq/element-x-android/pull/3415
22+
23+
### Dependency upgrades
24+
* Update plugin dependencycheck to v10.0.4 by @renovate in https://github.com/element-hq/element-x-android/pull/3372
25+
* Update plugin detekt to v1.23.7 by @renovate in https://github.com/element-hq/element-x-android/pull/3424
26+
27+
### Others
28+
* Delete old log files by @bmarty in https://github.com/element-hq/element-x-android/pull/3413
29+
* Recovery key formatting and wording iteration by @bmarty in https://github.com/element-hq/element-x-android/pull/3409
30+
* Change license to AGPL by @bmarty in https://github.com/element-hq/element-x-android/pull/3422
31+
* Remove Wait list screen by @bmarty in https://github.com/element-hq/element-x-android/pull/3428
32+
133
Changes in Element X v0.5.2 (2024-09-05)
234
=========================================
335

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Element X is the new generation of Element for professional and personal use on mobile. It’s the fastest Matrix client with a seamless & intuitive user interface.
2+
Full changelog: https://github.com/element-hq/element-x-android/releases
Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,35 @@
1-
Element X is the future Element.
2-
3-
It is the brand new, and fastest ever, Matrix client. It is for personal and community use, and will support enterprise functionality later this year.
4-
5-
A complete new build, Element X transforms performance. It’s not just the fastest Matrix client, it’s also fresher and more reliable.
6-
7-
It’s so fast for a number of reasons, but in particular we’ve introduced a completely new syncing service (‘sliding sync’). So even in big end-to-end encrypted chat rooms it operates incredibly quickly.
8-
9-
It’s fresher because we’ve rebuilt the entire user experience. All the power of Matrix - and the complexity of decentralized end-to-end encryption - is now hidden under a beautiful and intuitive user interface using the very latest frameworks and accessibility features.
10-
11-
Element X delivers speed, usability and reliability on the decentralized Matrix open standard.
1+
Element X brings you both sovereign & seamless collaboration built on Matrix.
2+
3+
The collaboration capabilities include chat & video calls with the modern set of features such as:
4+
• public & private channels
5+
• room moderation & access conUpdatetrol
6+
• replies, reactions, polls, read receipts, pinned messages, etc.
7+
• simultaneous chat & calls (picture in picture)
8+
• decentralized & federated communication across organizations
9+
10+
All this comes in a secure & sovereign fashion without compromising responsiveness or overall usability of the app:
11+
• enterprise-grade single sign-on
12+
• easy & secure login & device verification via QR-code
13+
• end to end encryption & zero trust
14+
• protection against MITM & other cyber attacks
15+
16+
If you’re a new user, use the new Element X app from the start. Compared to the current Element app you will get:
17+
• greatly enhanced performance, sleek user interface and overall better user experience
18+
• enterprise-grade support for single sign-on (OIDC)
19+
• QR-code based login & device verification
20+
• natively integrated Element Call for video calls
21+
• continuous improvements, bug fixes and new features
22+
23+
If you’re an existing user, using the current Element app - check out the new Element X and start planning your transition. The current Element app will be phased out and will only get critical security updates.
1224

1325
<b>Own your data</b>
1426
Matrix-based, Element X lets you self-host your data or choose from any free public server (the default is matrix.org, but there are plenty of others to choose from). However you host, you have ownership; it’s your data. You’re not the product. You’re in control.
1527

1628
<b>Interoperate natively</b>
17-
Enjoy the freedom of the Matrix open standard! You have native interoperability with any other Matrix-based app. So just like email, it doesn't matter if your friends are on a different Matrix-based app you can still connect and chat.
29+
Enjoy the freedom of the Matrix open standard! You have native interoperability with any other Matrix-based app. So just like email, it doesn't matter if your friends, partners or customers are on a different Matrix-based app - you can still connect.
1830

1931
<b>Encrypt your data</b>
20-
Enjoy your right to private conversations - free from data mining, ads and all the rest of it - and stay secure. Only the people in your conversation can read your messages. And Element X E2EE applies to voice and video calls too.
32+
Enjoy your right to private conversations - free from data mining, ads and all the rest of it - and stay secure. Only the people in your conversation can read your messages.
2133

2234
<b>Chat across multiple devices</b>
23-
Stay in touch wherever you are with fully synchronized message history across all your devices, even those running ‘traditional’ Element, and on the web at https://app.element.io
35+
Stay in touch wherever you are with fully synchronized message history across all your devices, even those running Element legacy app, and on the web at https://app.element.io
2.41 MB
Loading
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Fastest ever Matrix client
1+
Sovereign. Seamless. On Matrix
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Element X - Secure messenger
1+
Element X - Secure Chat & Call

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/PinnedEventsTimelineProvider.kt

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@ import io.element.android.libraries.matrix.api.room.MatrixRoom
1818
import io.element.android.libraries.matrix.api.timeline.Timeline
1919
import io.element.android.libraries.matrix.api.timeline.TimelineProvider
2020
import kotlinx.coroutines.CoroutineScope
21+
import kotlinx.coroutines.coroutineScope
2122
import kotlinx.coroutines.flow.MutableStateFlow
2223
import kotlinx.coroutines.flow.StateFlow
2324
import kotlinx.coroutines.flow.combine
25+
import kotlinx.coroutines.flow.distinctUntilChanged
2426
import kotlinx.coroutines.flow.launchIn
25-
import kotlinx.coroutines.flow.onCompletion
27+
import kotlinx.coroutines.flow.map
2628
import kotlinx.coroutines.flow.onEach
2729
import javax.inject.Inject
2830

@@ -32,7 +34,8 @@ class PinnedEventsTimelineProvider @Inject constructor(
3234
private val networkMonitor: NetworkMonitor,
3335
private val featureFlagService: FeatureFlagService,
3436
) : TimelineProvider {
35-
private val _timelineStateFlow: MutableStateFlow<AsyncData<Timeline>> = MutableStateFlow(AsyncData.Uninitialized)
37+
private val _timelineStateFlow: MutableStateFlow<AsyncData<Timeline>> =
38+
MutableStateFlow(AsyncData.Uninitialized)
3639

3740
override fun activeTimelineFlow(): StateFlow<Timeline?> {
3841
return _timelineStateFlow
@@ -44,25 +47,46 @@ class PinnedEventsTimelineProvider @Inject constructor(
4447
val timelineStateFlow = _timelineStateFlow
4548

4649
fun launchIn(scope: CoroutineScope) {
50+
_timelineStateFlow.subscriptionCount
51+
.map { count -> count > 0 }
52+
.distinctUntilChanged()
53+
.onEach { isActive ->
54+
if (isActive) {
55+
onActive()
56+
} else {
57+
onInactive()
58+
}
59+
}
60+
.launchIn(scope)
61+
}
62+
63+
private suspend fun onActive() = coroutineScope {
4764
combine(
4865
featureFlagService.isFeatureEnabledFlow(FeatureFlags.PinnedEvents),
4966
networkMonitor.connectivity
50-
) {
51-
// do not use connectivity here as data can be loaded from cache, it's just to trigger retry if needed
52-
isEnabled, _ ->
67+
) { isEnabled, _ ->
68+
// do not use connectivity here as data can be loaded from cache, it's just to trigger retry if needed
5369
isEnabled
5470
}
5571
.onEach { isFeatureEnabled ->
5672
if (isFeatureEnabled) {
5773
loadTimelineIfNeeded()
5874
} else {
59-
_timelineStateFlow.value = AsyncData.Uninitialized
75+
resetTimeline()
6076
}
6177
}
62-
.onCompletion {
63-
invokeOnTimeline { close() }
64-
}
65-
.launchIn(scope)
78+
.launchIn(this)
79+
}
80+
81+
private suspend fun onInactive() {
82+
resetTimeline()
83+
}
84+
85+
private suspend fun resetTimeline() {
86+
invokeOnTimeline {
87+
close()
88+
}
89+
_timelineStateFlow.emit(AsyncData.Uninitialized)
6690
}
6791

6892
suspend fun invokeOnTimeline(action: suspend Timeline.() -> Unit) {

0 commit comments

Comments
 (0)