nextcloud / nextcloud/assistant
Migrate off the OCA.Viewer global before Nextcloud 36
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 88
- Forks
- 43
- Avg merge
- 18h 49m
- Merged PRs (30d)
- 3
Description
The assistant opens generated media in the viewer:
src/components/fields/MediaField.vue:315:OCA.Viewer.open({ path: savedPath })src/components/fields/ListOfMediaField.vue:338:OCA.Viewer.open({ path: savedPath })
There is no path based entry point any more. Either hand openFolder(folder, file) a folder and
let it fetch, or build the node for the saved file and call open([node], node).
OCA.Viewer is gone in Viewer 7.0.0. The viewer ships as the
@nextcloud/viewer library rather than a
bundled app, and nextcloud/server#63954 removes the viewer app from Nextcloud 36 altogether.
Roughly what it looks like:
import { canView, getViewer } from '@nextcloud/viewer'
// OCA.Viewer.open({ path }) / ({ fileInfo, list })
getViewer().open(nodes, file) // @nextcloud/files nodes
getViewer().openFolder(folder, file) // when a path is all you have, let it fetch
// OCA.Viewer.mimetypes.includes(mime) / availableHandlers
canView(node)
The part that is not a rename is that the viewer takes @nextcloud/files nodes now, not
fileinfo objects or path strings. Importing the package is also all it takes to get the viewer
onto the page: no LoadViewer event to dispatch, and nothing to check about whether the app is
enabled.
[!IMPORTANT]
There is no compatibility shim, which was a deliberate call, so this is a real port rather
than a rename. Nothing breaks until the server PR lands; after that these calls throw on
Nextcloud 36.
[!TIP]
The developer manual covers the migration under
Critical changes
(being added in nextcloud/documentation#15597), and the
README
has the full before/after table. Happy to help with the port, just ping me.
👾 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 src/components/fields/MediaField.vue:315 and src/components/fields/ListOfMediaField.vue:338, then read the @nextcloud/viewer migration guidance and its node APIs. Port both saved-media openings from OCA.Viewer to getViewer(), choosing openFolder or open with @nextcloud/files nodes as appropriate. Done means both fields work without OCA.Viewer or LoadViewer and remain compatible with Nextcloud 36.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- frontend
- Issue type
- Refactor
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 72/100