Skip to content

feat: remember preview/edit mode per note#3203

Open
jancborchardt wants to merge 1 commit into
mainfrom
feat/per-note-mode
Open

feat: remember preview/edit mode per note#3203
jancborchardt wants to merge 1 commit into
mainfrom
feat/per-note-mode

Conversation

@jancborchardt

@jancborchardt jancborchardt commented May 27, 2026

Copy link
Copy Markdown
Member

In Nextcloud Notes for Android, currently the Preview/Edit toggle in the top right of the note detail view changes this setting for all notes. It would be nice to have the setting remembered implicitly per note.

This is nice if you have some notes which are usually more useful in view-mode, like a packlist or grocery list where you want to check off items.

Summary

  • Adds a noteMode column to the Note table (DB migration 29 → 30) to persist each note's view mode locally
  • When a user explicitly toggles Preview/Edit/Direct Edit, the selected mode is saved immediately to that note
  • Notes that have never been toggled continue to follow the global preference (Settings → Note display mode) unchanged
  • Also commits the missing 29.json schema file required for the existing @AutoMigration(from = 28, to = 29)

Resolves the existing TODO comment in EditNoteActivity.close():

TODO enhancement: store last mode in note

How it works

getPreferenceMode() now checks the note's stored noteMode first, and only falls back to the global SharedPreference if no per-note mode is set. changeMode() persists the new mode to the note immediately on toggle.

Test plan

  • Open a note → toggle to Preview → back out → re-open: should open in Preview
  • Open a different note that was never toggled: should open in the global default mode
  • Change Settings → Note display mode: notes with no per-note mode should follow the new setting; notes with a stored mode should not
  • Toggle a note to Edit → close → re-open: should open in Edit
  • Upgrade from a previous install: existing notes should open in the global default (no stored mode), new toggles are remembered

🤖 Generated with Claude Code

@jancborchardt jancborchardt added enhancement 3. to review papercut Annoying recurring UX issue with possibly simple fix. labels May 27, 2026
@jancborchardt jancborchardt moved this to 🏗️ At engineering in 🖍 Design team May 27, 2026
@jancborchardt jancborchardt self-assigned this May 27, 2026
@codacy-production

codacy-production Bot commented May 27, 2026

Copy link
Copy Markdown

Not up to standards ⛔

🔴 Issues 1 minor

Alerts:
⚠ 1 issue (≤ 0 issues of at least minor severity)

Results:
1 new issue

Category Results
Documentation 1 minor

View in Codacy

🟢 Metrics 0 complexity · 0 duplication

Metric Results
Complexity 0
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

import androidx.sqlite.db.SupportSQLiteDatabase

@Suppress("ClassName", "Detekt.ClassNaming")
class Migration_29_30 : Migration(29, 30) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto migration should be enough to add new column to the note table

final var defaultMode = getString(R.string.pref_value_mode_edit);
final var prefValueDirectEdit = getString(R.string.pref_value_mode_direct_edit);

if (noteId > 0) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use early returns

@@ -0,0 +1,756 @@
{

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like 29.json never added before @tobiasKaminsky ?

Adds a `noteMode` column to the Note table (DB version 29 → 30) to
persist each note's view mode independently. When a user explicitly
toggles Preview/Edit/DirectEdit, the new mode is saved immediately to
the note, overriding the global SharedPreferences setting for that
specific note. Notes without a stored per-note mode continue to follow
the global preference as before.

Resolves the TODO comment in EditNoteActivity.close().

AI-assisted: Claude Code (Sonnet 4.6)
Signed-off-by: Jan C. Borchardt <925062+jancborchardt@users.noreply.github.com>
@tobiasKaminsky

Copy link
Copy Markdown
Member

How will this work with?
image

As far as I can see from code side, it would always use per-note setting?
But it should only keep it if last one is selected?
Or do we wanna change this to "First opening behaviour" (and remove "remember").

Then user can select what they want to do with new notes, and all other notes remember their last behaviour?

@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

APK file: https://github.com/nextcloud/notes-android/actions/runs/28641578560/artifacts/8059004566
To test this change/fix you can simply download above APK file and install and test it in parallel to your existing Nextcloud app.
qrcode (please click on link to get QR code displayed)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3. to review enhancement papercut Annoying recurring UX issue with possibly simple fix.

Projects

Status: 🏗️ At engineering

Development

Successfully merging this pull request may close these issues.

3 participants