Migrate off the OCA.Viewer global before Nextcloud 36
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 2.2k
- Forks
- 586
- Avg merge
- 18h 27m
- Merged PRs (30d)
- 333
Description
Talk shows file previews that open in the viewer:
src/components/MessagesList/MessagesGroup/Message/MessagePart/FilePreview.vue:472:OCA.Viewer?.mimetypes?.includes(this.file.mimetype)OCA.Viewer.open(...)in the same componentsrc/components/.../FilePreview.spec.jsstubsOCA.Viewerin several tests
OCA.Viewer.mimetypes.includes(mime) becomes canView(node), which asks the registered
handlers rather than a flattened mime list, so a handler that decides on more than the mime
type is answered correctly too.
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/MessagesList/MessagesGroup/Message/MessagePart/FilePreview.vue, especially the references around line 472, then read src/components/.../FilePreview.spec.js and the @nextcloud/viewer migration README. Port the preview checks and opening behavior to the library APIs and update the OCA.Viewer test stubs; done means the relevant tests pass without relying on the global.
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
- Mostly clear
- Newbie friendliness
- 72/100