Skip to content

Commit

Permalink
Use the enabled previews config to register images
Browse files Browse the repository at this point in the history
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
  • Loading branch information
skjnldsv committed Mar 3, 2022
1 parent 91d5b80 commit a26697d
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 10 deletions.
18 changes: 17 additions & 1 deletion lib/Listener/LoadViewerScript.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,35 @@

namespace OCA\Viewer\Listener;

use OCA\Files\Event\LoadAdditionalScriptsEvent;
use OCA\Viewer\AppInfo\Application;
use OCA\Viewer\Event\LoadViewer;
use OCA\Files\Event\LoadAdditionalScriptsEvent;
use OCP\AppFramework\Services\IInitialState;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\IPreview;
use OCP\Util;

class LoadViewerScript implements IEventListener {

/** @var IInitialState */
private $initialStateService;

/** @var IPreview */
private $previewManager;

public function __construct(IInitialState $initialStateService,
IPreview $previewManager) {
$this->initialStateService = $initialStateService;
$this->previewManager = $previewManager;
}

public function handle(Event $event): void {
if (!($event instanceof LoadViewer || $event instanceof LoadAdditionalScriptsEvent)) {
return;
}

Util::addScript(Application::APP_ID, 'viewer-main', 'files');
$this->initialStateService->provideInitialState('enabled_preview_providers', array_keys($this->previewManager->getProviders()));
}
}
10 changes: 7 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
"@nextcloud/axios": "^1.9.0",
"@nextcloud/dialogs": "^3.1.2",
"@nextcloud/event-bus": "^2.1.1",
"@nextcloud/initial-state": "^1.2.1",
"@nextcloud/l10n": "^1.4.1",
"@nextcloud/logger": "^2.1.0",
"@nextcloud/paths": "^2.1.0",
Expand Down
40 changes: 34 additions & 6 deletions src/models/images.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,48 @@
*
*/

import { loadState } from '@nextcloud/initial-state'
import logger from '../services/logger'
import Images from '../components/Images'

const enabledPreviewProviders = loadState(appName, 'enabled_preview_providers', [])

const mimes = [
'image/bmp',
'image/heic',
'image/jpeg',
'image/png',
'image/tiff',
'image/webp',
'image/x-xbitmap',
]

// Filter out supported mimes that are _not_
// enabled in the preview API
const filterEnabledMimes = () => {
return mimes.filter(filter => {
return enabledPreviewProviders.findIndex(mimeRegex => {
// Remove leading and trailing slash from string regex
const regex = new RegExp(mimeRegex.replace(/^\/|\/$/g, ''), 'i')
return filter.match(regex)
}) > -1
})
}

const enabledMimes = filterEnabledMimes()
const ignoredMimes = mimes.filter(x => !enabledMimes.includes(x))
if (ignoredMimes.length > 0) {
logger.warn('Some mimes were ignored because they are not enabled in the server previews config', { ignoredMimes })
}

export default {
id: 'images',
group: 'media',
mimes: [
'image/png',
'image/heic',
'image/jpeg',
// Gif and svg images does not rely on previews
'image/gif',
'image/x-xbitmap',
'image/bmp',
'image/svg+xml',
'image/webp',
...enabledMimes
],
component: Images,
}

0 comments on commit a26697d

Please sign in to comment.