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
Copy link
Copy Markdown
Member

@jancborchardt jancborchardt commented May 27, 2026

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

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>
@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
Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 8 complexity

Metric Results
Complexity 8

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 ?

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.

2 participants