From 8ff2c819f77f323e974b006990959f4b655364c1 Mon Sep 17 00:00:00 2001 From: alperozturk Date: Tue, 5 Aug 2025 14:44:50 +0200 Subject: [PATCH 1/3] use remote id Signed-off-by: alperozturk --- .../owncloud/notes/persistence/NotesRepository.java | 4 ++++ .../it/niedermann/owncloud/notes/persistence/dao/NoteDao.java | 3 +++ 2 files changed, 7 insertions(+) diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRepository.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRepository.java index 14e3c8974..47f15caa7 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRepository.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRepository.java @@ -355,6 +355,10 @@ public Note getNoteById(long id) { return db.getNoteDao().getNoteById(id); } + public Note getNoteByRemoteId(long id) { + return db.getNoteDao().getNoteByRemoteId(id); + } + public LiveData count$(long accountId) { return db.getNoteDao().count$(accountId); } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/NoteDao.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/NoteDao.java index 6c1b48634..29500f180 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/NoteDao.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/NoteDao.java @@ -53,6 +53,9 @@ public interface NoteDao { @Query(getNoteById) Note getNoteById(long id); + @Query("SELECT * FROM NOTE WHERE remoteId = :id") + Note getNoteByRemoteId(long id); + @Query("SELECT remoteId FROM NOTE WHERE id = :id") Long getRemoteId(long id); From ceadfecb2904028769bad8cf149f5e4f9b1dd7d3 Mon Sep 17 00:00:00 2001 From: alperozturk Date: Tue, 5 Aug 2025 14:53:08 +0200 Subject: [PATCH 2/3] extract to the function Signed-off-by: alperozturk --- .../java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java index 5dce3d1e3..b0de1d939 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java @@ -6,7 +6,6 @@ */ package it.niedermann.owncloud.notes.edit; -import static java.lang.Boolean.TRUE; import static it.niedermann.owncloud.notes.edit.EditNoteActivity.ACTION_SHORTCUT; import static it.niedermann.owncloud.notes.shared.util.WidgetUtil.pendingIntentFlagCompat; From 9cef6bfae12857c384f103c37091c822692e8033 Mon Sep 17 00:00:00 2001 From: alperozturk Date: Tue, 5 Aug 2025 15:30:16 +0200 Subject: [PATCH 3/3] fix git conflict Signed-off-by: alperozturk --- .../owncloud/notes/edit/BaseNoteFragment.java | 51 +++++++++++++------ 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java index b0de1d939..946f8a24c 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java @@ -153,6 +153,10 @@ private void loadExistingNote(long noteId) { isNew = false; note = originalNote = repo.getNoteById(noteId); + if (note == null) { + Log_OC.d(TAG, "remoteNoteId will be used to get note"); + note = repo.getNoteByRemoteId(noteId); + } } private void createNewNote() { @@ -305,26 +309,43 @@ public boolean onOptionsItemSelected(MenuItem item) { shareNote(); return false; } else if (itemId == MENU_ID_PIN) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - final var context = requireContext(); - if (ShortcutManagerCompat.isRequestPinShortcutSupported(context)) { - final var pinShortcutInfo = new ShortcutInfoCompat.Builder(context, String.valueOf(note.getId())) - .setShortLabel(note.getTitle()) - .setIcon(IconCompat.createWithResource(context.getApplicationContext(), TRUE.equals(note.getFavorite()) ? R.drawable.ic_star_yellow_24dp : R.drawable.ic_star_border_grey_ccc_24dp)) - .setIntent(new Intent(getActivity(), EditNoteActivity.class).putExtra(EditNoteActivity.PARAM_NOTE_ID, note.getId()).setAction(ACTION_SHORTCUT)) - .build(); - - ShortcutManagerCompat.requestPinShortcut(context, pinShortcutInfo, PendingIntent.getBroadcast(context, 0, ShortcutManagerCompat.createShortcutResultIntent(context, pinShortcutInfo), pendingIntentFlagCompat(0)).getIntentSender()); - } else { - Log.i(TAG, "RequestPinShortcut is not supported"); - } - } - + pinNoteToHome(); return true; } return super.onOptionsItemSelected(item); } + private void pinNoteToHome() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + return; + } + + if (!ShortcutManagerCompat.isRequestPinShortcutSupported(requireContext())) { + Log.i(TAG, "RequestPinShortcut is not supported"); + return; + } + + final var iconId = note.getFavorite() ? R.drawable.ic_star_yellow_24dp : R.drawable.ic_star_border_grey_ccc_24dp; + final var icon = IconCompat.createWithResource(requireContext().getApplicationContext(), iconId); + final var intent = new Intent(getActivity(), EditNoteActivity.class) + .putExtra(EditNoteActivity.PARAM_NOTE_ID, note.getRemoteId()) + .setAction(ACTION_SHORTCUT); + final var noteId = String.valueOf(note.getRemoteId()); + + final var pinShortcutInfo = new ShortcutInfoCompat.Builder(requireContext(), noteId) + .setShortLabel(note.getTitle()) + .setIcon(icon) + .setIntent(intent) + .build(); + + final var broadcastIntent = ShortcutManagerCompat.createShortcutResultIntent(requireContext(), pinShortcutInfo); + final var intentFlag = pendingIntentFlagCompat(0); + final var intentSender = PendingIntent + .getBroadcast(requireContext(), 0, broadcastIntent, intentFlag) + .getIntentSender(); + ShortcutManagerCompat.requestPinShortcut(requireContext(), pinShortcutInfo, intentSender); + } + protected void shareNote() { if (note == null) { Log_OC.w(TAG, "Note is null in shareNote");