mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
fix: the account files filter should also work in trashbin
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This commit is contained in:
parent
e135a595d4
commit
a2c373b7ea
2 changed files with 26 additions and 5 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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()]
|
||||
|
|
|
|||
Loading…
Reference in a new issue