Browse Source

Merge branch 'develop' into feature/fga/fix_restoration

feature/jme/update_rust_sdk
ganfra 2 years ago
parent
commit
9cf88fff5f
  1. 3
      app/src/main/kotlin/io/element/android/x/info/Logs.kt
  2. 2
      app/src/main/kotlin/io/element/android/x/initializer/MatrixInitializer.kt
  3. 2
      app/src/main/kotlin/io/element/android/x/initializer/TimberInitializer.kt
  4. 2
      app/src/main/kotlin/io/element/android/x/root/RootPresenter.kt
  5. 2
      app/src/main/kotlin/io/element/android/x/root/RootView.kt
  6. 6
      features/login/src/main/kotlin/io/element/android/features/login/changeserver/ChangeServerView.kt
  7. 2
      features/login/src/main/kotlin/io/element/android/features/login/error/ErrorFormatter.kt
  8. 4
      features/login/src/main/kotlin/io/element/android/features/login/root/LoginRootScreen.kt
  9. 2
      features/messages/src/main/kotlin/io/element/android/features/messages/MessagesState.kt
  10. 6
      features/messages/src/main/kotlin/io/element/android/features/messages/MessagesView.kt
  11. 2
      features/messages/src/main/kotlin/io/element/android/features/messages/actionlist/ActionListPresenter.kt
  12. 2
      features/messages/src/main/kotlin/io/element/android/features/messages/actionlist/ActionListView.kt
  13. 1
      features/messages/src/main/kotlin/io/element/android/features/messages/actionlist/model/TimelineItemAction.kt
  14. 24
      features/messages/src/main/kotlin/io/element/android/features/messages/timeline/TimelineView.kt
  15. 2
      features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/MessageEventBubble.kt
  16. 4
      features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/TimelineItemTextView.kt
  17. 2
      features/messages/src/main/kotlin/io/element/android/features/messages/timeline/model/TimelineItem.kt
  18. 4
      features/preferences/src/main/kotlin/io/element/android/features/preferences/root/PreferencesRootPresenter.kt
  19. 2
      features/preferences/src/main/kotlin/io/element/android/features/preferences/root/PreferencesRootState.kt
  20. 4
      features/preferences/src/main/kotlin/io/element/android/features/preferences/root/PreferencesRootView.kt
  21. 4
      features/rageshake/src/main/kotlin/io/element/android/features/rageshake/bugreport/BugReportPresenter.kt
  22. 2
      features/rageshake/src/main/kotlin/io/element/android/features/rageshake/bugreport/BugReportView.kt
  23. 2
      features/rageshake/src/main/kotlin/io/element/android/features/rageshake/crash/CrashDataStore.kt
  24. 2
      features/rageshake/src/main/kotlin/io/element/android/features/rageshake/crash/VectorUncaughtExceptionHandler.kt
  25. 2
      features/rageshake/src/main/kotlin/io/element/android/features/rageshake/crash/ui/CrashDetectionPresenter.kt
  26. 2
      features/rageshake/src/main/kotlin/io/element/android/features/rageshake/detection/RageshakeDetectionView.kt
  27. 2
      features/rageshake/src/main/kotlin/io/element/android/features/rageshake/preferences/RageshakePreferencesPresenter.kt
  28. 2
      features/rageshake/src/main/kotlin/io/element/android/features/rageshake/rageshake/RageshakeDataStore.kt
  29. 20
      features/rageshake/src/main/kotlin/io/element/android/features/rageshake/reporter/BugReporter.kt
  30. 2
      features/roomlist/src/main/kotlin/io/element/android/features/roomlist/RoomListView.kt
  31. 2
      features/roomlist/src/main/kotlin/io/element/android/features/roomlist/components/RoomSummaryRow.kt
  32. 4
      features/roomlist/src/test/kotlin/io/element/android/features/roomlist/RoomListPresenterTests.kt
  33. 2
      features/template/src/main/AndroidManifest.xml
  34. 1
      features/template/src/main/kotlin/io/element/android/features/template/TemplateNode.kt
  35. 2
      libraries/matrix/src/main/kotlin/io/element/android/libraries/matrix/permalink/PermalinkParser.kt
  36. 6
      libraries/matrix/src/main/kotlin/io/element/android/libraries/matrix/room/RoomSummaryDataSource.kt
  37. 6
      libraries/matrixtest/src/main/kotlin/io/element/android/libraries/matrixtest/FakeMatrixClient.kt
  38. 2
      libraries/matrixtest/src/main/kotlin/io/element/android/libraries/matrixtest/room/FakeMatrixRoom.kt
  39. 1
      libraries/testtags/src/main/kotlin/io/element/android/libraries/testtags/Compose.kt
  40. 1
      libraries/ui-strings/src/main/res/values-cs/strings.xml
  41. 1
      libraries/ui-strings/src/main/res/values-de/strings.xml
  42. 1
      libraries/ui-strings/src/main/res/values-et/strings.xml
  43. 1
      libraries/ui-strings/src/main/res/values-fa/strings.xml
  44. 1
      libraries/ui-strings/src/main/res/values-fr/strings.xml
  45. 1
      libraries/ui-strings/src/main/res/values-hu/strings.xml
  46. 3
      libraries/ui-strings/src/main/res/values-in/strings.xml
  47. 17
      libraries/ui-strings/src/main/res/values-ja/strings.xml
  48. 40
      libraries/ui-strings/src/main/res/values-pl/strings.xml
  49. 72
      libraries/ui-strings/src/main/res/values-ru/strings.xml
  50. 1
      libraries/ui-strings/src/main/res/values-sk/strings.xml
  51. 1
      libraries/ui-strings/src/main/res/values-uk/strings.xml
  52. 2
      libraries/ui-strings/src/main/res/values/donottranslate.xml
  53. 1
      libraries/ui-strings/src/main/res/values/strings.xml

3
app/src/main/kotlin/io/element/android/x/info/Logs.kt

@ -19,7 +19,8 @@ package io.element.android.x.info
import io.element.android.x.BuildConfig import io.element.android.x.BuildConfig
import timber.log.Timber import timber.log.Timber
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.Date
import java.util.Locale
fun logApplicationInfo() { fun logApplicationInfo() {
val appVersion = buildString { val appVersion = buildString {

2
app/src/main/kotlin/io/element/android/x/initializer/MatrixInitializer.kt

@ -18,9 +18,9 @@ package io.element.android.x.initializer
import android.content.Context import android.content.Context
import androidx.startup.Initializer import androidx.startup.Initializer
import io.element.android.x.BuildConfig
import io.element.android.libraries.matrix.tracing.TracingConfigurations import io.element.android.libraries.matrix.tracing.TracingConfigurations
import io.element.android.libraries.matrix.tracing.setupTracing import io.element.android.libraries.matrix.tracing.setupTracing
import io.element.android.x.BuildConfig
class MatrixInitializer : Initializer<Unit> { class MatrixInitializer : Initializer<Unit> {

2
app/src/main/kotlin/io/element/android/x/initializer/TimberInitializer.kt

@ -18,8 +18,8 @@ package io.element.android.x.initializer
import android.content.Context import android.content.Context
import androidx.startup.Initializer import androidx.startup.Initializer
import io.element.android.x.BuildConfig
import io.element.android.features.rageshake.logs.VectorFileLogger import io.element.android.features.rageshake.logs.VectorFileLogger
import io.element.android.x.BuildConfig
import timber.log.Timber import timber.log.Timber
class TimberInitializer : Initializer<Unit> { class TimberInitializer : Initializer<Unit> {

2
app/src/main/kotlin/io/element/android/x/root/RootPresenter.kt

@ -19,10 +19,10 @@ package io.element.android.x.root
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.saveable.rememberSaveable
import io.element.android.libraries.architecture.Presenter
import io.element.android.features.rageshake.bugreport.BugReportPresenter import io.element.android.features.rageshake.bugreport.BugReportPresenter
import io.element.android.features.rageshake.crash.ui.CrashDetectionPresenter import io.element.android.features.rageshake.crash.ui.CrashDetectionPresenter
import io.element.android.features.rageshake.detection.RageshakeDetectionPresenter import io.element.android.features.rageshake.detection.RageshakeDetectionPresenter
import io.element.android.libraries.architecture.Presenter
import javax.inject.Inject import javax.inject.Inject
class RootPresenter @Inject constructor( class RootPresenter @Inject constructor(

2
app/src/main/kotlin/io/element/android/x/root/RootView.kt

@ -24,12 +24,12 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import io.element.android.x.component.ShowkaseButton
import io.element.android.features.rageshake.crash.ui.CrashDetectionEvents import io.element.android.features.rageshake.crash.ui.CrashDetectionEvents
import io.element.android.features.rageshake.crash.ui.CrashDetectionView import io.element.android.features.rageshake.crash.ui.CrashDetectionView
import io.element.android.features.rageshake.detection.RageshakeDetectionEvents import io.element.android.features.rageshake.detection.RageshakeDetectionEvents
import io.element.android.features.rageshake.detection.RageshakeDetectionView import io.element.android.features.rageshake.detection.RageshakeDetectionView
import io.element.android.tests.uitests.openShowkase import io.element.android.tests.uitests.openShowkase
import io.element.android.x.component.ShowkaseButton
@Composable @Composable
fun RootView( fun RootView(

6
features/login/src/main/kotlin/io/element/android/features/login/changeserver/ChangeServerView.kt

@ -52,11 +52,11 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import io.element.android.libraries.architecture.Async
import io.element.android.libraries.designsystem.components.form.textFieldState
import io.element.android.libraries.designsystem.components.VectorIcon
import io.element.android.features.login.R import io.element.android.features.login.R
import io.element.android.features.login.error.changeServerError import io.element.android.features.login.error.changeServerError
import io.element.android.libraries.architecture.Async
import io.element.android.libraries.designsystem.components.VectorIcon
import io.element.android.libraries.designsystem.components.form.textFieldState
import io.element.android.libraries.testtags.TestTags import io.element.android.libraries.testtags.TestTags
import io.element.android.libraries.testtags.testTag import io.element.android.libraries.testtags.testTag

2
features/login/src/main/kotlin/io/element/android/features/login/error/ErrorFormatter.kt

@ -18,8 +18,8 @@ package io.element.android.features.login.error
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import io.element.android.libraries.core.uri.isValidUrl
import io.element.android.features.login.root.LoginFormState import io.element.android.features.login.root.LoginFormState
import io.element.android.libraries.core.uri.isValidUrl
import io.element.android.libraries.ui.strings.R as StringR import io.element.android.libraries.ui.strings.R as StringR
@Composable @Composable

4
features/login/src/main/kotlin/io/element/android/features/login/root/LoginRootScreen.kt

@ -58,11 +58,11 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import io.element.android.libraries.designsystem.components.form.textFieldState
import io.element.android.features.login.error.loginError import io.element.android.features.login.error.loginError
import io.element.android.libraries.designsystem.components.form.textFieldState
import io.element.android.libraries.matrix.core.SessionId
import io.element.android.libraries.testtags.TestTags import io.element.android.libraries.testtags.TestTags
import io.element.android.libraries.testtags.testTag import io.element.android.libraries.testtags.testTag
import io.element.android.libraries.matrix.core.SessionId
import io.element.android.libraries.ui.strings.R as StringR import io.element.android.libraries.ui.strings.R as StringR
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)

2
features/messages/src/main/kotlin/io/element/android/features/messages/MessagesState.kt

@ -17,10 +17,10 @@
package io.element.android.features.messages package io.element.android.features.messages
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.features.messages.actionlist.ActionListState import io.element.android.features.messages.actionlist.ActionListState
import io.element.android.features.messages.textcomposer.MessageComposerState import io.element.android.features.messages.textcomposer.MessageComposerState
import io.element.android.features.messages.timeline.TimelineState import io.element.android.features.messages.timeline.TimelineState
import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.matrix.core.RoomId import io.element.android.libraries.matrix.core.RoomId
@Immutable @Immutable

6
features/messages/src/main/kotlin/io/element/android/features/messages/MessagesView.kt

@ -56,14 +56,14 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import io.element.android.libraries.designsystem.components.avatar.Avatar
import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.features.messages.actionlist.ActionListEvents import io.element.android.features.messages.actionlist.ActionListEvents
import io.element.android.features.messages.actionlist.ActionListView import io.element.android.features.messages.actionlist.ActionListView
import io.element.android.features.messages.actionlist.model.TimelineItemAction import io.element.android.features.messages.actionlist.model.TimelineItemAction
import io.element.android.features.messages.timeline.model.TimelineItem
import io.element.android.features.messages.textcomposer.MessageComposerView import io.element.android.features.messages.textcomposer.MessageComposerView
import io.element.android.features.messages.timeline.TimelineView import io.element.android.features.messages.timeline.TimelineView
import io.element.android.features.messages.timeline.model.TimelineItem
import io.element.android.libraries.designsystem.components.avatar.Avatar
import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.designsystem.utils.LogCompositions import io.element.android.libraries.designsystem.utils.LogCompositions
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import timber.log.Timber import timber.log.Timber

2
features/messages/src/main/kotlin/io/element/android/features/messages/actionlist/ActionListPresenter.kt

@ -21,10 +21,10 @@ import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import io.element.android.libraries.architecture.Presenter
import io.element.android.features.messages.actionlist.model.TimelineItemAction import io.element.android.features.messages.actionlist.model.TimelineItemAction
import io.element.android.features.messages.timeline.model.TimelineItem import io.element.android.features.messages.timeline.model.TimelineItem
import io.element.android.features.messages.timeline.model.content.TimelineItemRedactedContent import io.element.android.features.messages.timeline.model.content.TimelineItemRedactedContent
import io.element.android.libraries.architecture.Presenter
import kotlinx.collections.immutable.toImmutableList import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch

2
features/messages/src/main/kotlin/io/element/android/features/messages/actionlist/ActionListView.kt

@ -41,9 +41,9 @@ import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.libraries.designsystem.components.VectorIcon
import io.element.android.features.messages.actionlist.model.TimelineItemAction import io.element.android.features.messages.actionlist.model.TimelineItemAction
import io.element.android.features.messages.timeline.model.TimelineItem import io.element.android.features.messages.timeline.model.TimelineItem
import io.element.android.libraries.designsystem.components.VectorIcon
import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.launch import kotlinx.coroutines.launch

1
features/messages/src/main/kotlin/io/element/android/features/messages/actionlist/model/TimelineItemAction.kt

@ -18,7 +18,6 @@ package io.element.android.features.messages.actionlist.model
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import io.element.android.libraries.designsystem.VectorIcons
@Immutable @Immutable
sealed class TimelineItemAction( sealed class TimelineItemAction(

24
features/messages/src/main/kotlin/io/element/android/features/messages/timeline/TimelineView.kt

@ -58,28 +58,28 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.zIndex import androidx.compose.ui.zIndex
import io.element.android.libraries.designsystem.utils.PairCombinedPreviewParameter import io.element.android.features.messages.timeline.components.MessageEventBubble
import io.element.android.libraries.designsystem.components.avatar.Avatar import io.element.android.features.messages.timeline.components.TimelineItemEncryptedView
import io.element.android.libraries.designsystem.components.avatar.AvatarData import io.element.android.features.messages.timeline.components.TimelineItemImageView
import io.element.android.features.messages.timeline.components.TimelineItemReactionsView
import io.element.android.features.messages.timeline.components.TimelineItemRedactedView
import io.element.android.features.messages.timeline.components.TimelineItemTextView
import io.element.android.features.messages.timeline.components.TimelineItemUnknownView
import io.element.android.features.messages.timeline.model.AggregatedReaction import io.element.android.features.messages.timeline.model.AggregatedReaction
import io.element.android.features.messages.timeline.model.MessagesItemGroupPosition import io.element.android.features.messages.timeline.model.MessagesItemGroupPosition
import io.element.android.features.messages.timeline.model.TimelineItem
import io.element.android.features.messages.timeline.model.TimelineItemGroupPositionProvider import io.element.android.features.messages.timeline.model.TimelineItemGroupPositionProvider
import io.element.android.features.messages.timeline.model.TimelineItemReactions import io.element.android.features.messages.timeline.model.TimelineItemReactions
import io.element.android.features.messages.timeline.model.TimelineItem
import io.element.android.features.messages.timeline.model.content.TimelineItemContent
import io.element.android.features.messages.timeline.model.content.MessagesTimelineItemContentProvider import io.element.android.features.messages.timeline.model.content.MessagesTimelineItemContentProvider
import io.element.android.features.messages.timeline.model.content.TimelineItemContent
import io.element.android.features.messages.timeline.model.content.TimelineItemEncryptedContent import io.element.android.features.messages.timeline.model.content.TimelineItemEncryptedContent
import io.element.android.features.messages.timeline.model.content.TimelineItemImageContent import io.element.android.features.messages.timeline.model.content.TimelineItemImageContent
import io.element.android.features.messages.timeline.model.content.TimelineItemRedactedContent import io.element.android.features.messages.timeline.model.content.TimelineItemRedactedContent
import io.element.android.features.messages.timeline.model.content.TimelineItemTextBasedContent import io.element.android.features.messages.timeline.model.content.TimelineItemTextBasedContent
import io.element.android.features.messages.timeline.model.content.TimelineItemUnknownContent import io.element.android.features.messages.timeline.model.content.TimelineItemUnknownContent
import io.element.android.features.messages.timeline.components.MessageEventBubble import io.element.android.libraries.designsystem.components.avatar.Avatar
import io.element.android.features.messages.timeline.components.TimelineItemReactionsView import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.features.messages.timeline.components.TimelineItemEncryptedView import io.element.android.libraries.designsystem.utils.PairCombinedPreviewParameter
import io.element.android.features.messages.timeline.components.TimelineItemImageView
import io.element.android.features.messages.timeline.components.TimelineItemRedactedView
import io.element.android.features.messages.timeline.components.TimelineItemTextView
import io.element.android.features.messages.timeline.components.TimelineItemUnknownView
import io.element.android.libraries.matrix.core.EventId import io.element.android.libraries.matrix.core.EventId
import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.persistentListOf

2
features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/MessageEventBubble.kt

@ -29,6 +29,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.features.messages.timeline.model.MessagesItemGroupPosition
import io.element.android.libraries.designsystem.LocalIsDarkTheme import io.element.android.libraries.designsystem.LocalIsDarkTheme
import io.element.android.libraries.designsystem.MessageHighlightDark import io.element.android.libraries.designsystem.MessageHighlightDark
import io.element.android.libraries.designsystem.MessageHighlightLight import io.element.android.libraries.designsystem.MessageHighlightLight
@ -36,7 +37,6 @@ import io.element.android.libraries.designsystem.SystemGrey5Dark
import io.element.android.libraries.designsystem.SystemGrey5Light import io.element.android.libraries.designsystem.SystemGrey5Light
import io.element.android.libraries.designsystem.SystemGrey6Dark import io.element.android.libraries.designsystem.SystemGrey6Dark
import io.element.android.libraries.designsystem.SystemGrey6Light import io.element.android.libraries.designsystem.SystemGrey6Light
import io.element.android.features.messages.timeline.model.MessagesItemGroupPosition
private val BUBBLE_RADIUS = 16.dp private val BUBBLE_RADIUS = 16.dp

4
features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/TimelineItemTextView.kt

@ -28,10 +28,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.buildAnnotatedString
import androidx.core.text.util.LinkifyCompat import androidx.core.text.util.LinkifyCompat
import io.element.android.libraries.designsystem.LinkColor
import io.element.android.libraries.designsystem.components.ClickableLinkText
import io.element.android.features.messages.timeline.components.html.HtmlDocument import io.element.android.features.messages.timeline.components.html.HtmlDocument
import io.element.android.features.messages.timeline.model.content.TimelineItemTextBasedContent import io.element.android.features.messages.timeline.model.content.TimelineItemTextBasedContent
import io.element.android.libraries.designsystem.LinkColor
import io.element.android.libraries.designsystem.components.ClickableLinkText
@Composable @Composable
fun TimelineItemTextView( fun TimelineItemTextView(

2
features/messages/src/main/kotlin/io/element/android/features/messages/timeline/model/TimelineItem.kt

@ -17,8 +17,8 @@
package io.element.android.features.messages.timeline.model package io.element.android.features.messages.timeline.model
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.features.messages.timeline.model.content.TimelineItemContent import io.element.android.features.messages.timeline.model.content.TimelineItemContent
import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.matrix.core.EventId import io.element.android.libraries.matrix.core.EventId
@Immutable @Immutable

4
features/preferences/src/main/kotlin/io/element/android/features/preferences/root/PreferencesRootPresenter.kt

@ -17,10 +17,10 @@
package io.element.android.features.preferences.root package io.element.android.features.preferences.root
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import io.element.android.libraries.architecture.Async
import io.element.android.libraries.architecture.Presenter
import io.element.android.features.logout.LogoutPreferencePresenter import io.element.android.features.logout.LogoutPreferencePresenter
import io.element.android.features.rageshake.preferences.RageshakePreferencesPresenter import io.element.android.features.rageshake.preferences.RageshakePreferencesPresenter
import io.element.android.libraries.architecture.Async
import io.element.android.libraries.architecture.Presenter
import javax.inject.Inject import javax.inject.Inject
class PreferencesRootPresenter @Inject constructor( class PreferencesRootPresenter @Inject constructor(

2
features/preferences/src/main/kotlin/io/element/android/features/preferences/root/PreferencesRootState.kt

@ -16,9 +16,9 @@
package io.element.android.features.preferences.root package io.element.android.features.preferences.root
import io.element.android.libraries.architecture.Async
import io.element.android.features.logout.LogoutPreferenceState import io.element.android.features.logout.LogoutPreferenceState
import io.element.android.features.rageshake.preferences.RageshakePreferencesState import io.element.android.features.rageshake.preferences.RageshakePreferencesState
import io.element.android.libraries.architecture.Async
import io.element.android.libraries.matrix.ui.model.MatrixUser import io.element.android.libraries.matrix.ui.model.MatrixUser
data class PreferencesRootState( data class PreferencesRootState(

4
features/preferences/src/main/kotlin/io/element/android/features/preferences/root/PreferencesRootView.kt

@ -20,13 +20,13 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import io.element.android.libraries.architecture.Async
import io.element.android.libraries.designsystem.components.preferences.PreferenceView
import io.element.android.features.logout.LogoutPreferenceState import io.element.android.features.logout.LogoutPreferenceState
import io.element.android.features.logout.LogoutPreferenceView import io.element.android.features.logout.LogoutPreferenceView
import io.element.android.features.preferences.user.UserPreferences import io.element.android.features.preferences.user.UserPreferences
import io.element.android.features.rageshake.preferences.RageshakePreferencesState import io.element.android.features.rageshake.preferences.RageshakePreferencesState
import io.element.android.features.rageshake.preferences.RageshakePreferencesView import io.element.android.features.rageshake.preferences.RageshakePreferencesView
import io.element.android.libraries.architecture.Async
import io.element.android.libraries.designsystem.components.preferences.PreferenceView
import io.element.android.libraries.ui.strings.R as StringR import io.element.android.libraries.ui.strings.R as StringR
@Composable @Composable

4
features/rageshake/src/main/kotlin/io/element/android/features/rageshake/bugreport/BugReportPresenter.kt

@ -24,13 +24,13 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.saveable.rememberSaveable
import androidx.core.net.toUri import androidx.core.net.toUri
import io.element.android.libraries.architecture.Async
import io.element.android.libraries.architecture.Presenter
import io.element.android.features.rageshake.crash.CrashDataStore import io.element.android.features.rageshake.crash.CrashDataStore
import io.element.android.features.rageshake.logs.VectorFileLogger import io.element.android.features.rageshake.logs.VectorFileLogger
import io.element.android.features.rageshake.reporter.BugReporter import io.element.android.features.rageshake.reporter.BugReporter
import io.element.android.features.rageshake.reporter.ReportType import io.element.android.features.rageshake.reporter.ReportType
import io.element.android.features.rageshake.screenshot.ScreenshotHolder import io.element.android.features.rageshake.screenshot.ScreenshotHolder
import io.element.android.libraries.architecture.Async
import io.element.android.libraries.architecture.Presenter
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import javax.inject.Inject import javax.inject.Inject

2
features/rageshake/src/main/kotlin/io/element/android/features/rageshake/bugreport/BugReportView.kt

@ -51,9 +51,9 @@ import androidx.compose.ui.unit.sp
import coil.compose.AsyncImage import coil.compose.AsyncImage
import coil.request.ImageRequest import coil.request.ImageRequest
import io.element.android.libraries.architecture.Async import io.element.android.libraries.architecture.Async
import io.element.android.libraries.designsystem.components.form.textFieldState
import io.element.android.libraries.designsystem.components.LabelledCheckbox import io.element.android.libraries.designsystem.components.LabelledCheckbox
import io.element.android.libraries.designsystem.components.dialogs.ErrorDialog import io.element.android.libraries.designsystem.components.dialogs.ErrorDialog
import io.element.android.libraries.designsystem.components.form.textFieldState
import io.element.android.libraries.designsystem.utils.LogCompositions import io.element.android.libraries.designsystem.utils.LogCompositions
import io.element.android.libraries.ui.strings.R as StringR import io.element.android.libraries.ui.strings.R as StringR

2
features/rageshake/src/main/kotlin/io/element/android/features/rageshake/crash/CrashDataStore.kt

@ -25,10 +25,10 @@ import androidx.datastore.preferences.core.stringPreferencesKey
import androidx.datastore.preferences.preferencesDataStore import androidx.datastore.preferences.preferencesDataStore
import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.core.bool.orFalse
import io.element.android.libraries.di.ApplicationContext import io.element.android.libraries.di.ApplicationContext
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import javax.inject.Inject
private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "elementx_crash") private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "elementx_crash")

2
features/rageshake/src/main/kotlin/io/element/android/features/rageshake/crash/VectorUncaughtExceptionHandler.kt

@ -19,9 +19,9 @@ package io.element.android.features.rageshake.crash
import android.content.Context import android.content.Context
import android.os.Build import android.os.Build
import io.element.android.libraries.core.data.tryOrNull import io.element.android.libraries.core.data.tryOrNull
import timber.log.Timber
import java.io.PrintWriter import java.io.PrintWriter
import java.io.StringWriter import java.io.StringWriter
import timber.log.Timber
class VectorUncaughtExceptionHandler( class VectorUncaughtExceptionHandler(
context: Context context: Context

2
features/rageshake/src/main/kotlin/io/element/android/features/rageshake/crash/ui/CrashDetectionPresenter.kt

@ -19,8 +19,8 @@ package io.element.android.features.rageshake.crash.ui
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import io.element.android.libraries.architecture.Presenter
import io.element.android.features.rageshake.crash.CrashDataStore import io.element.android.features.rageshake.crash.CrashDataStore
import io.element.android.libraries.architecture.Presenter
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import javax.inject.Inject import javax.inject.Inject

2
features/rageshake/src/main/kotlin/io/element/android/features/rageshake/detection/RageshakeDetectionView.kt

@ -26,9 +26,9 @@ import androidx.lifecycle.Lifecycle
import io.element.android.features.rageshake.screenshot.ImageResult import io.element.android.features.rageshake.screenshot.ImageResult
import io.element.android.features.rageshake.screenshot.screenshot import io.element.android.features.rageshake.screenshot.screenshot
import io.element.android.libraries.androidutils.hardware.vibrate import io.element.android.libraries.androidutils.hardware.vibrate
import io.element.android.libraries.designsystem.utils.OnLifecycleEvent
import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog
import io.element.android.libraries.designsystem.utils.LogCompositions import io.element.android.libraries.designsystem.utils.LogCompositions
import io.element.android.libraries.designsystem.utils.OnLifecycleEvent
import io.element.android.libraries.ui.strings.R as StringR import io.element.android.libraries.ui.strings.R as StringR
@Composable @Composable

2
features/rageshake/src/main/kotlin/io/element/android/features/rageshake/preferences/RageshakePreferencesPresenter.kt

@ -22,9 +22,9 @@ import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.saveable.rememberSaveable
import io.element.android.libraries.architecture.Presenter
import io.element.android.features.rageshake.rageshake.RageShake import io.element.android.features.rageshake.rageshake.RageShake
import io.element.android.features.rageshake.rageshake.RageshakeDataStore import io.element.android.features.rageshake.rageshake.RageshakeDataStore
import io.element.android.libraries.architecture.Presenter
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import javax.inject.Inject import javax.inject.Inject

2
features/rageshake/src/main/kotlin/io/element/android/features/rageshake/rageshake/RageshakeDataStore.kt

@ -25,9 +25,9 @@ import androidx.datastore.preferences.core.floatPreferencesKey
import androidx.datastore.preferences.preferencesDataStore import androidx.datastore.preferences.preferencesDataStore
import io.element.android.libraries.core.bool.orTrue import io.element.android.libraries.core.bool.orTrue
import io.element.android.libraries.di.ApplicationContext import io.element.android.libraries.di.ApplicationContext
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import javax.inject.Inject
private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "elementx_rageshake") private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "elementx_rageshake")

20
features/rageshake/src/main/kotlin/io/element/android/features/rageshake/reporter/BugReporter.kt

@ -18,20 +18,14 @@ package io.element.android.features.rageshake.reporter
import android.content.Context import android.content.Context
import android.os.Build import android.os.Build
import io.element.android.libraries.core.extensions.toOnOff
import io.element.android.libraries.androidutils.file.compressFile
import io.element.android.libraries.core.mimetype.MimeTypes
import io.element.android.libraries.di.ApplicationContext
import io.element.android.features.rageshake.R import io.element.android.features.rageshake.R
import io.element.android.features.rageshake.crash.CrashDataStore import io.element.android.features.rageshake.crash.CrashDataStore
import io.element.android.features.rageshake.logs.VectorFileLogger import io.element.android.features.rageshake.logs.VectorFileLogger
import io.element.android.features.rageshake.screenshot.ScreenshotHolder import io.element.android.features.rageshake.screenshot.ScreenshotHolder
import java.io.File import io.element.android.libraries.androidutils.file.compressFile
import java.io.IOException import io.element.android.libraries.core.extensions.toOnOff
import java.io.OutputStreamWriter import io.element.android.libraries.core.mimetype.MimeTypes
import java.net.HttpURLConnection import io.element.android.libraries.di.ApplicationContext
import java.util.Locale
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first
@ -46,6 +40,12 @@ import okhttp3.Response
import org.json.JSONException import org.json.JSONException
import org.json.JSONObject import org.json.JSONObject
import timber.log.Timber import timber.log.Timber
import java.io.File
import java.io.IOException
import java.io.OutputStreamWriter
import java.net.HttpURLConnection
import java.util.Locale
import javax.inject.Inject
/** /**
* BugReporter creates and sends the bug reports. * BugReporter creates and sends the bug reports.

2
features/roomlist/src/main/kotlin/io/element/android/features/roomlist/RoomListView.kt

@ -36,13 +36,13 @@ import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Velocity import androidx.compose.ui.unit.Velocity
import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.features.roomlist.components.RoomListTopBar import io.element.android.features.roomlist.components.RoomListTopBar
import io.element.android.features.roomlist.components.RoomSummaryRow import io.element.android.features.roomlist.components.RoomSummaryRow
import io.element.android.features.roomlist.model.RoomListEvents import io.element.android.features.roomlist.model.RoomListEvents
import io.element.android.features.roomlist.model.RoomListRoomSummary import io.element.android.features.roomlist.model.RoomListRoomSummary
import io.element.android.features.roomlist.model.RoomListState import io.element.android.features.roomlist.model.RoomListState
import io.element.android.features.roomlist.model.stubbedRoomSummaries import io.element.android.features.roomlist.model.stubbedRoomSummaries
import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.designsystem.utils.LogCompositions import io.element.android.libraries.designsystem.utils.LogCompositions
import io.element.android.libraries.matrix.core.RoomId import io.element.android.libraries.matrix.core.RoomId
import io.element.android.libraries.matrix.core.UserId import io.element.android.libraries.matrix.core.UserId

2
features/roomlist/src/main/kotlin/io/element/android/features/roomlist/components/RoomSummaryRow.kt

@ -52,8 +52,8 @@ import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import com.google.accompanist.placeholder.material.placeholder import com.google.accompanist.placeholder.material.placeholder
import io.element.android.libraries.designsystem.components.avatar.Avatar
import io.element.android.features.roomlist.model.RoomListRoomSummary import io.element.android.features.roomlist.model.RoomListRoomSummary
import io.element.android.libraries.designsystem.components.avatar.Avatar
private val minHeight = 72.dp private val minHeight = 72.dp

4
features/roomlist/src/test/kotlin/io/element/android/features/roomlist/RoomListPresenterTests.kt

@ -20,10 +20,8 @@ import app.cash.molecule.RecompositionClock
import app.cash.molecule.moleculeFlow import app.cash.molecule.moleculeFlow
import app.cash.turbine.test import app.cash.turbine.test
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.matrixtest.FakeMatrixClient
import io.element.android.libraries.matrix.core.SessionId import io.element.android.libraries.matrix.core.SessionId
import io.element.android.features.roomlist.LastMessageFormatter import io.element.android.libraries.matrixtest.FakeMatrixClient
import io.element.android.features.roomlist.RoomListPresenter
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
import org.junit.Test import org.junit.Test

2
features/template/src/main/AndroidManifest.xml

@ -15,6 +15,6 @@
~ limitations under the License. ~ limitations under the License.
--> -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <manifest>
</manifest> </manifest>

1
features/template/src/main/kotlin/io/element/android/features/template/TemplateNode.kt

@ -24,6 +24,7 @@ import com.bumble.appyx.core.plugin.Plugin
import dagger.assisted.Assisted import dagger.assisted.Assisted
import dagger.assisted.AssistedInject import dagger.assisted.AssistedInject
import io.element.android.anvilannotations.ContributesNode import io.element.android.anvilannotations.ContributesNode
import io.element.android.libraries.architecture.presenterConnector
import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.AppScope
// TODO Change to use the right Scope for your feature. For now it can be AppScope, SessionScope or RoomScope // TODO Change to use the right Scope for your feature. For now it can be AppScope, SessionScope or RoomScope

2
libraries/matrix/src/main/kotlin/io/element/android/libraries/matrix/permalink/PermalinkParser.kt

@ -19,8 +19,8 @@ package io.element.android.libraries.matrix.permalink
import android.net.Uri import android.net.Uri
import android.net.UrlQuerySanitizer import android.net.UrlQuerySanitizer
import io.element.android.libraries.matrix.core.MatrixPatterns import io.element.android.libraries.matrix.core.MatrixPatterns
import java.net.URLDecoder
import timber.log.Timber import timber.log.Timber
import java.net.URLDecoder
/** /**
* This class turns a uri to a [PermalinkData]. * This class turns a uri to a [PermalinkData].

6
libraries/matrix/src/main/kotlin/io/element/android/libraries/matrix/room/RoomSummaryDataSource.kt

@ -19,9 +19,6 @@ package io.element.android.libraries.matrix.room
import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.coroutine.CoroutineDispatchers
import io.element.android.libraries.matrix.sync.roomListDiff import io.element.android.libraries.matrix.sync.roomListDiff
import io.element.android.libraries.matrix.sync.state import io.element.android.libraries.matrix.sync.state
import java.io.Closeable
import java.util.Collections
import java.util.UUID
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.SupervisorJob
@ -42,6 +39,9 @@ import org.matrix.rustcomponents.sdk.SlidingSyncView
import org.matrix.rustcomponents.sdk.SlidingSyncViewRoomsListDiff import org.matrix.rustcomponents.sdk.SlidingSyncViewRoomsListDiff
import org.matrix.rustcomponents.sdk.UpdateSummary import org.matrix.rustcomponents.sdk.UpdateSummary
import timber.log.Timber import timber.log.Timber
import java.io.Closeable
import java.util.Collections
import java.util.UUID
interface RoomSummaryDataSource { interface RoomSummaryDataSource {
fun roomSummaries(): StateFlow<List<RoomSummary>> fun roomSummaries(): StateFlow<List<RoomSummary>>

6
libraries/matrixtest/src/main/kotlin/io/element/android/libraries/matrixtest/FakeMatrixClient.kt

@ -20,12 +20,12 @@ import io.element.android.libraries.matrix.MatrixClient
import io.element.android.libraries.matrix.core.RoomId import io.element.android.libraries.matrix.core.RoomId
import io.element.android.libraries.matrix.core.SessionId import io.element.android.libraries.matrix.core.SessionId
import io.element.android.libraries.matrix.core.UserId import io.element.android.libraries.matrix.core.UserId
import io.element.android.libraries.matrixtest.media.FakeMediaResolver
import io.element.android.libraries.matrix.media.MediaResolver import io.element.android.libraries.matrix.media.MediaResolver
import io.element.android.libraries.matrixtest.room.FakeMatrixRoom
import io.element.android.libraries.matrixtest.room.InMemoryRoomSummaryDataSource
import io.element.android.libraries.matrix.room.MatrixRoom import io.element.android.libraries.matrix.room.MatrixRoom
import io.element.android.libraries.matrix.room.RoomSummaryDataSource import io.element.android.libraries.matrix.room.RoomSummaryDataSource
import io.element.android.libraries.matrixtest.media.FakeMediaResolver
import io.element.android.libraries.matrixtest.room.FakeMatrixRoom
import io.element.android.libraries.matrixtest.room.InMemoryRoomSummaryDataSource
import org.matrix.rustcomponents.sdk.MediaSource import org.matrix.rustcomponents.sdk.MediaSource
class FakeMatrixClient(override val sessionId: SessionId) : MatrixClient { class FakeMatrixClient(override val sessionId: SessionId) : MatrixClient {

2
libraries/matrixtest/src/main/kotlin/io/element/android/libraries/matrixtest/room/FakeMatrixRoom.kt

@ -19,8 +19,8 @@ package io.element.android.libraries.matrixtest.room
import io.element.android.libraries.matrix.core.EventId import io.element.android.libraries.matrix.core.EventId
import io.element.android.libraries.matrix.core.RoomId import io.element.android.libraries.matrix.core.RoomId
import io.element.android.libraries.matrix.room.MatrixRoom import io.element.android.libraries.matrix.room.MatrixRoom
import io.element.android.libraries.matrixtest.timeline.FakeMatrixTimeline
import io.element.android.libraries.matrix.timeline.MatrixTimeline import io.element.android.libraries.matrix.timeline.MatrixTimeline
import io.element.android.libraries.matrixtest.timeline.FakeMatrixTimeline
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.emptyFlow import kotlinx.coroutines.flow.emptyFlow

1
libraries/testtags/src/main/kotlin/io/element/android/libraries/testtags/Compose.kt

@ -21,7 +21,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.semantics.semantics import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.semantics.testTagsAsResourceId
import io.element.android.libraries.testtags.TestTag
/** /**
* Add a testTag to a Modifier, to be used by external tool, like TrafficLight for instance. * Add a testTag to a Modifier, to be used by external tool, like TrafficLight for instance.

1
libraries/ui-strings/src/main/res/values-cs/strings.xml

@ -2978,4 +2978,5 @@
</plurals> </plurals>
<string name="error_voice_message_broadcast_in_progress_message">Hlasovou zprávu nelze spustit, protože právě nahráváte živé vysílání. Ukončete prosím živé vysílání, abyste mohli začít nahrávat hlasovou zprávu</string> <string name="error_voice_message_broadcast_in_progress_message">Hlasovou zprávu nelze spustit, protože právě nahráváte živé vysílání. Ukončete prosím živé vysílání, abyste mohli začít nahrávat hlasovou zprávu</string>
<string name="error_voice_message_broadcast_in_progress">Nelze spustit hlasovou zprávu</string> <string name="error_voice_message_broadcast_in_progress">Nelze spustit hlasovou zprávu</string>
<string name="error_voice_broadcast_no_connection_recording">Chyba připojení - nahrávání pozastaveno</string>
</resources> </resources>

1
libraries/ui-strings/src/main/res/values-de/strings.xml

@ -2917,4 +2917,5 @@
</plurals> </plurals>
<string name="error_voice_message_broadcast_in_progress_message">Du kannst keine Sprachnachricht beginnen, da du im Moment eine Echtzeitübertragung aufzeichnest. Bitte beende deine Sprachübertragung, um ein Gespräch zu beginnen</string> <string name="error_voice_message_broadcast_in_progress_message">Du kannst keine Sprachnachricht beginnen, da du im Moment eine Echtzeitübertragung aufzeichnest. Bitte beende deine Sprachübertragung, um ein Gespräch zu beginnen</string>
<string name="error_voice_message_broadcast_in_progress">Kann Sprachnachricht nicht beginnen</string> <string name="error_voice_message_broadcast_in_progress">Kann Sprachnachricht nicht beginnen</string>
<string name="error_voice_broadcast_no_connection_recording">Verbindungsfehler − Aufnahme pausiert</string>
</resources> </resources>

1
libraries/ui-strings/src/main/res/values-et/strings.xml

@ -2909,4 +2909,5 @@
<string name="room_polls_loading_error">Viga küsitluste laadimisel.</string> <string name="room_polls_loading_error">Viga küsitluste laadimisel.</string>
<string name="error_voice_message_broadcast_in_progress">Häälsõnumi esitamine ei õnnestu</string> <string name="error_voice_message_broadcast_in_progress">Häälsõnumi esitamine ei õnnestu</string>
<string name="error_voice_message_broadcast_in_progress_message">Kuna sa hetkel salvestad ringhäälingukõnet, siis häälsõnumi salvestamine või esitamine ei õnnestu. Selleks palun lõpeta ringhäälingukõne</string> <string name="error_voice_message_broadcast_in_progress_message">Kuna sa hetkel salvestad ringhäälingukõnet, siis häälsõnumi salvestamine või esitamine ei õnnestu. Selleks palun lõpeta ringhäälingukõne</string>
<string name="error_voice_broadcast_no_connection_recording">Viga võrguühenduses - salvestamine on peatatud</string>
</resources> </resources>

1
libraries/ui-strings/src/main/res/values-fa/strings.xml

@ -2918,4 +2918,5 @@
</plurals> </plurals>
<string name="error_voice_message_broadcast_in_progress_message">از آنجا که در حال ضبط پخشی زندهاید، نمیتوانید پیامی صوتی را آغاز کنید. لطفاً برای آغاز ضبط یک پیام صوتی، پخش زندهتان را پایان دهید</string> <string name="error_voice_message_broadcast_in_progress_message">از آنجا که در حال ضبط پخشی زندهاید، نمیتوانید پیامی صوتی را آغاز کنید. لطفاً برای آغاز ضبط یک پیام صوتی، پخش زندهتان را پایان دهید</string>
<string name="error_voice_message_broadcast_in_progress">نمیتوان پخش صوتی را آغاز کرد</string> <string name="error_voice_message_broadcast_in_progress">نمیتوان پخش صوتی را آغاز کرد</string>
<string name="error_voice_broadcast_no_connection_recording">خطای اتّصال - ضبط مکث شد</string>
</resources> </resources>

1
libraries/ui-strings/src/main/res/values-fr/strings.xml

@ -2918,4 +2918,5 @@
</plurals> </plurals>
<string name="error_voice_message_broadcast_in_progress_message">Vous ne pouvez pas commencer un message vocal car vous êtes en train d’enregistrer une diffusion en direct. Veuillez terminer cette diffusion pour commencer un message vocal</string> <string name="error_voice_message_broadcast_in_progress_message">Vous ne pouvez pas commencer un message vocal car vous êtes en train d’enregistrer une diffusion en direct. Veuillez terminer cette diffusion pour commencer un message vocal</string>
<string name="error_voice_message_broadcast_in_progress">Impossible de démarrer un message vocal</string> <string name="error_voice_message_broadcast_in_progress">Impossible de démarrer un message vocal</string>
<string name="error_voice_broadcast_no_connection_recording">Erreur de connexion – Enregistrement en pause</string>
</resources> </resources>

1
libraries/ui-strings/src/main/res/values-hu/strings.xml

@ -2918,4 +2918,5 @@ A Visszaállítási Kulcsot tartsd biztonságos helyen, mint pl. egy jelszókeze
</plurals> </plurals>
<string name="error_voice_message_broadcast_in_progress_message">Nem lehet hang üzenetet indítani élő közvetítés felvétele közben. Az élő közvetítés bejezése szükséges a hang üzenet indításához</string> <string name="error_voice_message_broadcast_in_progress_message">Nem lehet hang üzenetet indítani élő közvetítés felvétele közben. Az élő közvetítés bejezése szükséges a hang üzenet indításához</string>
<string name="error_voice_message_broadcast_in_progress">Hang üzenetet nem lehet elindítani</string> <string name="error_voice_message_broadcast_in_progress">Hang üzenetet nem lehet elindítani</string>
<string name="error_voice_broadcast_no_connection_recording">Kapcsolódási hiba – Felvétel szüneteltetve</string>
</resources> </resources>

3
libraries/ui-strings/src/main/res/values-in/strings.xml

@ -2858,4 +2858,7 @@ Di masa mendatang proses verifikasi ini akan dimutakhirkan.</string>
<item quantity="other">Tidak ada pemungutan suara aktif %1$d hari terakhir. <item quantity="other">Tidak ada pemungutan suara aktif %1$d hari terakhir.
\nMuat lebih banyak pemungutan suara untuk melihat pemungutan suara untuk hari sebelumnya.</item> \nMuat lebih banyak pemungutan suara untuk melihat pemungutan suara untuk hari sebelumnya.</item>
</plurals> </plurals>
<string name="error_voice_broadcast_no_connection_recording">Kesalahan koneksi - Perekaman dijeda</string>
<string name="error_voice_message_broadcast_in_progress_message">Anda tidak dapat memulai sebuah pesan suara karena Anda saat ini merekam sebuah siaran langsung. Silakan mengakhiri siaran langsung Anda untuk memulai merekam sebuah pesan suara</string>
<string name="error_voice_message_broadcast_in_progress">Tidak dapat memulai pesan suara</string>
</resources> </resources>

17
libraries/ui-strings/src/main/res/values-ja/strings.xml

@ -198,7 +198,7 @@
<string name="room_settings_set_main_address">メインアドレスとして設定</string> <string name="room_settings_set_main_address">メインアドレスとして設定</string>
<string name="room_settings_unset_main_address">メインアドレスとしての設定を解除</string> <string name="room_settings_unset_main_address">メインアドレスとしての設定を解除</string>
<string name="device_manager_session_details_session_id">セッションID</string> <string name="device_manager_session_details_session_id">セッションID</string>
<string name="font_size">文字の大きさ</string> <string name="font_size">フォントの大きさ</string>
<string name="tiny">とても小さい</string> <string name="tiny">とても小さい</string>
<string name="small">小さい</string> <string name="small">小さい</string>
<string name="normal">標準</string> <string name="normal">標準</string>
@ -2391,7 +2391,7 @@
<string name="invites_title">招待</string> <string name="invites_title">招待</string>
<string name="device_manager_push_notifications_title">プッシュ通知</string> <string name="device_manager_push_notifications_title">プッシュ通知</string>
<string name="device_manager_session_rename_edit_hint">セッション名</string> <string name="device_manager_session_rename_edit_hint">セッション名</string>
<string name="device_manager_session_rename">セッションを改名</string> <string name="device_manager_session_rename">セッション名を変更</string>
<string name="device_manager_session_details_device_ip_address">IPアドレス</string> <string name="device_manager_session_details_device_ip_address">IPアドレス</string>
<string name="device_manager_session_details_device_operating_system">オペレーティングシステム</string> <string name="device_manager_session_details_device_operating_system">オペレーティングシステム</string>
<string name="device_manager_session_details_device_model">形式</string> <string name="device_manager_session_details_device_model">形式</string>
@ -2487,4 +2487,17 @@
<plurals name="x_selected"> <plurals name="x_selected">
<item quantity="other">%1$dを選択しました</item> <item quantity="other">%1$dを選択しました</item>
</plurals> </plurals>
<string name="settings_presence_user_always_appears_offline_summary">有効にすると、このアプリケーションを使用している際にも、他のユーザーにオフラインとして表示されます。</string>
<string name="settings_enable_direct_share_summary">最近のチャットをシステムの共有メニューに表示</string>
<string name="font_size_use_system">システムの既定値を使用</string>
<string name="font_size_section_manually">手動で設定</string>
<string name="font_size_section_auto">自動的に設定</string>
<string name="font_size_title">フォントの大きさを選択</string>
<string name="some_devices_will_not_be_able_to_decrypt">⚠ 未認証の端末がこのルームにあります。あなたが送信するメッセージを復号化することはできません。</string>
<string name="encryption_never_send_to_unverified_devices_in_room">このルームの未認証のセッションに暗号化されたメッセージを送信しない。</string>
<string name="thread_list_not_available">あなたのホームサーバーはスレッドの一覧表示をまだサポートしていません。</string>
<string name="invites_empty_message">ここに新しいリクエストと招待が表示されます。</string>
<string name="labs_enable_rich_text_editor_summary">リッチテキストエディターを試してみる(プレーンテキストモードは近日公開)</string>
<string name="labs_enable_new_app_layout_summary">タブを使用してElementの表示をシンプルにする</string>
<string name="device_manager_session_details_title">セッションの詳細</string>
</resources> </resources>

40
libraries/ui-strings/src/main/res/values-pl/strings.xml

@ -345,7 +345,7 @@
<string name="encryption_import_room_keys_summary">Importuj klucze z lokalnego pliku</string> <string name="encryption_import_room_keys_summary">Importuj klucze z lokalnego pliku</string>
<string name="encryption_import_import">Importuj</string> <string name="encryption_import_import">Importuj</string>
<string name="encryption_never_send_to_unverified_devices_title">Szyfruj wiadomości tylko do zaufanych sesji</string> <string name="encryption_never_send_to_unverified_devices_title">Szyfruj wiadomości tylko do zaufanych sesji</string>
<string name="encryption_never_send_to_unverified_devices_summary">Nigdy nie wysyłaj szyfrowanych wiadomości do sesji (np urządzeń innych użytkowników) które nie zostały zweryfikowane.</string> <string name="encryption_never_send_to_unverified_devices_summary">Nigdy nie wysyłaj szyfrowanych wiadomości do niezweryfikowanych sesji (bez zielonej tarczy) z tego urządzenia.</string>
<string name="encryption_information_verify_device_warning">Aby sprawdzić czy ta sesja jest zaufana, skontaktuj się z jej właścicielem używając innych form (np. osobiście lub telefonicznie) i zapytaj czy klucz, który widzą w ustawieniach użytkownika dla tego urządzenia pasuje do klucza poniżej:</string> <string name="encryption_information_verify_device_warning">Aby sprawdzić czy ta sesja jest zaufana, skontaktuj się z jej właścicielem używając innych form (np. osobiście lub telefonicznie) i zapytaj czy klucz, który widzą w ustawieniach użytkownika dla tego urządzenia pasuje do klucza poniżej:</string>
<string name="encryption_information_verify_device_warning2">Jeśli klucz pasuje, potwierdź to przyciskiem poniżej. Jeśli nie, to ktoś inny najprawdopodobniej przejmuje lub podszywa się pod tą sesję i powinieneś dodać tę sesję do czarnej listy. W przyszłości proces weryfikacji będzie bardziej skomplikowany.</string> <string name="encryption_information_verify_device_warning2">Jeśli klucz pasuje, potwierdź to przyciskiem poniżej. Jeśli nie, to ktoś inny najprawdopodobniej przejmuje lub podszywa się pod tą sesję i powinieneś dodać tę sesję do czarnej listy. W przyszłości proces weryfikacji będzie bardziej skomplikowany.</string>
<string name="title_activity_choose_sticker">Wyślij naklejkę</string> <string name="title_activity_choose_sticker">Wyślij naklejkę</string>
@ -1115,7 +1115,7 @@
\nKlucze nie są zaufane</string> \nKlucze nie są zaufane</string>
<string name="encryption_information_dg_xsigning_disabled">Podpis krzyżowy nie jest aktywowany</string> <string name="encryption_information_dg_xsigning_disabled">Podpis krzyżowy nie jest aktywowany</string>
<string name="settings_active_sessions_list">Aktywne Sesje</string> <string name="settings_active_sessions_list">Aktywne Sesje</string>
<string name="settings_active_sessions_show_all">Pokaż wszystkie Sesje</string> <string name="settings_active_sessions_show_all">Pokaż wszystkie sesje</string>
<string name="settings_active_sessions_manage">Zarządzaj Sesjami</string> <string name="settings_active_sessions_manage">Zarządzaj Sesjami</string>
<string name="settings_active_sessions_signout_device">Wyloguj z tej sesji</string> <string name="settings_active_sessions_signout_device">Wyloguj z tej sesji</string>
<string name="settings_failed_to_get_crypto_device_info">Brak dostępnej informacji o kryptografii</string> <string name="settings_failed_to_get_crypto_device_info">Brak dostępnej informacji o kryptografii</string>
@ -1242,7 +1242,7 @@
<string name="bottom_sheet_save_your_recovery_key_title">Zapisz Klucz Bezpieczeństwa</string> <string name="bottom_sheet_save_your_recovery_key_title">Zapisz Klucz Bezpieczeństwa</string>
<string name="bottom_sheet_setup_secure_backup_security_phrase_title">Użyj Frazy Bezpieczeństwa</string> <string name="bottom_sheet_setup_secure_backup_security_phrase_title">Użyj Frazy Bezpieczeństwa</string>
<string name="bottom_sheet_setup_secure_backup_security_key_title">Użyj klucza bezpieczeństwa</string> <string name="bottom_sheet_setup_secure_backup_security_key_title">Użyj klucza bezpieczeństwa</string>
<string name="bottom_sheet_setup_secure_backup_subtitle">Zabezpiecza przeciwko utracie dostępu do zaszyfrowanych wiadomości oraz danych poprzez zapisanie zaszyfrowanych kluczy na Twoim serwerze.</string> <string name="bottom_sheet_setup_secure_backup_subtitle">Zabezpiecza przed utratą dostępu do zaszyfrowanych wiadomości poprzez zapisanie kluczy szyfrujących na twoim serwerze.</string>
<string name="a11y_start_camera">Włącz aparat</string> <string name="a11y_start_camera">Włącz aparat</string>
<string name="a11y_stop_camera">Wyłącz aparat</string> <string name="a11y_stop_camera">Wyłącz aparat</string>
<string name="a11y_unmute_microphone">Wyłącz wyciszenie mikrofonu</string> <string name="a11y_unmute_microphone">Wyłącz wyciszenie mikrofonu</string>
@ -1493,7 +1493,7 @@
<string name="disabled_integration_dialog_title">Integracje są zablokowane</string> <string name="disabled_integration_dialog_title">Integracje są zablokowane</string>
<string name="reset_secure_backup_warning">To zastąpi obecny Klucz bądź Hasło.</string> <string name="reset_secure_backup_warning">To zastąpi obecny Klucz bądź Hasło.</string>
<string name="reset_secure_backup_title">Wygeneruj nowy klucz bezpieczeństwa albo hasło dla istniejącej kopii zapasowej.</string> <string name="reset_secure_backup_title">Wygeneruj nowy klucz bezpieczeństwa albo hasło dla istniejącej kopii zapasowej.</string>
<string name="settings_secure_backup_section_info">Zabezpiecza przeciwko utracie dostępu do zaszyfrowanych wiadomości oraz danych poprzez zapisanie zaszyfrowanych kluczy na Twoim serwerze.</string> <string name="settings_secure_backup_section_info">Zabezpiecza przed utratą dostępu do zaszyfrowanych wiadomości poprzez zapisanie kluczy szyfrujących na twoim serwerze.</string>
<string name="settings_troubleshoot_test_notification_notification_clicked">Powiadomienie zostało kliknięte!</string> <string name="settings_troubleshoot_test_notification_notification_clicked">Powiadomienie zostało kliknięte!</string>
<string name="settings_troubleshoot_test_notification_notice">Proszę kliknąć na powiadomieniu, Jeżeli nie widzisz powiadomienia, sprawdź ustawienia systemowe.</string> <string name="settings_troubleshoot_test_notification_notice">Proszę kliknąć na powiadomieniu, Jeżeli nie widzisz powiadomienia, sprawdź ustawienia systemowe.</string>
<string name="settings_troubleshoot_test_push_notification_content">Widzisz powiadomienia! Kliknij na mnie!</string> <string name="settings_troubleshoot_test_push_notification_content">Widzisz powiadomienia! Kliknij na mnie!</string>
@ -2795,4 +2795,36 @@
<string name="action_got_it">Rozumiem</string> <string name="action_got_it">Rozumiem</string>
<string name="a11y_collapse_space_children">Zwiń %s pokojów</string> <string name="a11y_collapse_space_children">Zwiń %s pokojów</string>
<string name="a11y_expand_space_children">Rozwiń %s pokojów</string> <string name="a11y_expand_space_children">Rozwiń %s pokojów</string>
<string name="device_manager_inactive_sessions_title">Nieaktywne sesje</string>
<string name="device_manager_verification_status_detail_other_session_verified">Ta sesja jest gotowa do bezpiecznego przesyłania wiadomości.</string>
<string name="device_manager_verification_status_detail_current_session_verified">Twoja bieżąca sesja jest gotowa do bezpiecznego przesyłania wiadomości.</string>
<string name="attachment_type_selector_contact">Kontakt</string>
<string name="attachment_type_selector_location">Lokalizacja</string>
<string name="attachment_type_selector_camera">Aparat</string>
<string name="attachment_type_selector_voice_broadcast">Transmisja głosowa</string>
<string name="tooltip_attachment_voice_broadcast">Rozpocznij transmisję głosową</string>
<string name="room_polls_ended">Ostatnie ankiety</string>
<string name="room_polls_active_no_item">W tym pokoju nie ma aktywnych ankiet</string>
<string name="room_polls_active">Aktywne ankiety</string>
<string name="unable_to_decrypt_some_events_in_poll">Niektóre głosy mogą nie zostać policzone z powodu błędów w odszyfrowaniu</string>
<string name="ended_poll_indicator">Zakończono ankietę.</string>
<string name="error_voice_broadcast_no_connection_recording">Błąd połączenia - Nagrywanie wstrzymane</string>
<string name="error_voice_broadcast_unable_to_play">Nie można odtworzyć tej transmisji głosowej.</string>
<string name="error_voice_broadcast_already_in_progress_message">Jesteś już w trakcie nagrywania transmisji głosowej. Proszę zakończyć bieżącą transmisję, aby rozpocząć nową.</string>
<string name="error_voice_broadcast_blocked_by_someone_else_message">Ktoś inny nagrywa już transmisję głosową. Aby rozpocząć nową transmisję, należy poczekać na jej zakończenie.</string>
<string name="error_voice_broadcast_permission_denied_message">Nie masz wymaganych uprawnień do rozpoczęcia transmisji głosowej w tym pokoju. Skontaktuj się z administratorem pokoju, aby przyznał ci uprawnienia.</string>
<string name="error_voice_broadcast_unauthorized_title">Nie można rozpocząć nowej transmisji głosowej</string>
<string name="voice_broadcast_buffering">Buforowanie…</string>
<string name="error_voice_message_broadcast_in_progress">Nie można rozpocząć wiadomości głosowej</string>
<string name="review_unverified_sessions_title">Masz niezweryfikowane sesje</string>
<string name="key_authenticity_not_guaranteed">Autentyczność tej zaszyfrowanej wiadomości nie może być zagwarantowana na tym urządzeniu.</string>
<string name="room_profile_section_more_polls">Historia ankiet</string>
<string name="command_description_table_flip">Dodaje (╯°□°)╯︵ ┻━┻ do wiadomości tekstowej</string>
<string name="login_scan_qr_code">Skanuj kod QR</string>
<string name="notice_voice_broadcast_ended">%1$s zakończył(a) transmisję głosową.</string>
<string name="settings_security_incognito_keyboard_summary">Zarządaj od systemu Android aby klawiatura nie zapisywała żadnych danych takich jak historia pisania lub słownik. Pamiętaj, nie niektóre klawiatury mogą nie zastosować się do tego ustawienia.</string>
<string name="settings_security_incognito_keyboard_title">Klawiatura incognito</string>
<string name="home_empty_no_rooms_title">Witaj w ${app_name},
\n%s.</string>
<string name="home_empty_no_rooms_message">Wszechstronna, bezpieczna aplikacja do czatowania dla zespołów, przyjaciół i organizacji. Utwórz czat lub dołącz do istniejącego pokoju, aby rozpocząć.</string>
</resources> </resources>

72
libraries/ui-strings/src/main/res/values-ru/strings.xml

@ -6,7 +6,7 @@
<string name="notice_room_join">%1$s вошёл(шла) в комнату</string> <string name="notice_room_join">%1$s вошёл(шла) в комнату</string>
<string name="notice_room_leave">%1$s покинул(а) комнату</string> <string name="notice_room_leave">%1$s покинул(а) комнату</string>
<string name="notice_room_reject">%1$s отклонил(а) приглашение</string> <string name="notice_room_reject">%1$s отклонил(а) приглашение</string>
<string name="notice_room_remove">%1$s выгнан %2$s</string> <string name="notice_room_remove">%1$s выгнал %2$s</string>
<string name="notice_room_unban">%1$s разблокировал(а) %2$s</string> <string name="notice_room_unban">%1$s разблокировал(а) %2$s</string>
<string name="notice_room_ban">%1$s заблокировал(а) %2$s</string> <string name="notice_room_ban">%1$s заблокировал(а) %2$s</string>
<string name="notice_room_withdraw">%1$s отозвал(а) приглашение %2$s</string> <string name="notice_room_withdraw">%1$s отозвал(а) приглашение %2$s</string>
@ -65,7 +65,7 @@
<string name="notice_room_reject_with_reason">%1$s отклонил приглашение. Причина: %2$s</string> <string name="notice_room_reject_with_reason">%1$s отклонил приглашение. Причина: %2$s</string>
<string name="notice_room_remove_with_reason">%1$s выгнали %2$s. Причина: %3$s</string> <string name="notice_room_remove_with_reason">%1$s выгнали %2$s. Причина: %3$s</string>
<string name="notice_room_unban_with_reason">%1$s разблокировано %2$s. Причина: %3$s</string> <string name="notice_room_unban_with_reason">%1$s разблокировано %2$s. Причина: %3$s</string>
<string name="notice_room_ban_with_reason">%1$s забанен %2$s. Причина: %3$s</string> <string name="notice_room_ban_with_reason">%1$s забанил %2$s. Причина: %3$s</string>
<string name="notice_room_third_party_registered_invite_with_reason">%1$s принял приглашение для %2$s. Причина: %3$s</string> <string name="notice_room_third_party_registered_invite_with_reason">%1$s принял приглашение для %2$s. Причина: %3$s</string>
<string name="notice_room_withdraw_with_reason">%1$s отозвал приглашение %2$s. Причина: %3$s</string> <string name="notice_room_withdraw_with_reason">%1$s отозвал приглашение %2$s. Причина: %3$s</string>
<string name="notice_room_created">%1$s создал(а) комнату</string> <string name="notice_room_created">%1$s создал(а) комнату</string>
@ -1420,7 +1420,7 @@
<string name="command_description_rainbow">Посылает сообщение, окрашенное в цвет радуги</string> <string name="command_description_rainbow">Посылает сообщение, окрашенное в цвет радуги</string>
<string name="command_description_rainbow_emote">Посылает данную эмоцию, окрашенную в цвет радуги</string> <string name="command_description_rainbow_emote">Посылает данную эмоцию, окрашенную в цвет радуги</string>
<string name="settings_category_composer">Редактор сообщений</string> <string name="settings_category_composer">Редактор сообщений</string>
<string name="room_settings_enable_encryption">Включаем сквозное шифрование…</string> <string name="room_settings_enable_encryption">Включить сквозное шифрование…</string>
<string name="room_settings_enable_encryption_dialog_title">Включить шифрование\?</string> <string name="room_settings_enable_encryption_dialog_title">Включить шифрование\?</string>
<string name="room_settings_enable_encryption_dialog_content">После включения шифрование для комнаты нельзя отключить. Сообщения отправленные в зашифрованной комнате не будут видны серверу, только участникам комнаты. Включение шифрования может помешать правильной работе многих ботов и мостов.</string> <string name="room_settings_enable_encryption_dialog_content">После включения шифрование для комнаты нельзя отключить. Сообщения отправленные в зашифрованной комнате не будут видны серверу, только участникам комнаты. Включение шифрования может помешать правильной работе многих ботов и мостов.</string>
<string name="room_settings_enable_encryption_dialog_submit">Включить шифрование</string> <string name="room_settings_enable_encryption_dialog_submit">Включить шифрование</string>
@ -2433,7 +2433,7 @@
<string name="location_timeline_failed_to_load_map">Не удалось загрузить карту</string> <string name="location_timeline_failed_to_load_map">Не удалось загрузить карту</string>
<string name="a11y_static_map_image">Карта</string> <string name="a11y_static_map_image">Карта</string>
<string name="labs_enable_thread_messages_desc">Примечание: приложение будет перезапущено</string> <string name="labs_enable_thread_messages_desc">Примечание: приложение будет перезапущено</string>
<string name="labs_enable_thread_messages">Обсуждения сообщений</string> <string name="labs_enable_thread_messages">Включить обсуждения сообщений</string>
<string name="ftue_auth_use_case_connect_to_server">Подключиться к серверу</string> <string name="ftue_auth_use_case_connect_to_server">Подключиться к серверу</string>
<string name="ftue_auth_use_case_join_existing_server">Хотите присоединиться к существующему серверу\?</string> <string name="ftue_auth_use_case_join_existing_server">Хотите присоединиться к существующему серверу\?</string>
<string name="ftue_auth_use_case_skip_partial">Пропустить вопрос</string> <string name="ftue_auth_use_case_skip_partial">Пропустить вопрос</string>
@ -2540,7 +2540,7 @@
<string name="error_forbidden_digits_only_username">Домашний сервер не принимает имя пользователя, состоящее только из цифр.</string> <string name="error_forbidden_digits_only_username">Домашний сервер не принимает имя пользователя, состоящее только из цифр.</string>
<string name="ftue_personalize_skip_this_step">Пропустить этот шаг</string> <string name="ftue_personalize_skip_this_step">Пропустить этот шаг</string>
<string name="ftue_personalize_submit">Сохранить и продолжить</string> <string name="ftue_personalize_submit">Сохранить и продолжить</string>
<string name="ftue_personalize_complete_subtitle">Ваши предпочтения были сохранены.</string> <string name="ftue_personalize_complete_subtitle">Зайдите в настройки чтобы изменить Ваш профиль</string>
<string name="ftue_personalize_complete_title">Выглядит хорошо!</string> <string name="ftue_personalize_complete_title">Выглядит хорошо!</string>
<string name="ftue_auth_carousel_workplace_body">${app_name} также отлично подходит для работы. Ему доверяют самые надёжные организации в мире.</string> <string name="ftue_auth_carousel_workplace_body">${app_name} также отлично подходит для работы. Ему доверяют самые надёжные организации в мире.</string>
<string name="keys_backup_settings_signature_from_this_user">Резервная копия имеет действительную подпись для данного пользователя.</string> <string name="keys_backup_settings_signature_from_this_user">Резервная копия имеет действительную подпись для данного пользователя.</string>
@ -2791,7 +2791,7 @@
<item quantity="other">Рассмотрите возможность выхода из старых сеансов (%1$d дней или дольше), которые вы более не используете.</item> <item quantity="other">Рассмотрите возможность выхода из старых сеансов (%1$d дней или дольше), которые вы более не используете.</item>
</plurals> </plurals>
<string name="attachment_type_voice_broadcast">Голосовая трансляция</string> <string name="attachment_type_voice_broadcast">Голосовая трансляция</string>
<string name="labs_enable_voice_broadcast_title">Голосовые трансляции</string> <string name="labs_enable_voice_broadcast_title">Включить голосовые трансляции</string>
<string name="labs_enable_client_info_recording_summary">Записывает название клиента, версию и URL-адрес для более лёгкого распознавания сеансов в менеджере сеансов.</string> <string name="labs_enable_client_info_recording_summary">Записывает название клиента, версию и URL-адрес для более лёгкого распознавания сеансов в менеджере сеансов.</string>
<string name="labs_enable_client_info_recording_title">Записывать информацию о клиенте</string> <string name="labs_enable_client_info_recording_title">Записывать информацию о клиенте</string>
<string name="attachment_type_selector_gallery">Галерея</string> <string name="attachment_type_selector_gallery">Галерея</string>
@ -2824,9 +2824,9 @@
<string name="a11y_expand_space_children">Развернуть дочерние элементы %s</string> <string name="a11y_expand_space_children">Развернуть дочерние элементы %s</string>
<plurals name="x_selected"> <plurals name="x_selected">
<item quantity="one">Выбрано %1$d</item> <item quantity="one">Выбрано %1$d</item>
<item quantity="few">Выбрано %1$d</item> <item quantity="few">Выбраны %1$d</item>
<item quantity="many">Выбрано %1$d</item> <item quantity="many">Выбраны %1$d</item>
<item quantity="other">Выбрано %1$d</item> <item quantity="other">Выбраны %1$d</item>
</plurals> </plurals>
<string name="rich_text_editor_full_screen_toggle">Войти в полноэкранный режим</string> <string name="rich_text_editor_full_screen_toggle">Войти в полноэкранный режим</string>
<string name="rich_text_editor_format_underline">Применить форматирование подчёркиванием</string> <string name="rich_text_editor_format_underline">Применить форматирование подчёркиванием</string>
@ -2970,4 +2970,58 @@
<string name="device_manager_verification_status_detail_session_encryption_not_supported">Этот сеанс не поддерживает шифрование и поэтому не может быть заверен.</string> <string name="device_manager_verification_status_detail_session_encryption_not_supported">Этот сеанс не поддерживает шифрование и поэтому не может быть заверен.</string>
<string name="notice_voice_broadcast_ended">%1$s завершил(а) голосовую трансляцию.</string> <string name="notice_voice_broadcast_ended">%1$s завершил(а) голосовую трансляцию.</string>
<string name="notice_voice_broadcast_ended_by_you">Вы завершили голосовую трансляцию.</string> <string name="notice_voice_broadcast_ended_by_you">Вы завершили голосовую трансляцию.</string>
<plurals name="room_polls_active_no_item_for_loaded_period">
<item quantity="one">Нет активных опросов за %1$d день.
\nЗагрузите больше чтобы показать опросы за прошедшие дни.</item>
<item quantity="few">Нет активных опросов за %1$d дней.
\nЗагрузите больше чтобы показать опросы за прошедшие дни.</item>
<item quantity="many">Нет активных опросов за %1$d дней.
\nЗагрузите больше чтобы показать опросы за прошедшие дни.</item>
<item quantity="other">Нет активных опросов за %1$d дней.
\nЗагрузите больше чтобы показать опросы за прошедшие дни.</item>
</plurals>
<plurals name="room_polls_ended_no_item_for_loaded_period">
<item quantity="one">Нет завершённых опросов за день %1$d.
\nЗагрузите больше чтобы показать опросы за предыдущие дни.</item>
<item quantity="few">Нет завершённых опросов за %1$d дней
\nЗагрузите больше чтобы показать опросы за предыдущие дни.</item>
<item quantity="many">Нет завершённых опросов за %1$d дней
\nЗагрузите больше чтобы показать опросы за предыдущие дни.</item>
<item quantity="other">Нет завершённых опросов за %1$d дней
\nЗагрузите больше чтобы показать опросы за предыдущие дни.</item>
</plurals>
<string name="settings_access_token_summary">Токен доступа даёт полный доступ к аккаунту. Не делитесь им ни с кем.</string>
<string name="settings_access_token">Токен доступа</string>
<string name="message_reply_to_ended_poll_preview">Завершённый опрос</string>
<string name="message_reply_to_poll_preview">Опрос</string>
<string name="message_reply_to_sender_ended_poll">завершённый опрос.</string>
<string name="set_link_edit">Изменить ссылку</string>
<string name="set_link_create">Создать ссылку</string>
<string name="set_link_link">Ссылка</string>
<string name="set_link_text">Текст</string>
<string name="rich_text_editor_bullet_list">Список</string>
<string name="rich_text_editor_numbered_list">Пронумерованный список</string>
<string name="rich_text_editor_link">Ссылка</string>
<string name="room_polls_loading_error">Ошибка считывания опросов.</string>
<string name="room_polls_load_more">Загрузить больше опросов</string>
<string name="room_polls_wait_for_display">Показываем опросы</string>
<string name="room_polls_ended_no_item">Нет завершённых опросов</string>
<string name="room_polls_ended">Завершённые опросы</string>
<string name="room_polls_active_no_item">Нет активных опросов</string>
<string name="room_polls_active">Активные опросы</string>
<string name="unable_to_decrypt_some_events_in_poll">Из-за ошибок расшифровки, некоторые голоса могут быть не засчитаны</string>
<string name="ended_poll_indicator">Опрос завершён.</string>
<string name="stop_voice_broadcast_content">Вы уверены что хотите завершить голосовую трансляцию\? Это завершит трансляцию и полная запись будет доступна в чате.</string>
<string name="stop_voice_broadcast_dialog_title">Завершить голосовую трансляцию\?</string>
<string name="error_voice_broadcast_no_connection_recording">Ошибка подключения - Запись приостановлена</string>
<string name="error_voice_broadcast_unable_to_play">Невозможно прослушать голосовую трансляцию.</string>
<string name="voice_broadcast_live_broadcast">Голосовая трансляция</string>
<string name="error_voice_message_broadcast_in_progress_message">Вы не можете записать голосовое сообщение, потому-что Вы записываете голосовую трансляцию. Завершите голосовую трансляцию, чтобы записать голосовое сообщение</string>
<string name="error_voice_message_broadcast_in_progress">Не удалось записать голосовое сообщение</string>
<string name="review_unverified_sessions_description">Убедиться что Ваш аккаунт в безопасности</string>
<string name="settings_nightly_build_update">Получить последнюю сборку (у вас могут быть проблемы со входом)</string>
<string name="room_profile_section_more_polls">История опроса</string>
<string name="started_a_voice_broadcast">Голосовая трансляция начата</string>
<string name="thread_list_not_available">Ваш домашний сервер не поддерживает список обсуждений.</string>
<string name="action_stop">Остановить</string>
</resources> </resources>

1
libraries/ui-strings/src/main/res/values-sk/strings.xml

@ -2978,4 +2978,5 @@
</plurals> </plurals>
<string name="error_voice_message_broadcast_in_progress_message">Nemôžete spustiť hlasovú správu, pretože práve nahrávate živé vysielanie. Ukončite prosím živé vysielanie, aby ste mohli začať nahrávať hlasovú správu</string> <string name="error_voice_message_broadcast_in_progress_message">Nemôžete spustiť hlasovú správu, pretože práve nahrávate živé vysielanie. Ukončite prosím živé vysielanie, aby ste mohli začať nahrávať hlasovú správu</string>
<string name="error_voice_message_broadcast_in_progress">Nemožno spustiť hlasovú správu</string> <string name="error_voice_message_broadcast_in_progress">Nemožno spustiť hlasovú správu</string>
<string name="error_voice_broadcast_no_connection_recording">Chyba pripojenia - nahrávanie pozastavené</string>
</resources> </resources>

1
libraries/ui-strings/src/main/res/values-uk/strings.xml

@ -3038,4 +3038,5 @@
<string name="room_polls_wait_for_display">Показ опитувань</string> <string name="room_polls_wait_for_display">Показ опитувань</string>
<string name="error_voice_message_broadcast_in_progress_message">Ви не можете розпочати запис голосового повідомлення, оскільки ви записуєте трансляцію наживо. Будь ласка, заверште її, щоб розпочати запис голосового повідомлення</string> <string name="error_voice_message_broadcast_in_progress_message">Ви не можете розпочати запис голосового повідомлення, оскільки ви записуєте трансляцію наживо. Будь ласка, заверште її, щоб розпочати запис голосового повідомлення</string>
<string name="error_voice_message_broadcast_in_progress">Не вдалося розпочати запис голосового повідомлення</string> <string name="error_voice_message_broadcast_in_progress">Не вдалося розпочати запис голосового повідомлення</string>
<string name="error_voice_broadcast_no_connection_recording">Помилка з\'єднання - Запис призупинено</string>
</resources> </resources>

2
libraries/ui-strings/src/main/res/values/donottranslate.xml

@ -10,6 +10,8 @@
<!-- onboarding english only word play --> <!-- onboarding english only word play -->
<string name="cut_the_slack_from_teams" translatable="false">Cut the slack from teams.</string> <string name="cut_the_slack_from_teams" translatable="false">Cut the slack from teams.</string>
<string name="command_description_crash_application" translatable="false">Crash the application.</string>
<!-- WIP --> <!-- WIP -->
<string name="location_map_view_copyright" translatable="false">© MapTiler © OpenStreetMap contributors</string> <string name="location_map_view_copyright" translatable="false">© MapTiler © OpenStreetMap contributors</string>
</resources> </resources>

1
libraries/ui-strings/src/main/res/values/strings.xml

@ -3502,6 +3502,7 @@
<string name="rich_text_editor_link">Set link</string> <string name="rich_text_editor_link">Set link</string>
<string name="rich_text_editor_numbered_list">Toggle numbered list</string> <string name="rich_text_editor_numbered_list">Toggle numbered list</string>
<string name="rich_text_editor_bullet_list">Toggle bullet list</string> <string name="rich_text_editor_bullet_list">Toggle bullet list</string>
<string name="rich_text_editor_inline_code">Apply inline code format</string>
<string name="rich_text_editor_full_screen_toggle">Toggle full screen mode</string> <string name="rich_text_editor_full_screen_toggle">Toggle full screen mode</string>
<string name="set_link_text">Text</string> <string name="set_link_text">Text</string>

Loading…
Cancel
Save