mirror of
https://github.com/nextcloud/server.git
synced 2026-04-21 06:08:46 -04:00
Merge pull request #54847 from nextcloud/fix/account-filter
fix: the account files filter should also work in trashbin
This commit is contained in:
commit
47669f5f38
11 changed files with 41 additions and 17 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()]
|
||||
|
|
|
|||
4
dist/files-init.js
vendored
4
dist/files-init.js
vendored
File diff suppressed because one or more lines are too long
2
dist/files-init.js.map
vendored
2
dist/files-init.js.map
vendored
File diff suppressed because one or more lines are too long
4
dist/files_sharing-init.js
vendored
4
dist/files_sharing-init.js
vendored
File diff suppressed because one or more lines are too long
3
dist/files_sharing-init.js.license
vendored
3
dist/files_sharing-init.js.license
vendored
|
|
@ -203,6 +203,9 @@ This file is generated from multiple sources. Included packages:
|
|||
- vue-loader
|
||||
- version: 15.11.1
|
||||
- license: MIT
|
||||
- vue-router
|
||||
- version: 3.6.5
|
||||
- license: MIT
|
||||
- vue
|
||||
- version: 2.7.16
|
||||
- license: MIT
|
||||
|
|
|
|||
2
dist/files_sharing-init.js.map
vendored
2
dist/files_sharing-init.js.map
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue