Merge branch 'develop' into feature/fga/csam_preferences_server

This commit is contained in:
ganfra 2025-06-30 21:42:06 +02:00
commit 773fa1657a
623 changed files with 4661 additions and 2049 deletions

View file

@ -15,6 +15,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.produceState
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import io.element.android.features.logout.api.direct.DirectLogoutState
import io.element.android.features.preferences.impl.utils.ShowDeveloperSettingsProvider
@ -49,6 +50,7 @@ class PreferencesRootPresenter @Inject constructor(
) : Presenter<PreferencesRootState> {
@Composable
override fun present(): PreferencesRootState {
val coroutineScope = rememberCoroutineScope()
val matrixUser = matrixClient.userProfile.collectAsState()
LaunchedEffect(Unit) {
// Force a refresh of the profile
@ -103,7 +105,7 @@ class PreferencesRootPresenter @Inject constructor(
fun handleEvent(event: PreferencesRootEvents) {
when (event) {
is PreferencesRootEvents.OnVersionInfoClick -> {
showDeveloperSettingsProvider.unlockDeveloperSettings()
showDeveloperSettingsProvider.unlockDeveloperSettings(coroutineScope)
}
}
}

View file

@ -9,6 +9,8 @@ package io.element.android.features.preferences.impl.utils
import io.element.android.libraries.core.meta.BuildMeta
import io.element.android.libraries.core.meta.BuildType
import io.element.android.libraries.ui.utils.MultipleTapToUnlock
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import javax.inject.Inject
@ -19,18 +21,15 @@ class ShowDeveloperSettingsProvider @Inject constructor(
companion object {
const val DEVELOPER_SETTINGS_COUNTER = 7
}
private var counter = DEVELOPER_SETTINGS_COUNTER
private val multipleTapToUnlock = MultipleTapToUnlock(DEVELOPER_SETTINGS_COUNTER)
private val isDeveloperBuild = buildMeta.buildType != BuildType.RELEASE
private val _showDeveloperSettings = MutableStateFlow(isDeveloperBuild)
val showDeveloperSettings: StateFlow<Boolean> = _showDeveloperSettings
fun unlockDeveloperSettings() {
if (counter == 0) {
return
}
counter--
if (counter == 0) {
fun unlockDeveloperSettings(scope: CoroutineScope) {
if (multipleTapToUnlock.unlock(scope)) {
_showDeveloperSettings.value = true
}
}

View file

@ -1,7 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_advanced_settings_choose_distributor_dialog_title_android">"Изберете как да получавате известия"</string>
<string name="screen_advanced_settings_hide_invite_avatars_toggle_title">"Скриване на профилните снимки в заявките за покана за стая"</string>
<string name="screen_advanced_settings_media_compression_title">"Оптимизиране на качеството на медията"</string>
<string name="screen_advanced_settings_moderation_and_safety_section_title">"Модерация и безопасност"</string>
<string name="screen_advanced_settings_send_read_receipts">"Потвърждения за прочитане"</string>
<string name="screen_advanced_settings_share_presence">"Споделяне на присъствието"</string>
<string name="screen_advanced_settings_show_media_timeline_always_hide">"Скриване винаги"</string>
<string name="screen_advanced_settings_show_media_timeline_always_show">"Показване винаги"</string>
<string name="screen_advanced_settings_show_media_timeline_private_rooms">"В частни стаи"</string>
<string name="screen_blocked_users_unblock_alert_action">"Отблокиране"</string>
<string name="screen_blocked_users_unblock_alert_title">"Отблокиране на потребителя"</string>
<string name="screen_edit_profile_display_name">"Име"</string>
@ -20,6 +27,7 @@
<string name="screen_notification_settings_enable_notifications">"Включване на известията на това устройство"</string>
<string name="screen_notification_settings_group_chats">"Групови чатове"</string>
<string name="screen_notification_settings_invite_for_me_label">"Покани"</string>
<string name="screen_notification_settings_mentions_only_disclaimer">"Вашият сървър не поддържа тази опция в шифровани стаи, може да не получавате известия в някои стаи."</string>
<string name="screen_notification_settings_mentions_section_title">"Споменавания"</string>
<string name="screen_notification_settings_mode_mentions">"Споменавания"</string>
<string name="screen_notification_settings_notification_section_title">"Да бъда известяван за"</string>

View file

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="full_screen_intent_banner_message">"For at sikre, at du aldrig går glip af et vigtigt opkald, skal du ændre dine indstillinger til at tillade underretninger i fuld skærm, når din telefon er låst."</string>
<string name="full_screen_intent_banner_title">"Gør din opkaldsoplevelse bedre"</string>
<string name="screen_advanced_settings_choose_distributor_dialog_title_android">"Vælg, hvordan du vil modtage notifikationer"</string>
<string name="screen_advanced_settings_developer_mode">"Udviklertilstand"</string>
<string name="screen_advanced_settings_developer_mode_description">"Aktivér for at få adgang til funktioner og funktionalitet for udviklere."</string>
<string name="screen_advanced_settings_element_call_base_url">"Brugerdefineret URL til opkaldsbase for Element"</string>
<string name="screen_advanced_settings_element_call_base_url_description">"Angiv en brugerdefineret basis-URL til Element Call."</string>
<string name="screen_advanced_settings_element_call_base_url_validation_error">"Ugyldig URL, sørg for at inkludere protokollen (http/https) og den korrekte adresse."</string>
<string name="screen_advanced_settings_hide_invite_avatars_toggle_title">"Skjul avatarer i ruminvitationsanmodninger"</string>
<string name="screen_advanced_settings_hide_timeline_media_toggle_title">"Skjul forhåndsvisning af medier i tidslinjen"</string>
<string name="screen_advanced_settings_media_compression_description">"Upload fotos og videoer hurtigere, og reducér dataforbrug"</string>
<string name="screen_advanced_settings_media_compression_title">"Optimér mediekvaliteten"</string>
<string name="screen_advanced_settings_moderation_and_safety_section_title">"Moderation og sikkerhed"</string>
<string name="screen_advanced_settings_push_provider_android">"Udbyder af push-notifikationer"</string>
<string name="screen_advanced_settings_rich_text_editor_description">"Deaktiver rich text-editoren for at skrive Markdown manuelt."</string>
<string name="screen_advanced_settings_send_read_receipts">"Kvitteringerforlæsning"</string>
<string name="screen_advanced_settings_send_read_receipts_description">"Hvis deaktiveret, sendes dine læsekvitteringer ikke til nogen. Du vil stadig modtage læsekvitteringer fra andre brugere."</string>
<string name="screen_advanced_settings_share_presence">"Del tilstedeværelse"</string>
<string name="screen_advanced_settings_share_presence_description">"Hvis deaktiveret, kan du ikke sende eller modtage læsekvitteringer eller indtastningsmeddelelser."</string>
<string name="screen_advanced_settings_show_media_timeline_always_hide">"Skjul altid"</string>
<string name="screen_advanced_settings_show_media_timeline_always_show">"Vis altid"</string>
<string name="screen_advanced_settings_show_media_timeline_private_rooms">"I private rum"</string>
<string name="screen_advanced_settings_show_media_timeline_subtitle">"Et skjult medie kan altid vises ved at trykke på det"</string>
<string name="screen_advanced_settings_show_media_timeline_title">"Vis medier i tidslinjen"</string>
<string name="screen_advanced_settings_view_source_description">"Aktivér mulighed for at se meddelelseskilden i tidslinjen."</string>
<string name="screen_blocked_users_empty">"Du har ingen blokerede brugere"</string>
<string name="screen_blocked_users_unblock_alert_action">"Fjern blokering"</string>
<string name="screen_blocked_users_unblock_alert_description">"Du vil være i stand til at se alle beskeder fra dem igen."</string>
<string name="screen_blocked_users_unblock_alert_title">"Fjern blokering af bruger"</string>
<string name="screen_blocked_users_unblocking">"Fjerner blokering…"</string>
<string name="screen_edit_profile_display_name">"Vist navn"</string>
<string name="screen_edit_profile_display_name_placeholder">"Dit viste navn"</string>
<string name="screen_edit_profile_error">"Der opstod en ukendt fejl, og oplysningerne kunne ikke ændres."</string>
<string name="screen_edit_profile_error_title">"Kan ikke opdatere profilen"</string>
<string name="screen_edit_profile_title">"Redigér profil"</string>
<string name="screen_edit_profile_updating_details">"Opdaterer profil…"</string>
<string name="screen_notification_settings_additional_settings_section_title">"Yderligere indstillinger"</string>
<string name="screen_notification_settings_calls_label">"Lyd- og videoopkald"</string>
<string name="screen_notification_settings_configuration_mismatch">"Uoverensstemmelse i konfigurationen"</string>
<string name="screen_notification_settings_configuration_mismatch_description">"Vi har forenklet indstillingerne for notifikationer for at gøre det nemmere at finde dem. Nogle af de brugerdefinerede indstillinger, du tidligere har valgt, vises ikke her, men de er stadig aktive.
Hvis du fortsætter, kan nogle af dine indstillinger blive ændret."</string>
<string name="screen_notification_settings_direct_chats">"Direkte samtaler"</string>
<string name="screen_notification_settings_edit_custom_settings_section_title">"Brugerdefineret indstilling pr. samtale"</string>
<string name="screen_notification_settings_edit_failed_updating_default_mode">"Der opstod en fejl under opdatering af notifikationsindstillingen."</string>
<string name="screen_notification_settings_edit_mode_all_messages">"Alle beskeder"</string>
<string name="screen_notification_settings_edit_mode_mentions_and_keywords">"Kun omtaler og nøgleord"</string>
<string name="screen_notification_settings_edit_screen_direct_section_header">"I direkte samtaler, giv mig besked om"</string>
<string name="screen_notification_settings_edit_screen_group_section_header">"I gruppesamtaler, giv mig besked ved"</string>
<string name="screen_notification_settings_enable_notifications">"Aktivér notifikationer på denne enhed"</string>
<string name="screen_notification_settings_failed_fixing_configuration">"Konfigurationen er ikke blevet rettet, prøv igen."</string>
<string name="screen_notification_settings_group_chats">"Gruppesamtaler"</string>
<string name="screen_notification_settings_invite_for_me_label">"Invitationer"</string>
<string name="screen_notification_settings_mentions_only_disclaimer">"Din hjemmeserver understøtter ikke denne mulighed i krypterede rum, og derfor er det muligt at du ikke får besked i alle rum."</string>
<string name="screen_notification_settings_mentions_section_title">"Omtaler"</string>
<string name="screen_notification_settings_mode_all">"Alle"</string>
<string name="screen_notification_settings_mode_mentions">"Omtaler"</string>
<string name="screen_notification_settings_notification_section_title">"Giv mig besked om"</string>
<string name="screen_notification_settings_room_mention_label">"Giv mig besked på @room"</string>
<string name="screen_notification_settings_system_notifications_action_required">"For at modtage notifikationer, skal du ændre din %1$s ."</string>
<string name="screen_notification_settings_system_notifications_action_required_content_link">"systemindstillinger"</string>
<string name="screen_notification_settings_system_notifications_turned_off">"Systemmeddelelser slået fra"</string>
<string name="screen_notification_settings_title">"Notifikationer"</string>
<string name="troubleshoot_notifications_entry_point_push_history_title">"Push-historik"</string>
<string name="troubleshoot_notifications_entry_point_section">"Fejlfind"</string>
<string name="troubleshoot_notifications_entry_point_title">"Fejlfinding af meddelelser"</string>
</resources>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="full_screen_intent_banner_message">"Για να διασφαλίσεις ότι δεν θα χάσεις ποτέ μια σημαντική κλήση, άλλαξε τις ρυθμίσεις σου για να επιτρέψεις τις ειδοποιήσεις πλήρους οθόνης όταν το τηλέφωνό σου είναι κλειδωμένο."</string>
<string name="full_screen_intent_banner_message">"Για να διασφαλίσετε ότι δεν θα χάσετε ποτέ μια σημαντική κλήση, αλλάξτε τις ρυθμίσεις σας ώστε να επιτρέπονται οι ειδοποιήσεις πλήρους οθόνης όταν το τηλέφωνό σας είναι κλειδωμένο."</string>
<string name="full_screen_intent_banner_title">"Βελτίωσε την εμπειρία κλήσεων"</string>
<string name="screen_advanced_settings_choose_distributor_dialog_title_android">"Επέλεξε τον τρόπο λήψης ειδοποιήσεων"</string>
<string name="screen_advanced_settings_developer_mode">"Λειτουργία προγραμματιστή"</string>
@ -8,7 +8,7 @@
<string name="screen_advanced_settings_element_call_base_url">"Προσαρμοσμένο URL βάσης κλήσεων Element"</string>
<string name="screen_advanced_settings_element_call_base_url_description">"Όρισε μια προσαρμοσμένη διεύθυνση βάσης URL για κλήση Element."</string>
<string name="screen_advanced_settings_element_call_base_url_validation_error">"Μη έγκυρη διεύθυνση URL, βεβαιώσου ότι έχεις συμπεριλάβει το πρωτόκολλο (http/https) και τη σωστή διεύθυνση."</string>
<string name="screen_advanced_settings_hide_invite_avatars_toggle_title">"Απόκρυψη εικόνων προφίλ σε αιτήματα πρόσκλησης δωματίου"</string>
<string name="screen_advanced_settings_hide_invite_avatars_toggle_title">"Απόκρυψη εικόνων προφίλ σε αιτήματα πρόσκλησης αίθουσας"</string>
<string name="screen_advanced_settings_hide_timeline_media_toggle_title">"Απόκρυψη προεπισκοπήσεων πολυμέσων στο timeline"</string>
<string name="screen_advanced_settings_media_compression_description">"Ανέβασε φωτογραφίες και βίντεο γρηγορότερα και μείωσε τη χρήση δεδομένων"</string>
<string name="screen_advanced_settings_media_compression_title">"Βελτιστοποίηση ποιότητας των μέσων"</string>
@ -21,7 +21,7 @@
<string name="screen_advanced_settings_share_presence_description">"Εάν απενεργοποιηθεί, δεν θα μπορείς να στέλνεις ή να λαμβάνεις αποδεικτικά ανάγνωσης ή ειδοποιήσεις πληκτρολόγησης."</string>
<string name="screen_advanced_settings_show_media_timeline_always_hide">"Πάντα απόκρυψη"</string>
<string name="screen_advanced_settings_show_media_timeline_always_show">"Πάντα εμφάνιση"</string>
<string name="screen_advanced_settings_show_media_timeline_private_rooms">"Σε ιδιωτικά δωμάτια"</string>
<string name="screen_advanced_settings_show_media_timeline_private_rooms">"Σε ιδιωτικές αίθουσες"</string>
<string name="screen_advanced_settings_show_media_timeline_subtitle">"Ένα κρυφό πολυμέσο μπορεί πάντα να εμφανιστεί πατώντας το"</string>
<string name="screen_advanced_settings_show_media_timeline_title">"Εμφάνιση πολυμέσων στο timeline"</string>
<string name="screen_advanced_settings_view_source_description">"Ενεργοποίησε την επιλογή για προβολή πηγής μηνυμάτων στη ροή."</string>
@ -53,7 +53,7 @@
<string name="screen_notification_settings_failed_fixing_configuration">"Η διαμόρφωση δεν έχει διορθωθεί, δοκίμασε ξανά."</string>
<string name="screen_notification_settings_group_chats">"Ομαδικές συνομιλίες"</string>
<string name="screen_notification_settings_invite_for_me_label">"Προσκλήσεις"</string>
<string name="screen_notification_settings_mentions_only_disclaimer">"Ο οικιακός διακομιστής σου δεν υποστηρίζει αυτήν την επιλογή σε κρυπτογραφημένα δωμάτια, ενδέχεται να μην λάβεις ειδοποίηση σε ορισμένα δωμάτια."</string>
<string name="screen_notification_settings_mentions_only_disclaimer">"Ο αρχικός διακομιστής σας δεν υποστηρίζει αυτή την επιλογή σε κρυπτογραφημένες αίθουσες, ενδέχεται να μην λαμβάνετε ειδοποιήσεις σε ορισμένες αίθουσες."</string>
<string name="screen_notification_settings_mentions_section_title">"Αναφορές"</string>
<string name="screen_notification_settings_mode_all">"Όλα"</string>
<string name="screen_notification_settings_mode_mentions">"Αναφορές"</string>