nextcloud-libraries / nextcloud-libraries/nextcloud-viewer

Track apps migrating off the OCA.Viewer global

Open
#17 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

AI assisted status: confirmed type: discussion
Dominant language
TypeScript
Stars
1
Forks
0
Avg merge
6h 19m
Merged PRs (30d)
43

Description

Every app in this organisation that calls OCA.Viewer has an issue open, since the global goes
away with nextcloud/server#63954. This is the list to tick off, plus what a wider search across
GitHub turned up.

Issues open

Registers a handler, or loads the script that does, so the file type stops opening at all
rather than losing an action:

  • nextcloud/richdocuments#6060, openWith(), public shares
  • nextcloud/text#9191, canCompare
  • nextcloud/files_pdfviewer#1572, reads list / enableSidebar off the global
  • nextcloud/officeonline#776, open() from its file actions
  • nextcloud/files_emailviewer#133, looks the pdf handler up by id and openWith('pdf')
  • nextcloud/files_mindmap#353, openWith(), and setRootElement() which has no replacement
  • nextcloud/integration_whiteboard#58
  • nextcloud/whiteboard#1329, loads its script and its initial state from a LoadViewer listener
  • nextcloud/integration_excalidraw#81, loads its script from a LoadViewer listener

Opens the viewer, or asks whether a file can be viewed:

  • nextcloud/photos#3853, open() from nine views
  • nextcloud/collectives#2766, availableHandlers, open(), compare()
  • nextcloud/spreed#19349, mimetypes, open()
  • nextcloud/deck#8358, availableHandlers, open()
  • nextcloud/mail#13662, mimetypes, open()
  • nextcloud/tables#2991, open() with a hand-built list
  • nextcloud/maps#1673, open({ path, list }) from three components
  • nextcloud/assistant#648, open() from two media fields
  • nextcloud/activity#2917, mimetypes, open()
  • nextcloud/bookmarks#2536, open()
  • nextcloud/recommendations#1174, mimetypes, open()

Only dispatches the PHP event, guarded, so nothing breaks and it is dead code to remove:

  • nextcloud/notes#2026

Needs more than a port:

  • nextcloud/talk-desktop#1899, pulls a handler's Vue component out of the registry and
    renders it itself. Handlers expose a tagname for a custom element now, so there is no
    component to take.

[!NOTE]
None of these gate nextcloud/server#63954. The 36 development cycle is just starting and
breaking changes land gradually, so this is a list to work through during the cycle rather
than a set of merge blockers.

The nine in the first group are still the ones worth doing first, since their file types stop
opening rather than losing an action, and two of them fail silently: whiteboard and
integration_excalidraw hang everything off a listener for OCA\Viewer\Event\LoadViewer,
which stops existing, so the listener never fires and nothing is logged.

[!NOTE]
One thing surfaced while writing these up that the library has no answer for:
setRootElement(), which files_mindmap uses to mount the viewer inside the public share
layout. The viewer mounts its own container on the body and cannot be asked to mount
elsewhere.

Outside the organisation

Listed for the record, no issues opened there. Most are app store apps and several exist only to add a
file view, so the handler API change hits them hardest.

Registers a handler:

App Where
ONLYOFFICE/onlyoffice-nextcloud src/viewer.js
Euro-Office/eurooffice-nextcloud src/viewer.js
otetard/ownpad src/viewer.js
ether/etherpad-integration-for-nextcloud src/viewer-main.js, src/files/pad-opener.js
ayselafsar/dicomviewer src/main.js
elbandi/nextcloud-pannellum src/main.js
v1r0x/files_3d src/main.js
maz1987in/3Dviewer-Nextcloud src/main.js, src/loaders/types/viewer-api.js
ashcoft/nextcloud-cad-viewer src/main.ts
devnoname120/nextcloud-htmlviewer src/main.js
devnoname120/nextcloud-file-viewer tests assert handler order
reactivepad/nextcloud-text2 src/files.js
kinakomochi-0315/nextcloud-vrm-viewer src/viewer/registerVrmFileAction.ts
WARP-LAB/files_3dmodelviewer lib/Listener/LoadViewerListener.php
Yetangitu/files_reader lib/AppInfo/Application.php
devnoname120/epubviewer lib/Listener/LoadViewerListener.php
ariselseng/camerarawpreviews lib/AppInfo/Application.php
pawelrojek/nextcloud-drawio drawio/controller/viewercontroller.php

Opens the viewer or tests mime support:

App Where
LibreSign/libresign src/utils/viewer.js
matiasdelellis/facerecognition src/personal.js
eldertek/duplicatefinder src/tools/utils.js
Raudius/files_scripts src/views/ScriptSelect.vue
marcbenedi/mediadc three components under src/components/
cpcMomentum/contractmanager src/components/ContractForm.vue, ContractListItem.vue
37Rb/nextcloud-hledger src/App.vue
AndiMb/nc_vereinsbuchhaltung src/App.vue
jospoortvliet/reel lib/Controller/ApiController.php
skjnldsvOrg/office_switcher src/actionUtils.ts

[!NOTE]
Two searches were needed to find all of this: one for OCA.Viewer in javascript, one for
OCA\Viewer\Event\LoadViewer in PHP. They return different sets, and four repositories in
this organisation only showed up in the second.

This is still a floor, not a census. GitHub code search caps each query at 100 results and only
indexes default branches of public repositories, so anything on a non-default branch, in a
private repository, or beyond the cap is missing. Forks of server and of the apps above,
personal sandboxes and demo images were filtered out; a handful of ambiguous ones may have
gone with them.

Getting the word out

Filing on twenty-odd third party trackers is not the way to do this. A release note and a
developer blog or forum post, pointing at the
migration table,
reaches them better and does not put an unsolicited issue on a one person project.

👾 This issue was written with the help of Claude Code.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the migration table in the nextcloud-viewer repository and the unchecked app entries in this issue. Review the listed OCA.Viewer or LoadViewer usages, then update the relevant migration tracking and outreach information. Done means the affected apps are accounted for and the migration guidance reaches developers without opening unsolicited third-party issues.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, php, typescript
Domain
developer-experience, documentation
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.