mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-20 08:39:22 +01:00
Standardize internal UI state property naming.
This commit is contained in:
committed by
Greyson Parrelli
parent
d4c266561f
commit
e235ce52e5
@@ -24,8 +24,8 @@ import org.thoughtcrime.securesms.stickers.AvailableStickerPack.DownloadStatus
|
||||
class StickerManagementViewModel : ViewModel() {
|
||||
private val stickerManagementRepo = StickerManagementRepository
|
||||
|
||||
private val _uiState = MutableStateFlow(StickerManagementUiState())
|
||||
val uiState: StateFlow<StickerManagementUiState> = _uiState.asStateFlow()
|
||||
private val internalUiState = MutableStateFlow(StickerManagementUiState())
|
||||
val uiState: StateFlow<StickerManagementUiState> = internalUiState.asStateFlow()
|
||||
|
||||
private val downloadStatusByPackId: MutableStateFlow<Map<StickerPackId, DownloadStatus>> = MutableStateFlow(emptyMap())
|
||||
|
||||
@@ -68,12 +68,12 @@ class StickerManagementViewModel : ViewModel() {
|
||||
)
|
||||
}
|
||||
|
||||
_uiState.update { previousState ->
|
||||
previousState.copy(
|
||||
internalUiState.update {
|
||||
it.copy(
|
||||
availableBlessedPacks = availableBlessedPacks,
|
||||
availableNotBlessedPacks = availableNotBlessedPacks,
|
||||
installedPacks = installedPacks,
|
||||
multiSelectEnabled = if (installedPacks.isEmpty()) false else previousState.multiSelectEnabled
|
||||
multiSelectEnabled = if (installedPacks.isEmpty()) false else it.multiSelectEnabled
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -86,10 +86,8 @@ class StickerManagementViewModel : ViewModel() {
|
||||
StickerManagementRepository.installStickerPack(packId = pack.id, packKey = pack.key, notify = true)
|
||||
updatePackDownloadStatus(pack.id, DownloadStatus.Downloaded)
|
||||
|
||||
_uiState.update { previousState ->
|
||||
previousState.copy(
|
||||
actionConfirmation = StickerManagementConfirmation.InstalledPack(pack.record.title)
|
||||
)
|
||||
internalUiState.update {
|
||||
it.copy(actionConfirmation = StickerManagementConfirmation.InstalledPack(pack.record.title))
|
||||
}
|
||||
|
||||
delay(1500) // wait, so we show the downloaded status for a bit before removing this row from the available sticker packs list
|
||||
@@ -110,11 +108,9 @@ class StickerManagementViewModel : ViewModel() {
|
||||
return
|
||||
}
|
||||
|
||||
if (_uiState.value.multiSelectEnabled) {
|
||||
_uiState.update { previousState ->
|
||||
previousState.copy(
|
||||
userPrompt = ConfirmRemoveStickerPacksPrompt(numItemsToDelete = packIds.size)
|
||||
)
|
||||
if (internalUiState.value.multiSelectEnabled) {
|
||||
internalUiState.update {
|
||||
it.copy(userPrompt = ConfirmRemoveStickerPacksPrompt(numItemsToDelete = packIds.size))
|
||||
}
|
||||
} else {
|
||||
uninstallStickerPacks(packIds)
|
||||
@@ -122,48 +118,48 @@ class StickerManagementViewModel : ViewModel() {
|
||||
}
|
||||
|
||||
fun onUninstallStickerPacksConfirmed(packIds: Set<StickerPackId>) {
|
||||
_uiState.update { previousState -> previousState.copy(userPrompt = null) }
|
||||
internalUiState.update { it.copy(userPrompt = null) }
|
||||
uninstallStickerPacks(packIds)
|
||||
}
|
||||
|
||||
fun onUninstallStickerPacksCanceled() {
|
||||
_uiState.update { previousState -> previousState.copy(userPrompt = null) }
|
||||
internalUiState.update { it.copy(userPrompt = null) }
|
||||
}
|
||||
|
||||
private fun uninstallStickerPacks(packIds: Set<StickerPackId>) {
|
||||
val packsToUninstall = _uiState.value.installedPacks.filter { packIds.contains(it.id) }
|
||||
val packsToUninstall = internalUiState.value.installedPacks.filter { packIds.contains(it.id) }
|
||||
viewModelScope.launch {
|
||||
StickerManagementRepository.uninstallStickerPacks(packsToUninstall.associate { it.id to it.key })
|
||||
|
||||
_uiState.update { previousState ->
|
||||
previousState.copy(
|
||||
internalUiState.update {
|
||||
it.copy(
|
||||
actionConfirmation = if (packsToUninstall.size == 1) {
|
||||
StickerManagementConfirmation.UninstalledPack(packsToUninstall.single().record.title)
|
||||
} else {
|
||||
StickerManagementConfirmation.UninstalledPacks(packsToUninstall.size)
|
||||
},
|
||||
selectedPackIds = previousState.selectedPackIds.minus(packIds)
|
||||
selectedPackIds = it.selectedPackIds.minus(packIds)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun updatePosition(fromIndex: Int, toIndex: Int) {
|
||||
_uiState.update { it.copy(installedPacks = _uiState.value.installedPacks.swap(fromIndex, toIndex)) }
|
||||
internalUiState.update { it.copy(installedPacks = internalUiState.value.installedPacks.swap(fromIndex, toIndex)) }
|
||||
}
|
||||
|
||||
fun saveInstalledPacksSortOrder() {
|
||||
viewModelScope.launch {
|
||||
StickerManagementRepository.setStickerPacksOrder(_uiState.value.installedPacks.map { it.record })
|
||||
StickerManagementRepository.setStickerPacksOrder(internalUiState.value.installedPacks.map { it.record })
|
||||
}
|
||||
}
|
||||
|
||||
fun toggleSelection(pack: InstalledStickerPack) {
|
||||
_uiState.update { previousState ->
|
||||
val wasItemSelected = previousState.selectedPackIds.contains(pack.id)
|
||||
val selectedPackIds = if (wasItemSelected) previousState.selectedPackIds.minus(pack.id) else previousState.selectedPackIds.plus(pack.id)
|
||||
internalUiState.update {
|
||||
val wasItemSelected = it.selectedPackIds.contains(pack.id)
|
||||
val selectedPackIds = if (wasItemSelected) it.selectedPackIds.minus(pack.id) else it.selectedPackIds.plus(pack.id)
|
||||
|
||||
previousState.copy(
|
||||
it.copy(
|
||||
multiSelectEnabled = selectedPackIds.isNotEmpty(),
|
||||
selectedPackIds = selectedPackIds
|
||||
)
|
||||
@@ -171,21 +167,21 @@ class StickerManagementViewModel : ViewModel() {
|
||||
}
|
||||
|
||||
fun toggleSelectAll() {
|
||||
_uiState.update { previousState ->
|
||||
previousState.copy(
|
||||
internalUiState.update {
|
||||
it.copy(
|
||||
multiSelectEnabled = true,
|
||||
selectedPackIds = if (previousState.selectedPackIds.size == previousState.installedPacks.size) {
|
||||
selectedPackIds = if (it.selectedPackIds.size == it.installedPacks.size) {
|
||||
emptySet()
|
||||
} else {
|
||||
previousState.installedPacks.map { it.id }.toSet()
|
||||
it.installedPacks.map { pack -> pack.id }.toSet()
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun setMultiSelectEnabled(isEnabled: Boolean) {
|
||||
_uiState.update { previousState ->
|
||||
previousState.copy(
|
||||
internalUiState.update {
|
||||
it.copy(
|
||||
multiSelectEnabled = isEnabled,
|
||||
selectedPackIds = emptySet()
|
||||
)
|
||||
@@ -193,8 +189,8 @@ class StickerManagementViewModel : ViewModel() {
|
||||
}
|
||||
|
||||
fun onSnackbarDismiss() {
|
||||
_uiState.update { previousState ->
|
||||
previousState.copy(actionConfirmation = null)
|
||||
internalUiState.update {
|
||||
it.copy(actionConfirmation = null)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,8 +24,8 @@ class StickerPackPreviewViewModelV2(
|
||||
params: StickerPackParams?
|
||||
) : ViewModel() {
|
||||
private val stickerPreviewRepo: StickerPackPreviewRepository = StickerPackPreviewRepository()
|
||||
private val _uiState = MutableStateFlow(StickerPackPreviewUiState(contentState = ContentState.Loading))
|
||||
val uiState: StateFlow<StickerPackPreviewUiState> = _uiState.asStateFlow()
|
||||
private val internalUiState = MutableStateFlow(StickerPackPreviewUiState(contentState = ContentState.Loading))
|
||||
val uiState: StateFlow<StickerPackPreviewUiState> = internalUiState.asStateFlow()
|
||||
|
||||
init {
|
||||
if (params != null) {
|
||||
@@ -39,11 +39,11 @@ class StickerPackPreviewViewModelV2(
|
||||
stickerPreviewRepo.getStickerManifest(params.id.value, params.key.value) { result ->
|
||||
val stickerManifest = result.map { it.manifest }.orNull()
|
||||
if (stickerManifest != null) {
|
||||
_uiState.update { previousState ->
|
||||
previousState.copy(
|
||||
internalUiState.update {
|
||||
it.copy(
|
||||
contentState = ContentState.HasData(
|
||||
stickerManifest = stickerManifest,
|
||||
isPackInstalled = result.map { it.isInstalled }.getOrElse { false }
|
||||
isPackInstalled = result.map { pack -> pack.isInstalled }.getOrElse { false }
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -68,12 +68,12 @@ class StickerPackPreviewViewModelV2(
|
||||
}
|
||||
|
||||
private fun updateInstalledState(isInstalled: Boolean) {
|
||||
_uiState.update { previousState ->
|
||||
previousState.copy(
|
||||
contentState = if (previousState.contentState is ContentState.HasData) {
|
||||
previousState.contentState.copy(isPackInstalled = isInstalled)
|
||||
internalUiState.update {
|
||||
it.copy(
|
||||
contentState = if (it.contentState is ContentState.HasData) {
|
||||
it.contentState.copy(isPackInstalled = isInstalled)
|
||||
} else {
|
||||
previousState.contentState
|
||||
it.contentState
|
||||
},
|
||||
navTarget = StickerPackPreviewUiState.NavTarget.Up(delay = 500.milliseconds)
|
||||
)
|
||||
@@ -81,8 +81,8 @@ class StickerPackPreviewViewModelV2(
|
||||
}
|
||||
|
||||
private fun showDataUnavailableState() {
|
||||
_uiState.update { previousState ->
|
||||
previousState.copy(
|
||||
internalUiState.update {
|
||||
it.copy(
|
||||
contentState = ContentState.DataUnavailable,
|
||||
userMessage = StickerPackPreviewUiState.MessageType.STICKER_PACK_LOAD_FAILED,
|
||||
navTarget = StickerPackPreviewUiState.NavTarget.Up(delay = 1.seconds)
|
||||
@@ -91,11 +91,11 @@ class StickerPackPreviewViewModelV2(
|
||||
}
|
||||
|
||||
fun setNavTargetConsumed() {
|
||||
_uiState.update { previousState -> previousState.copy(navTarget = null) }
|
||||
internalUiState.update { it.copy(navTarget = null) }
|
||||
}
|
||||
|
||||
fun setUserMessageConsumed() {
|
||||
_uiState.update { previousState -> previousState.copy(userMessage = null) }
|
||||
internalUiState.update { it.copy(userMessage = null) }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user