nextcloud-libraries / nextcloud-libraries/nextcloud-viewer
Track apps migrating off the OCA.Viewer global
Nobody has claimed this yet.
- 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/enableSidebaroff 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(), andsetRootElement()which has no replacement - nextcloud/integration_whiteboard#58
- nextcloud/whiteboard#1329, loads its script and its initial state from a
LoadViewerlistener - nextcloud/integration_excalidraw#81, loads its script from a
LoadViewerlistener
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
componentout of the registry and
renders it itself. Handlers expose atagnamefor 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 forOCA\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 forOCA.Viewerin javascript, one for
OCA\Viewer\Event\LoadViewerin 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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