fix: the account files filter should also work in trashbin

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This commit is contained in:
Ferdinand Thiessen 2025-09-03 17:14:29 +02:00 committed by Andy Scherzinger
parent e135a595d4
commit a2c373b7ea
2 changed files with 26 additions and 5 deletions

View file

@ -40,7 +40,7 @@ defineEmits<{
<style scoped>
.files-list-filter__clear-button :deep(.action-button__text) {
color: var(--color-error-text);
color: var(--color-text-error, var(--color-error-text));
}
:deep(.button-vue) {

View file

@ -11,6 +11,7 @@ import Vue from 'vue'
import FileListFilterAccount from '../components/FileListFilterAccount.vue'
import { isPublicShare } from '@nextcloud/sharing/public'
import { TRASHBIN_VIEW_ID } from '../../../files_trashbin/src/files_views/trashbinView'
export interface IAccountData {
uid: string
@ -62,19 +63,30 @@ class AccountFilter extends FileListFilter {
const userIds = this.filterAccounts.map(({ uid }) => uid)
// Filter if the owner of the node is in the list of filtered accounts
return nodes.filter((node) => {
const sharees = node.attributes.sharees?.sharee as { id: string }[] | undefined
// If the node provides no information lets keep it
if (!node.owner && !sharees) {
return true
if (window.OCP.Files.Router.params.view === TRASHBIN_VIEW_ID) {
const deletedBy = node.attributes?.['trashbin-deleted-by-id']
if (deletedBy && userIds.includes(deletedBy)) {
return true
}
return false
}
// if the owner matches
if (node.owner && userIds.includes(node.owner)) {
return true
}
// Or any of the sharees (if only one share this will be an object, otherwise an array. So using `.flat()` to make it always an array)
const sharees = node.attributes.sharees?.sharee as { id: string }[] | undefined
if (sharees && [sharees].flat().some(({ id }) => userIds.includes(id))) {
return true
}
// If the node provides no information lets keep it
if (!node.owner && !sharees) {
return true
}
// Not a valid node for the current filter
return false
})
@ -139,6 +151,15 @@ class AccountFilter extends FileListFilter {
})
}
}
// lets also handle trashbin
const deletedBy = node.attributes?.['trashbin-deleted-by-id']
if (deletedBy) {
available.set(deletedBy, {
uid: deletedBy,
displayName: node.attributes?.['trashbin-deleted-by-display-name'] || deletedBy,
})
}
}
this.availableAccounts = [...available.values()]