Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-notes.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-04-08 14:00:04 +0300
committerStefan Niedermann <info@niedermann.it>2021-04-08 14:00:04 +0300
commitff2bc1f288b0c10a882c7f40ebe3a2c435ef4684 (patch)
treedcf6fcaa91140e9f71f1e9a9d461fd2e4dab7c9b /app/src/main/java
parent096b1ae7bceb47842241a304143bec684863cbfb (diff)
Fix bulk sharing from list view
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java2
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java43
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/MultiSelectedActionModeCallback.java28
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NotesListViewItemTouchHelper.java2
4 files changed, 36 insertions, 39 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java
index a827ab50..fc4b8fc6 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java
@@ -37,7 +37,7 @@ public class AppendToNoteActivity extends MainActivity {
@Override
public void onNoteClick(int position, View v) {
if (!TextUtils.isEmpty(receivedText)) {
- final LiveData<Note> fullNote$ = mainViewModel.getFullNote(((Note) adapter.getItem(position)).getId());
+ final LiveData<Note> fullNote$ = mainViewModel.getFullNote$(((Note) adapter.getItem(position)).getId());
fullNote$.observe(this, (fullNote) -> {
fullNote$.removeObservers(this);
final String oldContent = fullNote.getContent();
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java b/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java
index 5c4eb470..4259d7f0 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java
@@ -528,10 +528,15 @@ public class MainViewModel extends AndroidViewModel {
return db.addAccount(url, username, accountName, capabilities);
}
- public LiveData<Note> getFullNote(long id) {
+ public LiveData<Note> getFullNote$(long id) {
return map(getFullNotesWithCategory(Collections.singleton(id)), input -> input.get(0));
}
+ @WorkerThread
+ public Note getFullNote(long id) {
+ return db.getNoteDao().getNoteById(id);
+ }
+
public LiveData<List<Note>> getFullNotesWithCategory(@NonNull Collection<Long> ids) {
return switchMap(getCurrentAccount(), currentAccount -> {
if (currentAccount == null) {
@@ -579,27 +584,19 @@ public class MainViewModel extends AndroidViewModel {
return db.getAccountDao().countAccounts$();
}
- public LiveData<String> collectNoteContents(List<Long> noteIds) {
- return switchMap(getCurrentAccount(), currentAccount -> {
- if (currentAccount != null) {
- Log.v(TAG, "[collectNoteContents] - currentAccount: " + currentAccount.getAccountName());
- final MutableLiveData<String> collectedContent$ = new MutableLiveData<>();
- new Thread(() -> {
- final StringBuilder noteContents = new StringBuilder();
- for (Long noteId : noteIds) {
- final Note fullNote = db.getNoteDao().getNoteById(noteId);
- final String tempFullNote = fullNote.getContent();
- if (!TextUtils.isEmpty(tempFullNote)) {
- if (noteContents.length() > 0) {
- noteContents.append("\n\n");
- }
- noteContents.append(tempFullNote);
- }
- }
- }).start();
- return collectedContent$;
+ @WorkerThread
+ public String collectNoteContents(@NonNull List<Long> noteIds) {
+ final StringBuilder noteContents = new StringBuilder();
+ for (Long noteId : noteIds) {
+ final Note fullNote = db.getNoteDao().getNoteById(noteId);
+ final String tempFullNote = fullNote.getContent();
+ if (!TextUtils.isEmpty(tempFullNote)) {
+ if (noteContents.length() > 0) {
+ noteContents.append("\n\n");
+ }
+ noteContents.append(tempFullNote);
}
- return new MutableLiveData<>(null);
- });
+ }
+ return noteContents.toString();
}
-}
+} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/MultiSelectedActionModeCallback.java b/app/src/main/java/it/niedermann/owncloud/notes/main/MultiSelectedActionModeCallback.java
index c2f45722..fa9bb879 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/main/MultiSelectedActionModeCallback.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/main/MultiSelectedActionModeCallback.java
@@ -94,7 +94,7 @@ public class MultiSelectedActionModeCallback implements Callback {
int itemId = item.getItemId();
if (itemId == R.id.menu_delete) {
final List<Long> selection = new ArrayList<>(tracker.getSelection().size());
- for(Long sel : tracker.getSelection()) {
+ for (Long sel : tracker.getSelection()) {
selection.add(sel);
}
final LiveData<List<Note>> fullNotes$ = mainViewModel.getFullNotesWithCategory(selection);
@@ -134,21 +134,21 @@ public class MultiSelectedActionModeCallback implements Callback {
return true;
} else if (itemId == R.id.menu_share) {
final List<Long> selection = new ArrayList<>(tracker.getSelection().size());
- for(Long sel : tracker.getSelection()) {
+ for (Long sel : tracker.getSelection()) {
selection.add(sel);
}
- // FIXME use title if only one
- final String subject = context.getResources().getQuantityString(R.plurals.share_multiple, selection.size(), selection.size());
-// final String subject = (selection.size() == 1)
-// ? ((Note) adapter.getItem(adapter.getSelected().get(0))).getTitle()
-// : context.getResources().getQuantityString(R.plurals.share_multiple, adapter.getSelected().size(), adapter.getSelected().size());
+ tracker.clearSelection();
- final LiveData<String> contentCollector = mainViewModel.collectNoteContents(selection);
- contentCollector.observe(lifecycleOwner, (next) -> {
- contentCollector.removeObservers(lifecycleOwner);
- ShareUtil.openShareDialog(context, subject, next);
- tracker.clearSelection();
- });
+ new Thread(() -> {
+ if (selection.size() == 1) {
+ final Note note = mainViewModel.getFullNote(selection.get(0));
+ ShareUtil.openShareDialog(context, note.getTitle(), note.getContent());
+ } else {
+ ShareUtil.openShareDialog(context,
+ context.getResources().getQuantityString(R.plurals.share_multiple, selection.size(), selection.size()),
+ mainViewModel.collectNoteContents(selection));
+ }
+ }).start();
return true;
} else if (itemId == R.id.menu_category) {// TODO detect whether all selected notes do have the same category - in this case preselect it
final LiveData<Account> accountLiveData = mainViewModel.getCurrentAccount();
@@ -165,7 +165,7 @@ public class MultiSelectedActionModeCallback implements Callback {
@Override
public void onDestroyActionMode(ActionMode mode) {
- if(mode != null) {
+ if (mode != null) {
mode.finish();
}
tracker.clearSelection();
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NotesListViewItemTouchHelper.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NotesListViewItemTouchHelper.java
index 19a7b74d..5730aecf 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NotesListViewItemTouchHelper.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NotesListViewItemTouchHelper.java
@@ -73,7 +73,7 @@ public class NotesListViewItemTouchHelper extends ItemTouchHelper {
case ItemTouchHelper.LEFT:
viewHolder.setIsRecyclable(false);
final Note dbNoteWithoutContent = (Note) adapter.getItem(viewHolder.getLayoutPosition());
- final LiveData<Note> dbNoteLiveData = mainViewModel.getFullNote(dbNoteWithoutContent.getId());
+ final LiveData<Note> dbNoteLiveData = mainViewModel.getFullNote$(dbNoteWithoutContent.getId());
dbNoteLiveData.observe(lifecycleOwner, (dbNote) -> {
dbNoteLiveData.removeObservers(lifecycleOwner);
tracker.deselect(dbNote.getId());