nextcloud / nextcloud/notes

Deleting an open note in the web UI breaks the categories pane and more

Open
#1,652 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

bug need to reproduce
Dominant language
JavaScript
Stars
738
Forks
162
Avg merge
6h 2m
Merged PRs (30d)
35

Description

Steps to reproduce

  1. Open a note in the Web UI (e.g., index.php/apps/notes/note/1234 )
  2. Delete the note
  3. Click on a category
Expected behaviour

The notes in the category should be listed

Actual behaviour

Clicking on categories doesn't change the notes listed. It may take a second or two for this to stop working, but I can reproduce it 100% of the time. The behavior of New Note also seems iffy but it's hard to describe.

Reloading the UI fixes the problem.

Server

Please complete the following information.

  • Notes app version: 4.12.3
  • Nextcloud version: 32.0.0.13
  • OS: Debian 12.11
  • Web server: apache2 2.4.62
  • PHP version: 8.2.28
  • Database: MariaDB 10.11.11

Nextcloud configuration:

"system": {
    "instanceid": "***REMOVED SENSITIVE VALUE***",
    "passwordsalt": "***REMOVED SENSITIVE VALUE***",
    "secret": "***REMOVED SENSITIVE VALUE***",
    "trusted_domains": [
        "nextcloud.example.com"
    ],
    "datadirectory": "***REMOVED SENSITIVE VALUE***",
    "dbtype": "mysql",
    "version": "32.0.0.13",
    "overwrite.cli.url": "https:\/\/nextcloud.example.com",
    "dbname": "***REMOVED SENSITIVE VALUE***",
    "dbhost": "***REMOVED SENSITIVE VALUE***",
    "dbport": "",
    "dbtableprefix": "oc_",
    "mysql.utf8mb4": true,
    "dbuser": "***REMOVED SENSITIVE VALUE***",
    "dbpassword": "***REMOVED SENSITIVE VALUE***",
    "installed": true,
    "memcache.local": "\\OC\\Memcache\\APCu",
    "memcache.distributed": "\\OC\\Memcache\\Redis",
    "redis": {
        "host": "***REMOVED SENSITIVE VALUE***",
        "port": 0,
        "dbindex": 0,
        "password": "***REMOVED SENSITIVE VALUE***",
        "timeout": 1.5
    },
    "maintenance": false,
    "maintenance_window_start": 1,
    "theme": "",
    "loglevel": 2,
    "default_phone_region": "US",
    "mail_smtpmode": "smtp",
    "mail_smtpsecure": "ssl",
    "mail_sendmailmode": "smtp",
    "memories.exiftool": "\/var\/www\/nextcloud.example.com\/apps\/memories\/bin-ext\/exiftool-amd64-glibc",
    "memories.vod.path": "\/var\/www\/nextcloud.example.com\/apps\/memories\/bin-ext\/go-vod-amd64",
    "memories.db.triggers.fcu": true
}

}

Client

Please complete the following information.

  • Browser (incl. version): Firefox 142.0 (64-bit)
  • OS: Debian forky/sid (using KDE)

Log files

nextcloud.log didn't have anything at log level WARN, I set it to DEBUG and things looked fine, I'd have to spend some time sanitizing those logs since they're very verbose. I noticed a lot of dirty table reads but that seems to be a separate issue perhaps related to my recent NC upgrade.

What caught my eye in the console log were the 412 Precondition failed errors which led me to #1538 , which while related doesn't seem to be the main problem here.

This error seems to show up more consistently:

TypeError: can't access property "length", e is undefined
a notes.js:37
getCategories notes.js:51
S NotesService.js:417
categories CategoriesList.vue:80
VueJS 3
K CategoriesList.vue:1
VueJS 13
init vue-router.esm.js:3005
init vue-router.esm.js:3004
updateRoute vue-router.esm.js:2414
transitionTo vue-router.esm.js:2263
confirmTransition vue-router.esm.js:2402
a vue-router.esm.js:2084
ke vue-router.esm.js:2095
confirmTransition vue-router.esm.js:2396
a vue-router.esm.js:2084
a vue-router.esm.js:2088
g vue-router.esm.js:2384
m vue-router.esm.js:2162
g vue-router.esm.js:2362
a vue-router.esm.js:2087
a vue-router.esm.js:2091
ke vue-router.esm.js:2095
confirmTransition vue-router.esm.js:2392
transitionTo vue-router.esm.js:2260
push vue-router.esm.js:2606
push vue-router.esm.js:3036
push vue-router.esm.js:3035
routeToNote App.vue:220
routeFirst App.vue:209
routeDefault App.vue:201
loadNotes App.vue:142
promise callbackloadNotes App.vue:135
refreshTimer App.vue:166
setTimeout handler
startRefreshTimer App.vue:164
loadNotes App.vue:158
promise callback*loadNotes App.vue:156
refreshTimer App.vue:166
vue.runtime.esm.js:3065:17

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 the deletion flow in the Web UI, then start with the TypeError locations in notes.js:37 and notes.js:51 and follow the call from NotesService.js:417 to CategoriesList.vue:80. Check the related loading flow in App.vue around loadNotes and routing, and use the category-click behavior after deletion as the completion check.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
frontend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.