Hide .mov for live photos

Signed-off-by: Louis Chemineau <louis@chmn.me>
This commit is contained in:
Louis Chemineau 2023-11-08 14:52:50 +01:00
parent 397c96967a
commit 1c84139fa6
No known key found for this signature in database
4 changed files with 32 additions and 15 deletions

View file

@ -87,6 +87,7 @@ class FilesPlugin extends ServerPlugin {
public const SUBFOLDER_COUNT_PROPERTYNAME = '{http://nextcloud.org/ns}contained-folder-count';
public const SUBFILE_COUNT_PROPERTYNAME = '{http://nextcloud.org/ns}contained-file-count';
public const FILE_METADATA_PREFIX = '{http://nextcloud.org/ns}metadata-';
public const HIDDEN_PROPERTYNAME = '{http://nextcloud.org/ns}hidden';
/** Reference to main server object */
private ?Server $server = null;
@ -386,6 +387,12 @@ class FilesPlugin extends ServerPlugin {
$propFind->handle(self::FILE_METADATA_PREFIX . $metadataKey, $metadataValue);
}
$propFind->handle(self::HIDDEN_PROPERTYNAME, function () use ($node) {
$filesMetadataManager = \OCP\Server::get(IFilesMetadataManager::class);
$metadata = $filesMetadataManager->getMetadata((int)$node->getFileId(), true);
return $metadata->hasKey('files-live-photo') && $node->getFileInfo()->getMimetype() === 'video/quicktime' ? 'true' : 'false';
});
/**
* Return file/folder name as displayname. The primary reason to
* implement it this way is to avoid costly fallback to

View file

@ -20,7 +20,7 @@
*
*/
import MenuIcon from '@mdi/svg/svg/sun-compass.svg?raw'
import { FileAction, addNewFileMenuEntry, registerFileAction } from '@nextcloud/files'
import { FileAction, addNewFileMenuEntry, registerDavProperty, registerFileAction } from '@nextcloud/files'
import { action as deleteAction } from './actions/deleteAction'
import { action as downloadAction } from './actions/downloadAction'
@ -41,6 +41,8 @@ import registerPreviewServiceWorker from './services/ServiceWorker.js'
import './init-templates'
import { initLivePhotos } from './services/LivePhotos'
// Register file actions
registerFileAction(deleteAction)
registerFileAction(downloadAction)
@ -63,3 +65,7 @@ registerRecentView()
// Register preview service worker
registerPreviewServiceWorker()
registerDavProperty('nc:hidden', { nc: 'http://nextcloud.org/ns' })
initLivePhotos()

View file

@ -1,18 +1,7 @@
/*!
* vue-qrcode v1.0.2
* https://fengyuanchen.github.io/vue-qrcode
*
* Copyright 2018-present Chen Fengyuan
* Released under the MIT license
*
* Date: 2020-01-18T06:04:33.222Z
*/
/**
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
* @copyright Copyright (c) 2023 Louis Chmn <louis@chmn.me>
*
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author John Molakvoæ <skjnldsv@protonmail.com>
* @author Louis Chmn <louis@chmn.me>
*
* @license AGPL-3.0-or-later
*
@ -30,3 +19,15 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
import { Node, registerDavProperty } from '@nextcloud/files'
export function initLivePhotos(): void {
registerDavProperty('nc:metadata-files-live-photo', { nc: 'http://nextcloud.org/ns' })
}
/**
* @param {Node} node - The node
*/
export function isLivePhoto(node: Node): boolean {
return node.attributes['metadata-files-live-photo'] !== null
}

View file

@ -256,7 +256,10 @@ export default Vue.extend({
},
dirContents(): Node[] {
return (this.currentFolder?._children || []).map(this.getNode).filter(file => file)
return (this.currentFolder?._children || [])
.map(this.getNode)
.filter(file => file)
.filter(file => file?.attributes?.hidden !== true)
},
/**