nextcloud / nextcloud/richdocuments

Regression: not possible to compare document or insert media file

Open
#5,833 1 comment 2 reactions 0 assignees View on GitHub

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
Image
  • Open a text document
  • Review tab
  • Compare document...
Image

Result:

Image
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

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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.