feat: 🌱 include script ok
Some checks failed
retro / xml (push) Successful in 27s
retro / php (push) Failing after 1m15s
retro / nodejs (push) Failing after 1m40s
retro / release (push) Has been skipped

This commit is contained in:
Michel Roux 2025-01-03 22:50:29 +01:00
parent dc16fc8c49
commit c8d5e899f7
6 changed files with 27 additions and 26 deletions

View File

@ -16,13 +16,4 @@
<php min-version="8.2"/> <php min-version="8.2"/>
<nextcloud min-version="29" max-version="30"/> <nextcloud min-version="29" max-version="30"/>
</dependencies> </dependencies>
<navigations>
<navigation>
<id>retro</id>
<name>Games</name>
<route>retro.page.index</route>
<icon>app.svg</icon>
<type>link</type>
</navigation>
</navigations>
</info> </info>

View File

@ -10,26 +10,35 @@ use OCP\AppFramework\Http\Attribute\FrontpageRoute;
use OCP\AppFramework\Http\Attribute\NoAdminRequired; use OCP\AppFramework\Http\Attribute\NoAdminRequired;
use OCP\AppFramework\Http\Attribute\NoCSRFRequired; use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Services\IInitialState; use OCP\Files\IRootFolder;
use OCP\IRequest; use OCP\IRequest;
use OCP\IUserSession;
use OCP\Util; use OCP\Util;
class PageController extends Controller class PageController extends Controller
{ {
public function __construct(IRequest $request, private IInitialState $initialState) public function __construct(
{ IRequest $request,
private readonly IRootFolder $rootFolder,
private readonly IUserSession $userSession
) {
parent::__construct(Application::APP_ID, $request); parent::__construct(Application::APP_ID, $request);
} }
#[NoCSRFRequired] #[NoCSRFRequired]
#[NoAdminRequired] #[NoAdminRequired]
#[FrontpageRoute(verb: 'GET', url: '/{path}')] #[FrontpageRoute(verb: 'GET', url: '/{path}', requirements: ['path' => '.+'])]
public function index(): TemplateResponse public function run(string $path): TemplateResponse {
{ $user = $this->userSession->getUser();
Util::addStyle(Application::APP_ID, Application::APP_ID . '-main');
Util::addScript(Application::APP_ID, Application::APP_ID . '-main');
$this->initialState->provideInitialState(); if (!$user) {
throw new \Exception('User not logged in');
}
$folder = $this->rootFolder->getUserFolder($user->getUID());
$folder->get($path);
Util::addScript(Application::APP_ID, Application::APP_ID.'-main');
return new TemplateResponse( return new TemplateResponse(
Application::APP_ID, Application::APP_ID,

View File

@ -17,7 +17,7 @@ class LoadAdditionalScriptsListener implements IEventListener
{ {
public function handle(Event $event): void { public function handle(Event $event): void {
if ($event instanceof LoadAdditionalScriptsEvent) { if ($event instanceof LoadAdditionalScriptsEvent) {
Util::addInitScript(Application::APP_ID, 'init'); Util::addInitScript(Application::APP_ID, Application::APP_ID.'-init');
} }
} }
} }

View File

@ -7,7 +7,7 @@
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
findUnusedBaselineEntry="true" findUnusedBaselineEntry="true"
findUnusedCode="false" findUnusedCode="false"
phpVersion="8.1" phpVersion="8.2"
> >
<projectFiles> <projectFiles>
<directory name="lib" /> <directory name="lib" />

View File

@ -1,25 +1,25 @@
import { FileAction, FileType, Node, registerFileAction } from '@nextcloud/files' import { FileAction, FileType, Node, registerFileAction } from '@nextcloud/files'
import cores from './mime.json' import cores from './mime.json'
import { generateUrl } from '@nextcloud/router' import { generateUrl } from '@nextcloud/router'
import icon from '../img/'
import { t } from '@nextcloud/l10n' import { t } from '@nextcloud/l10n'
const action = new FileAction({ const action = new FileAction({
id: 'retro', id: 'retro',
displayName: () => t('repod', 'Play'), displayName: () => t('repod', 'Play'),
iconSvgInline: () => icon, iconSvgInline: () => '',
enabled: (files: Node[]) => { enabled: (files: Node[]) => {
if (files.length !== 1) return false if (files.length !== 1) return false
const file = files[0] const file = files[0]
if (file.type !== FileType.File) return false if (!file.fileid || file.type !== FileType.File) return false
const extension = file.extension?.substring(1)
for (const core in cores) { for (const core in cores) {
if (cores[core].types === file.mime) return true if (cores[core].types.includes(file.mime)) return true
if (cores[core].extensions.includes(file.extension)) return true if (cores[core].extensions.includes(extension)) return true
} }
return false return false
}, },
exec: async (file: Node) => { exec: async (file: Node) => {
location.href = generateUrl('/apps/retro/' + file.path) location.href = generateUrl(`/apps/retro/${file.path}`)
return true return true
}, },
}) })

View File

@ -11,6 +11,7 @@ const config = defineConfig({
export default createAppConfig( export default createAppConfig(
{ {
main: resolve(join('src', 'main.ts')), main: resolve(join('src', 'main.ts')),
init: resolve(join('src', 'init.ts')),
}, },
{ {
config, config,