Code review

This commit is contained in:
Valere 2021-09-01 11:35:44 +02:00
parent 31c0831aba
commit cfed0f839b
27 changed files with 94 additions and 51 deletions

View file

@ -26,6 +26,7 @@ import android.view.ViewGroup
import androidx.core.text.toSpannable
import androidx.core.view.isInvisible
import androidx.core.view.isVisible
import com.airbnb.mvrx.Fail
import com.airbnb.mvrx.Loading
import com.airbnb.mvrx.args
import com.airbnb.mvrx.parentFragmentViewModel
@ -33,6 +34,7 @@ import com.airbnb.mvrx.withState
import com.jakewharton.rxbinding3.widget.checkedChanges
import im.vector.app.R
import im.vector.app.core.di.ScreenComponent
import im.vector.app.core.error.ErrorFormatter
import im.vector.app.core.extensions.registerStartForActivityResult
import im.vector.app.core.extensions.setTextOrHide
import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment
@ -55,6 +57,7 @@ class LeaveSpaceBottomSheet : VectorBaseBottomSheetDialogFragment<BottomSheetLea
}
@Inject lateinit var colorProvider: ColorProvider
@Inject lateinit var errorFormatter: ErrorFormatter
override fun injectWith(injector: ScreenComponent) {
injector.inject(this)
@ -74,7 +77,7 @@ class LeaveSpaceBottomSheet : VectorBaseBottomSheetDialogFragment<BottomSheetLea
// nothing actually?
} else {
// move back to default
settingsViewModel.handle(SpaceMenuViewAction.SetAutoLeaveAll)
settingsViewModel.handle(SpaceLeaveViewAction.SetAutoLeaveAll)
}
}
@ -85,13 +88,13 @@ class LeaveSpaceBottomSheet : VectorBaseBottomSheetDialogFragment<BottomSheetLea
.subscribe {
when (it) {
views.leaveAll.id -> {
settingsViewModel.handle(SpaceMenuViewAction.SetAutoLeaveAll)
settingsViewModel.handle(SpaceLeaveViewAction.SetAutoLeaveAll)
}
views.leaveNone.id -> {
settingsViewModel.handle(SpaceMenuViewAction.SetAutoLeaveNone)
settingsViewModel.handle(SpaceLeaveViewAction.SetAutoLeaveNone)
}
views.leaveSelected.id -> {
settingsViewModel.handle(SpaceMenuViewAction.SetAutoLeaveSelected)
settingsViewModel.handle(SpaceLeaveViewAction.SetAutoLeaveSelected)
// launch dedicated activity
cherryPickLeaveActivityResult.launch(
SpaceLeaveAdvancedActivity.newIntent(requireContext(), spaceArgs.spaceId)
@ -102,7 +105,7 @@ class LeaveSpaceBottomSheet : VectorBaseBottomSheetDialogFragment<BottomSheetLea
.disposeOnDestroyView()
views.leaveButton.debouncedClicks {
settingsViewModel.handle(SpaceMenuViewAction.LeaveSpace)
settingsViewModel.handle(SpaceLeaveViewAction.LeaveSpace)
}
views.cancelButton.debouncedClicks {
@ -115,7 +118,7 @@ class LeaveSpaceBottomSheet : VectorBaseBottomSheetDialogFragment<BottomSheetLea
val spaceSummary = state.spaceSummary ?: return@withState
val bestName = spaceSummary.toMatrixItem().getBestName()
val commonText = getString(R.string.space_leave_prompt_msg, bestName)
val commonText = getString(R.string.space_leave_prompt_msg_with_name, bestName)
.toSpannable().styleMatchingText(bestName, Typeface.BOLD)
val warningMessage: CharSequence = if (spaceSummary.otherMemberIds.isEmpty()) {
@ -148,6 +151,7 @@ class LeaveSpaceBottomSheet : VectorBaseBottomSheetDialogFragment<BottomSheetLea
views.bottomLeaveSpaceWarningText.setTextOrHide(warningMessage)
views.inlineErrorText.setTextOrHide(null)
if (state.leavingState is Loading) {
views.leaveButton.isInvisible = true
views.cancelButton.isInvisible = true
@ -156,6 +160,9 @@ class LeaveSpaceBottomSheet : VectorBaseBottomSheetDialogFragment<BottomSheetLea
views.leaveButton.isInvisible = false
views.cancelButton.isInvisible = false
views.leaveProgress.isVisible = false
if (state.leavingState is Fail) {
views.inlineErrorText.setTextOrHide(errorFormatter.toHumanReadable(state.leavingState.error))
}
}
val hasChildren = (spaceSummary.spaceChildren?.size ?: 0) > 0

View file

@ -18,9 +18,9 @@ package im.vector.app.features.spaces
import im.vector.app.core.platform.VectorViewModelAction
sealed class SpaceMenuViewAction : VectorViewModelAction {
object SetAutoLeaveAll : SpaceMenuViewAction()
object SetAutoLeaveNone : SpaceMenuViewAction()
object SetAutoLeaveSelected : SpaceMenuViewAction()
object LeaveSpace : SpaceMenuViewAction()
sealed class SpaceLeaveViewAction : VectorViewModelAction {
object SetAutoLeaveAll : SpaceLeaveViewAction()
object SetAutoLeaveNone : SpaceLeaveViewAction()
object SetAutoLeaveSelected : SpaceLeaveViewAction()
object LeaveSpace : SpaceLeaveViewAction()
}

View file

@ -28,7 +28,7 @@ data class SpaceMenuState(
val canInvite: Boolean = false,
val canAddChild: Boolean = false,
val isLastAdmin: Boolean = false,
val leaveMode: LeaveMode = LeaveMode.LEAVE_ALL,
val leaveMode: LeaveMode = LeaveMode.LEAVE_NONE,
val leavingState: Async<Unit> = Uninitialized
) : MvRxState {
constructor(args: SpaceBottomSheetSettingsArgs) : this(spaceId = args.spaceId)

View file

@ -22,6 +22,7 @@ import com.airbnb.mvrx.FragmentViewModelContext
import com.airbnb.mvrx.Loading
import com.airbnb.mvrx.MvRxViewModelFactory
import com.airbnb.mvrx.Success
import com.airbnb.mvrx.Uninitialized
import com.airbnb.mvrx.ViewModelContext
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
@ -46,7 +47,7 @@ class SpaceMenuViewModel @AssistedInject constructor(
@Assisted val initialState: SpaceMenuState,
val session: Session,
val appStateHandler: AppStateHandler
) : VectorViewModel<SpaceMenuState, SpaceMenuViewAction, EmptyViewEvents>(initialState) {
) : VectorViewModel<SpaceMenuState, SpaceLeaveViewAction, EmptyViewEvents>(initialState) {
@AssistedFactory
interface Factory {
@ -84,7 +85,8 @@ class SpaceMenuViewModel @AssistedInject constructor(
}
}
}
}
}.disposeOnClear()
PowerLevelsObservableFactory(room)
.createObservable()
.subscribe {
@ -117,12 +119,18 @@ class SpaceMenuViewModel @AssistedInject constructor(
}
}
override fun handle(action: SpaceMenuViewAction) {
override fun handle(action: SpaceLeaveViewAction) {
when (action) {
SpaceMenuViewAction.SetAutoLeaveAll -> setState { copy(leaveMode = SpaceMenuState.LeaveMode.LEAVE_ALL) }
SpaceMenuViewAction.SetAutoLeaveNone -> setState { copy(leaveMode = SpaceMenuState.LeaveMode.LEAVE_NONE) }
SpaceMenuViewAction.SetAutoLeaveSelected -> setState { copy(leaveMode = SpaceMenuState.LeaveMode.LEAVE_SELECTED) }
SpaceMenuViewAction.LeaveSpace -> handleLeaveSpace()
SpaceLeaveViewAction.SetAutoLeaveAll -> setState {
copy(leaveMode = SpaceMenuState.LeaveMode.LEAVE_ALL, leavingState = Uninitialized)
}
SpaceLeaveViewAction.SetAutoLeaveNone -> setState {
copy(leaveMode = SpaceMenuState.LeaveMode.LEAVE_NONE, leavingState = Uninitialized)
}
SpaceLeaveViewAction.SetAutoLeaveSelected -> setState {
copy(leaveMode = SpaceMenuState.LeaveMode.LEAVE_SELECTED, leavingState = Uninitialized)
}
SpaceLeaveViewAction.LeaveSpace -> handleLeaveSpace()
}
}
@ -136,19 +144,20 @@ class SpaceMenuViewModel @AssistedInject constructor(
session.getRoom(initialState.spaceId)?.leave(null)
} else if (state.leaveMode == SpaceMenuState.LeaveMode.LEAVE_ALL) {
// need to find all child rooms that i have joined
try {
session.getRoomSummaries(
roomSummaryQueryParams {
excludeType = null
activeSpaceFilter = ActiveSpaceFilter.ActiveSpace(initialState.spaceId)
memberships = listOf(Membership.JOIN)
}
).forEach {
session.getRoomSummaries(
roomSummaryQueryParams {
excludeType = null
activeSpaceFilter = ActiveSpaceFilter.ActiveSpace(initialState.spaceId)
memberships = listOf(Membership.JOIN)
}
).forEach {
try {
session.getRoom(it.roomId)?.leave(null)
} catch (failure: Throwable) {
// silently ignore?
Timber.e(failure, "Fail to leave sub rooms/spaces")
}
} catch (failure: Throwable) {
// silently ignore?
Timber.e(failure, "Fail to leave sub rooms/spaces")
}
session.getRoom(initialState.spaceId)?.leave(null)
}

View file

@ -22,4 +22,5 @@ sealed class SpaceLeaveAdvanceViewAction : VectorViewModelAction {
data class ToggleSelection(val roomId: String) : SpaceLeaveAdvanceViewAction()
data class UpdateFilter(val filter: String) : SpaceLeaveAdvanceViewAction()
object DoLeave : SpaceLeaveAdvanceViewAction()
object ClearError : SpaceLeaveAdvanceViewAction()
}

View file

@ -27,11 +27,13 @@ import com.airbnb.mvrx.MvRx
import com.airbnb.mvrx.Success
import com.airbnb.mvrx.viewModel
import com.google.android.material.appbar.MaterialToolbar
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import im.vector.app.R
import im.vector.app.core.di.ScreenComponent
import im.vector.app.core.error.ErrorFormatter
import im.vector.app.core.extensions.commitTransaction
import im.vector.app.core.extensions.hideKeyboard
import im.vector.app.core.extensions.setTextOrHide
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivitySimpleLoadingBinding
@ -63,8 +65,7 @@ class SpaceLeaveAdvancedActivity : VectorBaseActivity<ActivitySimpleLoadingBindi
}
override fun hideWaitingView() {
views.waitingView.waitingStatusText.text = null
views.waitingView.waitingStatusText.isGone = true
views.waitingView.waitingStatusText.setTextOrHide(null)
views.waitingView.waitingHorizontalProgress.progress = 0
views.waitingView.waitingHorizontalProgress.isVisible = false
super.hideWaitingView()
@ -104,7 +105,13 @@ class SpaceLeaveAdvancedActivity : VectorBaseActivity<ActivitySimpleLoadingBindi
}
is Fail -> {
hideWaitingView()
showSnackbar(errorFormatter.toHumanReadable(state.leaveState.error))
MaterialAlertDialogBuilder(this)
.setTitle(R.string.dialog_title_error)
.setMessage(errorFormatter.toHumanReadable(state.leaveState.error))
.setPositiveButton(R.string.ok) { _, _ ->
leaveViewModel.handle(SpaceLeaveAdvanceViewAction.ClearError)
}
.show()
}
else -> {
hideWaitingView()

View file

@ -25,7 +25,6 @@ import com.airbnb.mvrx.withState
import com.jakewharton.rxbinding3.appcompat.queryTextChanges
import im.vector.app.core.extensions.cleanup
import im.vector.app.core.extensions.configureWith
import im.vector.app.core.platform.OnBackPressed
import im.vector.app.core.platform.VectorBaseFragment
import im.vector.app.databinding.FragmentSpaceLeaveAdvancedBinding
import io.reactivex.rxkotlin.subscribeBy
@ -36,7 +35,6 @@ import javax.inject.Inject
class SpaceLeaveAdvancedFragment @Inject constructor(
val controller: SelectChildrenController
) : VectorBaseFragment<FragmentSpaceLeaveAdvancedBinding>(),
OnBackPressed,
SelectChildrenController.Listener {
override fun getBinding(inflater: LayoutInflater, container: ViewGroup?) =
@ -77,9 +75,4 @@ class SpaceLeaveAdvancedFragment @Inject constructor(
override fun onItemSelected(roomSummary: RoomSummary) {
viewModel.handle(SpaceLeaveAdvanceViewAction.ToggleSelection(roomSummary.roomId))
}
override fun onBackPressed(toolbarButton: Boolean): Boolean {
requireActivity().finish()
return true
}
}

View file

@ -23,6 +23,7 @@ import com.airbnb.mvrx.FragmentViewModelContext
import com.airbnb.mvrx.Loading
import com.airbnb.mvrx.MvRxViewModelFactory
import com.airbnb.mvrx.Success
import com.airbnb.mvrx.Uninitialized
import com.airbnb.mvrx.ViewModelContext
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
@ -31,6 +32,7 @@ import im.vector.app.AppStateHandler
import im.vector.app.core.platform.EmptyViewEvents
import im.vector.app.core.platform.VectorViewModel
import kotlinx.coroutines.launch
import okhttp3.internal.toImmutableList
import org.matrix.android.sdk.api.query.ActiveSpaceFilter
import org.matrix.android.sdk.api.query.RoomCategoryFilter
import org.matrix.android.sdk.api.session.Session
@ -56,7 +58,7 @@ class SpaceLeaveAdvancedViewModel @AssistedInject constructor(
}
setState {
copy(
selectedRooms = existing.toList()
selectedRooms = existing.toImmutableList()
)
}
}
@ -67,14 +69,15 @@ class SpaceLeaveAdvancedViewModel @AssistedInject constructor(
setState { copy(leaveState = Loading()) }
viewModelScope.launch {
try {
try {
state.selectedRooms.forEach {
state.selectedRooms.forEach {
try {
session.getRoom(it)?.leave(null)
} catch (failure: Throwable) {
// silently ignore?
Timber.e(failure, "Fail to leave sub rooms/spaces")
}
} catch (failure: Throwable) {
// silently ignore?
Timber.e(failure, "Fail to leave sub rooms/spaces")
}
session.getRoom(initialState.spaceId)?.leave(null)
// We observe the membership and to dismiss when we have remote echo of leaving
} catch (failure: Throwable) {
@ -82,6 +85,9 @@ class SpaceLeaveAdvancedViewModel @AssistedInject constructor(
}
}
}
SpaceLeaveAdvanceViewAction.ClearError -> {
setState { copy(leaveState = Uninitialized) }
}
}
}

View file

@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?colorSurface"
android:background="?android:colorBackground"
android:orientation="vertical">
<TextView
@ -16,7 +16,7 @@
android:layout_marginEnd="@dimen/layout_horizontal_margin"
android:layout_marginBottom="8dp"
android:textColor="?vctr_content_primary"
tools:text="@string/space_leave_prompt_msg" />
tools:text="@string/space_leave_prompt_msg_with_name" />
<RadioGroup
android:id="@+id/autoLeaveRadioGroup"
@ -59,7 +59,9 @@
android:layout_marginStart="@dimen/layout_horizontal_margin"
android:layout_marginTop="4dp"
android:layout_marginEnd="@dimen/layout_horizontal_margin"
android:textColor="?vctr_content_secondary"
android:textColor="?colorError"
tools:visibility="visible"
tools:text="@string/error_no_network"
android:visibility="gone" />
<FrameLayout

View file

@ -1165,6 +1165,7 @@
<string name="space_explore_activity_title">استكشِف الغُرف</string>
<string name="space_add_child_title">أضف غُرف</string>
<string name="leave_space">غادر المساحة</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">هل أنت متأكد أنك تريد مغادرة المساحة؟</string>
<string name="space_leave_prompt_msg_only_you">انت الشخص الوحيد هنا إذا غادرت، فلن يتمكن أي شخص من الانضمام في المستقبل، بما في ذلك أنت.</string>
<string name="space_leave_prompt_msg_private">هذه المساحة ليست عامة. لن تتمكن من الانضمام مرة أخرى بدون دعوة.</string>

View file

@ -2737,6 +2737,7 @@
<string name="you_are_invited">Jste zváni</string>
<string name="spaces_beta_welcome_to_spaces">Vítejte v prostorech!</string>
<string name="space_add_existing_rooms">Přidat existující místnosti a prostor</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">Jste si jisti, že chcete opustit tento prostor\?</string>
<string name="leave_space">Opustit prostor</string>
<string name="space_add_child_title">Přidat místnosti</string>

View file

@ -2770,6 +2770,7 @@
<string name="command_description_leave_room">Verlasse den Raum mit der angegebenen ID (oder den aktuellen Raum, wenn keine ID angegeben wird)</string>
<string name="search_hint_room_name">Name suchen</string>
<string name="you_are_invited">Du wurdest eingeladen</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">Bist du dir sicher, dass du den Space verlassen willst\?</string>
<string name="leave_space">Space verlassen</string>
<string name="space_add_child_title">Räume hinzufügen</string>

View file

@ -2674,6 +2674,7 @@
<string name="space_leave_prompt_msg_as_admin">Vi estas administranto de ĉi tiu aro. Certigu, ke vi transdonis administrajn rajtojn al alia ano, antaŭ ol vi vere foriros.</string>
<string name="space_leave_prompt_msg_private">Ĉi tiu aro ne estas publika. Vi ne povos ree aliĝi sen invito.</string>
<string name="space_leave_prompt_msg_only_you">Vi estas la sola persono ĉi tie. Se vi foriros, neniu plu povos aliĝi, inkluzive vin mem.</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">Ĉu vi certe volas foriri de la aro\?</string>
<string name="leave_space">Foriri de aro</string>
<string name="space_add_child_title">Aldoni ĉambrojn</string>

View file

@ -2619,6 +2619,7 @@ Por favor permite el acceso en la próxima ventana emergente para descubrir usua
<string name="labs_use_restricted_join_rule">Espacio Experimental - Sala Restringida.</string>
<string name="you_are_invited">Estas invitado</string>
<string name="space_add_rooms">Añadir salas</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">Estas seguro de que quieres salir de este espacio\?</string>
<string name="leave_space">Salir de este espacio</string>
<string name="space_add_child_title">Añadir salas</string>

View file

@ -2679,6 +2679,7 @@
<string name="spaces_beta_welcome_to_spaces_desc">Kogukonnakeskused on uus võimalus siduda jututubasid ja inimesi.</string>
<string name="spaces_beta_welcome_to_spaces">Tere tulemast kasutama kogukonnakeskuseid!</string>
<string name="space_add_existing_rooms">Lisa olemasolevaid jututubasid ja kogukonnakeskuseid</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">Kas oled kindel, et soovid lahkuda kogukonnakeskusest\?</string>
<string name="leave_space">Lahku kogukonnakeskusest</string>
<string name="space_add_child_title">Lisa jututuba</string>

View file

@ -2679,6 +2679,7 @@
<string name="spaces_beta_welcome_to_spaces_desc">فضاها شیوه‌ای جدید برای گروه‌بندی اتاق‌ها و افراد است.</string>
<string name="spaces_beta_welcome_to_spaces">به فضاها خوش آمدید!</string>
<string name="space_add_existing_rooms">افزودن فضا و اتاق‌های موجود</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">مطمئنید که می‌خواهید فضا را ترک کنید؟</string>
<string name="leave_space">ترک فضا</string>
<string name="space_add_child_title">افزودن اتاق</string>

View file

@ -2748,6 +2748,7 @@
<string name="space_leave_prompt_msg_as_admin">Vous êtes admin de cet espace, assurez-vous davoir transféré les droits dadmin à un autre membre avant de partir.</string>
<string name="space_leave_prompt_msg_private">Cet espace nest pas public. Vous ne pourrez pas le rejoindre sans invitation.</string>
<string name="space_leave_prompt_msg_only_you">Vous êtes la seule personne ici. Si vous partez, personne ne pourra entrer à lavenir, même pas vous.</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">Voulez-vous vraiment quitter lespace\?</string>
<string name="leave_space">Quitter lespace</string>
<string name="space_add_child_title">Ajouter des salons</string>

View file

@ -2708,6 +2708,7 @@
<string name="spaces_beta_welcome_to_spaces_desc">Les espaces sont une nouvelle manière de regrouper les salons et les gens.</string>
<string name="spaces_beta_welcome_to_spaces">Bienvenue dans les espaces !</string>
<string name="space_add_existing_rooms">Ajouter des salons et espaces existants</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">Voulez-vous vraiment quitter lespace \?</string>
<string name="leave_space">Quitter lespace</string>
<string name="space_add_child_title">Ajouter des salons</string>

View file

@ -2490,6 +2490,7 @@ Ha nem te állítottad be a visszaállítási metódust, akkor egy támadó pró
<string name="space_leave_prompt_msg_as_admin">Most te vagy a tér adminisztrátora, bizonyosodj meg arról, hogy kineveztél mást adminisztrátornak mielőtt elhagyod.</string>
<string name="space_leave_prompt_msg_private">Ez a tér nem nyilvános. Kilépés után csak újabb meghívóval lehet újra belépni.</string>
<string name="space_leave_prompt_msg_only_you">Csak te van itt. Ha kilépsz, akkor a jövőben senki nem tud majd ide belépni, beleértve téged is.</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">Biztos el akarod hagyni a teret\?</string>
<string name="leave_space">Tér elhagyása</string>
<string name="space_add_child_title">Szobák hozzáadása</string>

View file

@ -2732,6 +2732,7 @@
<string name="spaces_beta_welcome_to_spaces_desc">Gli Spazi sono un nuovo modo per raggruppare stanze e contatti.</string>
<string name="spaces_beta_welcome_to_spaces">Benvenuto negli Spazi!</string>
<string name="space_add_existing_rooms">Aggiungi stanze e Spazi esistenti</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">Vuoi veramente uscire dallo Spazio\?</string>
<string name="leave_space">Esci dallo Spazio</string>
<string name="space_add_child_title">Aggiungi stanze</string>

View file

@ -2815,6 +2815,7 @@
<string name="space_leave_prompt_msg_as_admin">Você é admin deste espaço, assegure-se que você tem transferido direito de admin a um outro membro antes de sair.</string>
<string name="space_leave_prompt_msg_private">Este espaço não é público. Você não vai ser capaz de se rejuntar sem um convite.</string>
<string name="space_leave_prompt_msg_only_you">Você é a única pessoa aqui. Se você sair, ninguém vai ser capaz de se juntar no futuro, incluindo você.</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">Você tem certeza que você quer sair do espaço\?</string>
<string name="leave_space">Sair de Espaço</string>
<string name="space_add_child_title">Adicionar salas</string>

View file

@ -2868,6 +2868,7 @@
<string name="space_leave_prompt_msg_as_admin">Вы являетесь администратором этого пространства, перед уходом убедитесь, что передали права администратора другому пользователю.</string>
<string name="space_leave_prompt_msg_private">Это пространство не является публичным. Вы не сможете присоединиться к нему без приглашения.</string>
<string name="space_leave_prompt_msg_only_you">Вы здесь единственный человек. Если вы уйдёте, никто не сможет присоединиться в будущем, включая вас.</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">Вы уверены, что хотите покинуть пространство\?</string>
<string name="leave_space">Покинуть пространство</string>
<string name="space_add_child_title">Добавить комнаты</string>

View file

@ -2668,6 +2668,7 @@
<string name="you_are_invited">Jeni ftuar</string>
<string name="spaces_beta_welcome_to_spaces">Mirë se vini te Hapësira!</string>
<string name="space_add_existing_rooms">Shtoni dhoma ekzistuese dhe hapësira</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">Jeni i sigurt se doni të dilni nga hapësira\?</string>
<string name="leave_space">Braktiseni Hapësirën</string>
<string name="space_add_child_title">Shtoni dhoma</string>

View file

@ -2737,6 +2737,7 @@
<string name="spaces_beta_welcome_to_spaces_desc">Utrymmen är ett nytt sätt att gruppera rum och personer.</string>
<string name="spaces_beta_welcome_to_spaces">Välkommen till utrymmen!</string>
<string name="space_add_existing_rooms">Lägg till existerande rum och utrymme</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">Är du säker på att du vill lämna utrymmet\?</string>
<string name="leave_space">Lämna utrymme</string>
<string name="space_add_child_title">Lägg till rum</string>

View file

@ -2602,6 +2602,7 @@
<string name="space_leave_prompt_msg_as_admin">你是此空间的管理员,请确保你在离开前已将管理权限转让给另一位成员。</string>
<string name="space_leave_prompt_msg_private">此空间并非公开空间。你将无法在没有邀请的情况下重新加入。</string>
<string name="space_leave_prompt_msg_only_you">你是这唯一的人。如果你离开,包括你在内的所有人都将无法加入此空间。</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">你确定你想要离开此空间吗?</string>
<string name="leave_space">离开空间</string>
<string name="space_add_child_title">添加聊天室</string>

View file

@ -2628,6 +2628,7 @@
<string name="spaces_beta_welcome_to_spaces_desc">空間是將聊天室與人們分組的新方式。</string>
<string name="spaces_beta_welcome_to_spaces">歡迎使用空間!</string>
<string name="space_add_existing_rooms">新增既有的聊天室與空間</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">您確定您想要離開空間嗎?</string>
<string name="leave_space">離開空間</string>
<string name="space_add_child_title">新增聊天室</string>

View file

@ -3479,14 +3479,15 @@
<string name="space_explore_activity_title">Explore rooms</string>
<string name="space_add_child_title">Add rooms</string>
<string name="leave_space">Leave Space</string>
<string name="space_leave_prompt_msg">Are you sure you want to leave %s?</string>
<!-- TO BE REMOVED -->
<string name="space_leave_prompt_msg">Are you sure you want to leave the space?</string>
<string name="space_leave_prompt_msg_only_you">You are the only person here. If you leave, no one will be able to join in the future, including you.</string>
<string name="space_leave_prompt_msg_private">You won\'t be able to rejoin unless you are re-invited.</string>
<string name="space_leave_prompt_msg_as_admin">You\'re the only admin of this space. Leaving it will mean no one has control over it.</string>
<string name="leave_all_rooms_and_spaces">Leave all rooms and spaces</string>
<string name="you_will_leave_all_in">You will leave all rooms and spaces in %s.</string>
<string name="dont_leave_any">Dont leave any rooms and spaces</string>
<string name="leave_specific_ones">Leave specific rooms and spaces</string>
<string name="leave_specific_ones">Leave specific rooms and spaces</string>
<string name="pick_tings_to_leave">Pick things to leave</string>
<string name="space_add_existing_rooms">Add existing rooms and space</string>