Skip to content

Commit f3f19ec

Browse files
authored
Merge branch 'develop' into feature/fga/join_space
2 parents f6cc4bc + d391be7 commit f3f19ec

File tree

319 files changed

+2826
-1836
lines changed

Some content is hidden

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

319 files changed

+2826
-1836
lines changed

app/src/main/res/xml/locales_config.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<locale android:name="el"/>
1010
<locale android:name="en"/>
1111
<locale android:name="en_US"/>
12+
<locale android:name="eo"/>
1213
<locale android:name="es"/>
1314
<locale android:name="et"/>
1415
<locale android:name="eu"/>

appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ import kotlinx.coroutines.flow.SharingStarted
5454
import kotlinx.coroutines.flow.combine
5555
import kotlinx.coroutines.flow.distinctUntilChanged
5656
import kotlinx.coroutines.flow.filter
57-
import kotlinx.coroutines.flow.first
5857
import kotlinx.coroutines.flow.launchIn
5958
import kotlinx.coroutines.flow.map
6059
import kotlinx.coroutines.flow.shareIn
@@ -111,7 +110,7 @@ class RoomFlowNode(
111110
data class JoinedRoom(val roomId: RoomId) : NavTarget
112111

113112
@Parcelize
114-
data class Space(val spaceId: RoomId) : NavTarget
113+
data class JoinedSpace(val spaceId: RoomId) : NavTarget
115114
}
116115

117116
override fun onBuilt() {
@@ -149,30 +148,28 @@ class RoomFlowNode(
149148
.withPreviousValue()
150149
combine(currentMembershipFlow, isSpaceFlow) { (previousMembership, membership), isSpace ->
151150
Timber.d("Room membership: $membership")
152-
when (membership) {
153-
CurrentUserMembership.JOINED -> {
154-
if (isSpace) {
155-
backstack.newRoot(NavTarget.Space(spaceId = roomId))
156-
} else {
157-
backstack.newRoot(NavTarget.JoinedRoom(roomId))
158-
}
151+
if (membership == CurrentUserMembership.JOINED) {
152+
if (isSpace) {
153+
backstack.newRoot(NavTarget.JoinedSpace(spaceId = roomId))
154+
} else {
155+
backstack.newRoot(NavTarget.JoinedRoom(roomId))
159156
}
160-
else -> {
161-
if (membership == CurrentUserMembership.LEFT && previousMembership == CurrentUserMembership.JOINED) {
162-
// The user left the room in this device, remove the room from the backstack
163-
if (!membershipUpdateFlow.first().isUserInRoom) {
164-
navigateUp()
165-
}
166-
} else {
167-
// Was invited or the room is not known, display the join room screen
168-
backstack.newRoot(
169-
NavTarget.JoinRoom(
170-
roomId = roomId,
171-
serverNames = serverNames,
172-
trigger = inputs.trigger.getOrNull() ?: JoinedRoom.Trigger.Invite,
173-
)
157+
} else {
158+
val leavingFromCurrentDevice =
159+
membership == CurrentUserMembership.LEFT &&
160+
previousMembership == CurrentUserMembership.JOINED &&
161+
membershipUpdateFlow.replayCache.lastOrNull()?.isUserInRoom == false
162+
163+
if (leavingFromCurrentDevice) {
164+
navigateUp()
165+
} else {
166+
backstack.newRoot(
167+
NavTarget.JoinRoom(
168+
roomId = roomId,
169+
serverNames = serverNames,
170+
trigger = inputs.trigger.getOrNull() ?: JoinedRoom.Trigger.Invite,
174171
)
175-
}
172+
)
176173
}
177174
}
178175
}.launchIn(lifecycleScope)
@@ -214,7 +211,7 @@ class RoomFlowNode(
214211
)
215212
createNode<JoinedRoomFlowNode>(buildContext, plugins = listOf(inputs) + roomFlowNodeCallback)
216213
}
217-
is NavTarget.Space -> {
214+
is NavTarget.JoinedSpace -> {
218215
val spaceCallback = plugins<SpaceEntryPoint.Callback>().single()
219216
spaceEntryPoint.nodeBuilder(this, buildContext)
220217
.inputs(SpaceEntryPoint.Inputs(roomId = navTarget.spaceId))

build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ allprojects {
9393
// Fix compilation warning for annotations
9494
// See https://youtrack.jetbrains.com/issue/KT-73255/Change-defaulting-rule-for-annotations for more details
9595
freeCompilerArgs.add("-Xannotation-default-target=first-only")
96+
// Opt-in to context receivers
97+
freeCompilerArgs.add("-Xcontext-parameters")
9698
}
9799
}
98100
}

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
@@ -41,5 +41,8 @@ data class WidgetMessage(
4141

4242
@SerialName("send_event")
4343
SendEvent,
44+
45+
@SerialName("content_loaded")
46+
ContentLoaded,
4447
}
4548
}

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class CallScreenPresenter(
7979
val urlState = remember { mutableStateOf<AsyncData<String>>(AsyncData.Uninitialized) }
8080
val callWidgetDriver = remember { mutableStateOf<MatrixWidgetDriver?>(null) }
8181
val messageInterceptor = remember { mutableStateOf<WidgetMessageInterceptor?>(null) }
82-
var isJoinedCall by rememberSaveable { mutableStateOf(false) }
82+
var isWidgetLoaded by rememberSaveable { mutableStateOf(false) }
8383
var ignoreWebViewError by rememberSaveable { mutableStateOf(false) }
8484
var webViewError by remember { mutableStateOf<String?>(null) }
8585
val languageTag = languageTagProvider.provideLanguageTag()
@@ -139,8 +139,8 @@ class CallScreenPresenter(
139139
if (parsedMessage?.direction == WidgetMessage.Direction.FromWidget) {
140140
if (parsedMessage.action == WidgetMessage.Action.Close) {
141141
close(callWidgetDriver.value, navigator)
142-
} else if (parsedMessage.action == WidgetMessage.Action.Join) {
143-
isJoinedCall = true
142+
} else if (parsedMessage.action == WidgetMessage.Action.ContentLoaded) {
143+
isWidgetLoaded = true
144144
}
145145
}
146146
}
@@ -151,8 +151,8 @@ class CallScreenPresenter(
151151
// Wait for the call to be joined, if it takes too long, we display an error
152152
delay(10.seconds)
153153

154-
if (!isJoinedCall) {
155-
Timber.w("The call took too long to be joined. Displaying an error before exiting.")
154+
if (!isWidgetLoaded) {
155+
Timber.w("The call took too long to load. Displaying an error before exiting.")
156156

157157
// This will display a simple 'Sorry, an error occurred' dialog and force the user to exit the call
158158
webViewError = ""
@@ -165,10 +165,10 @@ class CallScreenPresenter(
165165
is CallScreenEvents.Hangup -> {
166166
val widgetId = callWidgetDriver.value?.id
167167
val interceptor = messageInterceptor.value
168-
if (widgetId != null && interceptor != null && isJoinedCall) {
168+
if (widgetId != null && interceptor != null && isWidgetLoaded) {
169169
// If the call was joined, we need to hang up first. Then the UI will be dismissed automatically.
170170
sendHangupMessage(widgetId, interceptor)
171-
isJoinedCall = false
171+
isWidgetLoaded = false
172172

173173
coroutineScope.launch {
174174
// Wait for a couple of seconds to receive the hangup message
@@ -198,7 +198,7 @@ class CallScreenPresenter(
198198
urlState = urlState.value,
199199
webViewError = webViewError,
200200
userAgent = userAgent,
201-
isCallActive = isJoinedCall,
201+
isCallActive = isWidgetLoaded,
202202
isInWidgetMode = isInWidgetMode,
203203
eventSink = { handleEvents(it) },
204204
)

features/call/impl/src/test/kotlin/io/element/android/features/call/ui/CallScreenPresenterTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ import kotlin.time.Duration.Companion.seconds
215215
}
216216

217217
@Test
218-
fun `present - a received 'joined' action makes the call to be active`() = runTest {
218+
fun `present - a received 'content loaded' action makes the call to be active`() = runTest {
219219
val navigator = FakeCallScreenNavigator()
220220
val widgetDriver = FakeMatrixWidgetDriver()
221221
val presenter = createCallScreenPresenter(
@@ -238,7 +238,7 @@ import kotlin.time.Duration.Companion.seconds
238238
messageInterceptor.givenInterceptedMessage(
239239
"""
240240
{
241-
"action":"io.element.join",
241+
"action":"content_loaded",
242242
"api":"fromWidget",
243243
"widgetId":"1",
244244
"requestId":"1"

features/changeroommemberroles/impl/src/main/res/values-cy/translations.xml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
33
<string name="screen_room_change_permissions_administrators">"Gweinyddwyr yn unig"</string>
44
<string name="screen_room_change_permissions_ban_people">"Gwahardd pobl"</string>
5-
<string name="screen_room_change_permissions_delete_messages">"Dileu negeseuon"</string>
5+
<string name="screen_room_change_permissions_delete_messages">"Tynnu negeseuon"</string>
66
<string name="screen_room_change_permissions_everyone">"Pawb"</string>
77
<string name="screen_room_change_permissions_invite_people">"Gwahodd pobl a derbyn ceisiadau i ymuno"</string>
88
<string name="screen_room_change_permissions_member_moderation">"Cymedroli aelodau"</string>
@@ -17,13 +17,17 @@
1717
<string name="screen_room_change_role_administrators_title">"Golygu Gweinyddwyr"</string>
1818
<string name="screen_room_change_role_confirm_add_admin_description">"Fyddwch chi ddim yn gallu dadwneud y weithred hon. Rydych chi\'n hyrwyddo\'r defnyddiwr i gael yr un lefel pŵer â chi."</string>
1919
<string name="screen_room_change_role_confirm_add_admin_title">"Ychwanegu Gweinyddwr?"</string>
20+
<string name="screen_room_change_role_confirm_change_owners_description">"Fyddwch chi ddim yn gallu dadwneud y weithred hon. Rydych yn trosglwyddo\'r berchnogaeth i\'r defnyddwyr a ddewiswyd. Unwaith y byddwch yn gadael bydd hyn yn barhaol."</string>
21+
<string name="screen_room_change_role_confirm_change_owners_title">"Trosglwyddo perchnogaeth?"</string>
2022
<string name="screen_room_change_role_confirm_demote_self_action">"Gostwng"</string>
2123
<string name="screen_room_change_role_confirm_demote_self_description">"Fyddwch chi ddim yn gallu dadwneud y newid hwn gan eich bod yn israddio eich hun, os mai chi yw\'r defnyddiwr breintiedig olaf yn yr ystafell bydd yn amhosibl adennill breintiau."</string>
2224
<string name="screen_room_change_role_confirm_demote_self_title">"Israddio eich hun?"</string>
2325
<string name="screen_room_change_role_invited_member_name">"%1$s (Yn aros)"</string>
2426
<string name="screen_room_change_role_invited_member_name_android">"Yn aros"</string>
2527
<string name="screen_room_change_role_moderators_admin_section_footer">"Mae gan weinyddwyr freintiau cymedrolwr yn awtomatig"</string>
28+
<string name="screen_room_change_role_moderators_owner_section_footer">"Mae gan berchnogion freintiau gweinyddwr yn awtomatig."</string>
2629
<string name="screen_room_change_role_moderators_title">"Golygu Cymedrolwyr"</string>
30+
<string name="screen_room_change_role_owners_title">"Dewiswch Berchnogion"</string>
2731
<string name="screen_room_change_role_section_administrators">"Gweinyddwyr"</string>
2832
<string name="screen_room_change_role_section_moderators">"Cymedrolwyr"</string>
2933
<string name="screen_room_change_role_section_users">"Aelodau"</string>
@@ -48,15 +52,18 @@
4852
<string name="screen_room_member_list_pending_header_title">"Dan ystyriaeth"</string>
4953
<string name="screen_room_member_list_role_administrator">"Gweinyddwr"</string>
5054
<string name="screen_room_member_list_role_moderator">"Cymedrolwr"</string>
55+
<string name="screen_room_member_list_role_owner">"Perchennog"</string>
5156
<string name="screen_room_member_list_room_members_header_title">"Aelodau\'r ystafell"</string>
5257
<string name="screen_room_member_list_unbanning_user">"Dad-wahardd %1$s"</string>
5358
<string name="screen_room_roles_and_permissions_admins">"Gweinyddwyr"</string>
59+
<string name="screen_room_roles_and_permissions_admins_and_owners">"Gweinyddwyr a pherchnogion"</string>
5460
<string name="screen_room_roles_and_permissions_change_my_role">"Newid fy rôl"</string>
5561
<string name="screen_room_roles_and_permissions_change_role_demote_to_member">"Israddio aelod"</string>
5662
<string name="screen_room_roles_and_permissions_change_role_demote_to_moderator">"Israddio cymedrolwr"</string>
5763
<string name="screen_room_roles_and_permissions_member_moderation">"Cymedroli aelodau"</string>
5864
<string name="screen_room_roles_and_permissions_messages_and_content">"Negeseuon a chynnwys"</string>
5965
<string name="screen_room_roles_and_permissions_moderators">"Cymedrolwyr"</string>
66+
<string name="screen_room_roles_and_permissions_owners">"Perchnogion"</string>
6067
<string name="screen_room_roles_and_permissions_permissions_header">"Caniatâd"</string>
6168
<string name="screen_room_roles_and_permissions_reset">"Ailosod caniatâd"</string>
6269
<string name="screen_room_roles_and_permissions_reset_confirm_description">"Ar ôl i chi ailosod caniatâd, byddwch yn colli\'r gosodiadau cyfredol."</string>

features/changeroommemberroles/impl/src/main/res/values-fi/translations.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616
<string name="screen_room_change_permissions_send_messages">"Viestien lähettäminen"</string>
1717
<string name="screen_room_change_role_administrators_title">"Muokkaa ylläpitäjiä"</string>
1818
<string name="screen_room_change_role_confirm_add_admin_description">"Et voi peruuttaa tätä toimenpidettä. Ylennät käyttäjän samalle oikeustasolle kuin sinä."</string>
19-
<string name="screen_room_change_role_confirm_add_admin_title">"Lisää ylläpitäjä?"</string>
19+
<string name="screen_room_change_role_confirm_add_admin_title">"Lisätäänkö ylläpitäjä?"</string>
2020
<string name="screen_room_change_role_confirm_change_owners_description">"Et voi kumota tätä toimintoa. Olet siirtämässä omistajuuden valituille käyttäjille. Kun poistut, muutos on pysyvä."</string>
2121
<string name="screen_room_change_role_confirm_change_owners_title">"Siirretäänkö omistajuus?"</string>
2222
<string name="screen_room_change_role_confirm_demote_self_action">"Alenna"</string>
2323
<string name="screen_room_change_role_confirm_demote_self_description">"Et voi perua tätä muutosta, koska olet alentamassa itseäsi. Jos olet viimeinen oikeutettu henkilö tässä huoneessa, oikeuksia ei voi enää saada takaisin."</string>
24-
<string name="screen_room_change_role_confirm_demote_self_title">"Alenna itsesi?"</string>
24+
<string name="screen_room_change_role_confirm_demote_self_title">"Haluatko alentaa itsesi?"</string>
2525
<string name="screen_room_change_role_invited_member_name">"%1$s (Kutsuttu)"</string>
2626
<string name="screen_room_change_role_invited_member_name_android">"(Kutsuttu)"</string>
2727
<string name="screen_room_change_role_moderators_admin_section_footer">"Ylläpitäjillä on automaattisesti valvojan oikeudet"</string>
@@ -32,7 +32,7 @@
3232
<string name="screen_room_change_role_section_moderators">"Valvojat"</string>
3333
<string name="screen_room_change_role_section_users">"Jäsenet"</string>
3434
<string name="screen_room_change_role_unsaved_changes_description">"Sinulla on tallentamattomia muutoksia"</string>
35-
<string name="screen_room_change_role_unsaved_changes_title">"Tallenna muutokset?"</string>
35+
<string name="screen_room_change_role_unsaved_changes_title">"Tallennetaanko muutokset?"</string>
3636
<string name="screen_room_member_list_banned_empty">"Tässä huoneessa ei ole porttikieltoja"</string>
3737
<plurals name="screen_room_member_list_header_title">
3838
<item quantity="one">"%1$d henkilö"</item>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
3+
<string name="screen_deactivate_account_list_item_3">"Delete your account information from our server."</string>
4+
</resources>

features/ftue/api/src/main/kotlin/io/element/android/features/ftue/api/state/FtueService.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@ import kotlinx.coroutines.flow.StateFlow
1515
interface FtueService {
1616
/** The current state of the FTUE. */
1717
val state: StateFlow<FtueState>
18-
19-
/** Reset the FTUE state. */
20-
suspend fun reset()
2118
}
2219

2320
/** The state of the FTUE. */

0 commit comments

Comments
 (0)