Unpin items when dragging them to tags

This commit is contained in:
MM20 2022-09-25 18:48:43 +02:00
parent d95dd4c829
commit 69042e4d2f
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
2 changed files with 20 additions and 5 deletions

View File

@ -183,6 +183,7 @@ fun ReorderFavoritesGrid(viewModel: EditFavoritesSheetVM) {
val gridState = rememberLazyGridState()
val tagsListState = rememberLazyListState()
val tagsTitleSize = 48.dp.toPixels()
val tagsSpacing = 12.dp.toPixels()
val state = rememberLazyDragAndDropGridState(
gridState = gridState,
onDragStart = {
@ -211,7 +212,7 @@ fun ReorderFavoritesGrid(viewModel: EditFavoritesSheetVM) {
) {
val scroll = tagsListState.layoutInfo.viewportStartOffset
val tag = tagsListState.layoutInfo.visibleItemsInfo.find {
position.x + scroll > it.offset && position.x + scroll < it.offset + it.size
draggedCenter.x + scroll > it.offset && draggedCenter.x + scroll < it.offset + it.size - tagsSpacing
}
hoveredTag = tag?.index?.let { pinnedTags[it].tag }
} else {

View File

@ -55,8 +55,8 @@ class EditFavoritesSheetVM : ViewModel(), KoinComponent {
val pinnedTags = MutableLiveData<List<Tag>>(emptyList())
val availableTags = MutableLiveData<List<Tag>>(emptyList())
suspend fun reload() {
loading.value = true
suspend fun reload(showLoadingIndicator: Boolean = true) {
loading.value = showLoadingIndicator
manuallySorted = mutableListOf()
manuallySorted = repository.getFavorites(
manuallySorted = true,
@ -236,8 +236,10 @@ class EditFavoritesSheetVM : ViewModel(), KoinComponent {
gridItems.find { it is FavoritesSheetGridItem.Favorite && it.item.key == key } as FavoritesSheetGridItem.Favorite?
if (item != null) {
repository.removeFromFavorites(item.item)
gridItems.remove(item)
this.gridItems.value = gridItems
automaticallySorted.removeAll { it.key == item.item.key }
|| manuallySorted.removeAll { it.key == item.item.key }
|| frequentlyUsed.removeAll { it.key == item.item.key }
buildItemList()
}
}
@ -302,7 +304,19 @@ class EditFavoritesSheetVM : ViewModel(), KoinComponent {
val item =
gridItems.find { it is FavoritesSheetGridItem.Favorite && it.item.key == key } as FavoritesSheetGridItem.Favorite?
if (item != null) {
automaticallySorted.removeAll { it.key == item.item.key }
|| manuallySorted.removeAll { it.key == item.item.key }
|| frequentlyUsed.removeAll { it.key == item.item.key }
buildItemList()
customAttributesRepository.addTag(item.item, tag)
repository.unpinItem(item.item)
viewModelScope.launch {
frequentlyUsed = repository.getFavorites(
frequentlyUsed = true,
excludeTypes = listOf("tag"),
).first().toMutableList()
buildItemList()
}
}
}