nextcloud / nextcloud/richdocuments
Regression: not possible to compare document or insert media file
Open
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 453
- Forks
- 147
- Avg merge
- 14h 54m
- Merged PRs (30d)
- 83
Description
Steps:
- Open an impress file
- Select: Insert > Media > Audio or Video
- Open a text document
- Review tab
- Compare document...
Result:
| Field | OK | NOK |
|---|---|---|
| Version | 26.04.2.1 (git hash: 9e3f2cd622) | 26.04.2.1 (git hash: 9e3f2cd622) |
| Served by | Debian GNU/Linux 13 (trixie) | Debian GNU/Linux 13 (trixie) |
| Server ID | 437EB896 | CEB6A0F8 |
| WOPI host | nextcloud 32.0.12.1 — richdocuments 9.1.0 | nextcloud 33.0.6.2 — richdocuments 10.2.0 |
Logs
Interesting to see
[viewer] Received post message UI_InsertFile {callback: 'Action_CompareDocuments', mimeTypeFilter: Array(4)} false
global.js:818 IdleHandler: _deactivate()
global.js:818 IdleHandler: _activate()
dav.ts:84 SyntaxError: "undefined" is not valid JSON
at JSON.parse (<anonymous>)
at Object.<anonymous> (FilesAppIntegration.js:178:41)
at FilePicker.vue:276:43
at Array.filter (<anonymous>)
at o.<anonymous> (FilePicker.vue:276:23)
at e.get (vue.runtime.esm.js:3462:33)
at e.evaluate (vue.runtime.esm.js:3563:27)
at get value (vue.runtime.esm.js:1401:29)
at Object.get [as filteredFiles] (vue.runtime.esm.js:1214:28)
at o.je (FilePicker.vue:320:2)
in
global.js:818 CSC: set inRedrawCallback = true
global.js:818 CSC: set inRedrawCallback = false
global.js:818 1783432875121 OUTGOING: mouse type=move x=11405 y=807 count=1 buttons=0 modifier=0
global.js:818 1783432875127 INCOMING: mousepointer: text
global.js:818 IdleHandler: _activate()
global.js:818 JSDialog: full dialog "review-compare-dropdown"
global.js:818 JSDialog: put items inside container for "review-compare-dropdown"
global.js:818 Dropdown: potential unhandled action: "selected"
global.js:818 JSDialog: close "review-compare-dropdown"
Office.vue:404 [viewer] Received post message UI_InsertFile {callback: 'Action_CompareDocuments', mimeTypeFilter: Array(4)} false
global.js:818 IdleHandler: _deactivate()
global.js:818 IdleHandler: _activate()
dav.ts:84 SyntaxError: "undefined" is not valid JSON
at JSON.parse (<anonymous>)
at Object.<anonymous> (FilesAppIntegration.js:178:41)
at FilePicker.vue:276:43
at Array.filter (<anonymous>)
at o.<anonymous> (FilePicker.vue:276:23)
at e.get (vue.runtime.esm.js:3462:33)
at e.evaluate (vue.runtime.esm.js:3563:27)
at get value (vue.runtime.esm.js:1401:29)
at Object.get [as filteredFiles] (vue.runtime.esm.js:1214:28)
at o.je (FilePicker.vue:320:2)
logError @ vue.runtime.esm.js:3065
globalHandleError @ vue.runtime.esm.js:3057
handleError @ vue.runtime.esm.js:3024
(anonymous) @ vue.runtime.esm.js:2703
(anonymous) @ vue.runtime.esm.js:3891
(anonymous) @ vue.runtime.esm.js:3462
(anonymous) @ vue.runtime.esm.js:3538
flushSchedulerQueue @ vue.runtime.esm.js:4141
(anonymous) @ vue.runtime.esm.js:3159
flushCallbacks @ vue.runtime.esm.js:3081
Promise.then
(anonymous) @ vue.runtime.esm.js:3106
nextTick @ vue.runtime.esm.js:3171
queueWatcher @ vue.runtime.esm.js:4227
(anonymous) @ vue.runtime.esm.js:3529
(anonymous) @ vue.runtime.esm.js:732
set @ vue.runtime.esm.js:976
loadDAVFiles @ dav.ts:84
await in loadDAVFiles
(anonymous) @ FilePicker.vue:254
invokeWithErrorHandling @ vue.runtime.esm.js:3033
callHook$1 @ vue.runtime.esm.js:4048
insert @ vue.runtime.esm.js:4443
invokeInsertHook @ vue.runtime.esm.js:6966
(anonymous) @ vue.runtime.esm.js:7180
(anonymous) @ vue.runtime.esm.js:3781
(anonymous) @ vue.runtime.esm.js:3891
(anonymous) @ vue.runtime.esm.js:3462
Watcher @ vue.runtime.esm.js:3452
(anonymous) @ vue.runtime.esm.js:3908
(anonymous) @ vue.runtime.esm.js:8797
(anonymous) @ vue.runtime.esm.js:5724
Vue @ vue.runtime.esm.js:5785
spawnDialog @ dialog.mjs:14
(anonymous) @ filepicker-builder.ts:77
pickNodes @ filepicker-builder.ts:76
await in pickNodes
pick @ filepicker-builder.ts:105
insertFile_impl @ FilesAppIntegration.js:191
insertFile @ FilesAppIntegration.js:201
postMessageHandler @ Office.vue:492
(anonymous) @ postMessage.tsx:74
(anonymous) @ postMessage.tsx:68
(anonymous) @ postMessage.tsx:12
postMessage
_postMessage @ Map.WOPI.js:1160
fire @ Events.ts:280
fire @ Events.js:25
(anonymous) @ docdispatcher.ts:161
dispatch @ docdispatcher.ts:1274
(anonymous) @ Widget.MenuButton.js:114
(anonymous) @ Util.Dropdown.ts:298
(anonymous) @ Widget.Combobox.js:85
global.js:818 IdleHandler: _deactivate()
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
Reproduce both Insert > Media and Review > Compare document flows, then start at FilesAppIntegration.js:178 and dav.ts:84, where the undefined JSON.parse error is reported. Trace the file-picker data through FilePicker.vue:276 and filepicker-builder.ts; done means both dialogs open and allow the expected file selection without the parsing error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- frontend, web-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100