Skip to content

Commit b79f031

Browse files
committed
Moved some code to event driven architecture. This also fixes #940
1 parent 9bb2a96 commit b79f031

File tree

5 files changed

+45
-76
lines changed

5 files changed

+45
-76
lines changed

omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java

+23-30
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,6 @@
154154
import it.feio.android.omninotes.models.adapters.PlacesAutoCompleteAdapter;
155155
import it.feio.android.omninotes.models.listeners.OnAttachingFileListener;
156156
import it.feio.android.omninotes.models.listeners.OnGeoUtilResultListener;
157-
import it.feio.android.omninotes.models.listeners.OnNoteSaved;
158157
import it.feio.android.omninotes.models.listeners.OnReminderPickedListener;
159158
import it.feio.android.omninotes.models.listeners.RecyclerViewItemClickSupport;
160159
import it.feio.android.omninotes.models.views.ExpandableHeightGridView;
@@ -183,7 +182,6 @@
183182
import java.util.ArrayList;
184183
import java.util.Arrays;
185184
import java.util.Calendar;
186-
import java.util.Collections;
187185
import java.util.Date;
188186
import java.util.List;
189187
import org.apache.commons.collections4.CollectionUtils;
@@ -192,7 +190,7 @@
192190

193191
public class DetailFragment extends BaseFragment implements OnReminderPickedListener,
194192
OnTouchListener,
195-
OnAttachingFileListener, TextWatcher, CheckListChangedListener, OnNoteSaved,
193+
OnAttachingFileListener, TextWatcher, CheckListChangedListener,
196194
OnGeoUtilResultListener {
197195

198196
private static final int TAKE_PHOTO = 1;
@@ -383,7 +381,7 @@ public void onPause() {
383381

384382
// Checks "goBack" value to avoid performing a double saving
385383
if (!goBack) {
386-
saveNote(this);
384+
saveNote();
387385
}
388386

389387
if (toggleChecklistView != null) {
@@ -1136,7 +1134,7 @@ private void showNoteInfo() {
11361134

11371135
private void navigateUp() {
11381136
afterSavedReturnsToList = true;
1139-
saveAndExit(this);
1137+
saveAndExit();
11401138
}
11411139

11421140
private void toggleChecklist() {
@@ -1480,8 +1478,7 @@ private void discard() {
14801478
}
14811479

14821480
if (noteOriginal.get_id() != null) {
1483-
new SaveNoteTask(mFragment, false)
1484-
.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, noteOriginal);
1481+
new SaveNoteTask(false).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, noteOriginal);
14851482
BaseActivity.notifyAppWidgets(mainActivity);
14861483
} else {
14871484
goHome();
@@ -1501,7 +1498,7 @@ private void archiveNote(boolean archive) {
15011498
goBack = true;
15021499
exitMessage = archive ? getString(R.string.note_archived) : getString(R.string.note_unarchived);
15031500
exitCroutonStyle = archive ? ONStyle.WARN : ONStyle.INFO;
1504-
saveNote(this);
1501+
saveNote();
15051502
}
15061503

15071504
@SuppressLint("NewApi")
@@ -1522,7 +1519,7 @@ private void trashNote(boolean trash) {
15221519
} else {
15231520
ReminderHelper.addReminder(getAppContext(), note);
15241521
}
1525-
saveNote(this);
1522+
saveNote();
15261523
}
15271524

15281525
private void deleteNote() {
@@ -1537,21 +1534,19 @@ private void deleteNote() {
15371534
}).build().show();
15381535
}
15391536

1540-
public void saveAndExit(OnNoteSaved mOnNoteSaved) {
1537+
public void saveAndExit() {
15411538
if (isAdded()) {
15421539
exitMessage = getString(R.string.note_updated);
15431540
exitCroutonStyle = ONStyle.CONFIRM;
15441541
goBack = true;
1545-
saveNote(mOnNoteSaved);
1542+
saveNote();
15461543
}
15471544
}
15481545

15491546
/**
15501547
* Save new notes, modify them or archive
15511548
*/
1552-
void saveNote(OnNoteSaved mOnNoteSaved) {
1553-
1554-
// Changed fields
1549+
void saveNote() {
15551550
noteTmp.setTitle(getNoteTitle());
15561551
noteTmp.setContent(getNoteContent());
15571552

@@ -1575,7 +1570,7 @@ void saveNote(OnNoteSaved mOnNoteSaved) {
15751570

15761571
noteTmp.setAttachmentsListOld(note.getAttachmentsList());
15771572

1578-
new SaveNoteTask(mOnNoteSaved, lastModificationUpdatedNeeded()).executeOnExecutor(AsyncTask
1573+
new SaveNoteTask(lastModificationUpdatedNeeded()).executeOnExecutor(AsyncTask
15791574
.THREAD_POOL_EXECUTOR, noteTmp);
15801575
}
15811576

@@ -1602,21 +1597,6 @@ private boolean lastModificationUpdatedNeeded() {
16021597
return noteTmp.isChanged(note);
16031598
}
16041599

1605-
@Override
1606-
public void onNoteSaved(Note noteSaved) {
1607-
if (!activityPausing) {
1608-
EventBus.getDefault().post(new NotesUpdatedEvent(Collections.singletonList(noteSaved)));
1609-
deleteMergedNotes(mergedNotesIds);
1610-
if (noteTmp.getAlarm() != null && !noteTmp.getAlarm().equals(note.getAlarm())) {
1611-
ReminderHelper.showReminderMessage(String.valueOf(noteTmp.getAlarm()));
1612-
}
1613-
}
1614-
note = new Note(noteSaved);
1615-
if (goBack) {
1616-
goHome();
1617-
}
1618-
}
1619-
16201600
private void deleteMergedNotes(List<String> mergedNotesIds) {
16211601
ArrayList<Note> notesToDelete = new ArrayList<>();
16221602
if (mergedNotesIds != null) {
@@ -2190,6 +2170,19 @@ public void onEventMainThread(PushbulletReplyEvent pushbulletReplyEvent) {
21902170
binding.fragmentDetailContent.detailContent.setText(text);
21912171
}
21922172

2173+
public void onEvent(NotesUpdatedEvent event) {
2174+
if (!activityPausing) {
2175+
deleteMergedNotes(mergedNotesIds);
2176+
if (noteTmp.getAlarm() != null && !noteTmp.getAlarm().equals(note.getAlarm())) {
2177+
ReminderHelper.showReminderMessage(String.valueOf(noteTmp.getAlarm()));
2178+
}
2179+
}
2180+
note = new Note(event.getNotes().get(0));
2181+
if (goBack) {
2182+
goHome();
2183+
}
2184+
}
2185+
21932186
private static class OnGeoUtilResultListenerImpl implements OnGeoUtilResultListener {
21942187

21952188
private final WeakReference<MainActivity> mainActivityWeakReference;

omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java

+14
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
import it.feio.android.omninotes.async.bus.NavigationUpdatedNavDrawerClosedEvent;
9191
import it.feio.android.omninotes.async.bus.NotesLoadedEvent;
9292
import it.feio.android.omninotes.async.bus.NotesMergeEvent;
93+
import it.feio.android.omninotes.async.bus.NotesUpdatedEvent;
9394
import it.feio.android.omninotes.async.bus.PasswordRemovedEvent;
9495
import it.feio.android.omninotes.async.notes.NoteLoaderTask;
9596
import it.feio.android.omninotes.async.notes.NoteProcessorArchive;
@@ -126,10 +127,13 @@
126127
import java.util.HashMap;
127128
import java.util.List;
128129
import java.util.Map;
130+
import java.util.Optional;
129131
import java.util.SortedMap;
130132
import java.util.TreeMap;
131133
import org.apache.commons.collections4.CollectionUtils;
132134
import org.apache.commons.lang3.ObjectUtils;
135+
import rx.Observable;
136+
import rx.functions.Action1;
133137

134138

135139
public class ListFragment extends BaseFragment implements OnViewTouchedListener,
@@ -1189,6 +1193,16 @@ public void onEvent(NotesLoadedEvent notesLoadedEvent) {
11891193
closeFab();
11901194
}
11911195

1196+
public void onEvent(NotesUpdatedEvent notesUpdatedEvent) {
1197+
Observable.range(0, listAdapter.getNotes().size() - 1).forEach(i ->
1198+
Observable.from(notesUpdatedEvent.getNotes())
1199+
.filter(n -> n.get_id().equals(listAdapter.getNotes().get(i).get_id()))
1200+
.forEach(note -> {
1201+
listAdapter.getNotes().add(i, note);
1202+
listAdapter.notifyItemChanged(i);
1203+
}));
1204+
}
1205+
11921206
private void initSwipeGesture() {
11931207
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0,
11941208
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {

omniNotes/src/main/java/it/feio/android/omninotes/MainActivity.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,6 @@ private Fragment checkFragmentInstance(int id, Object instanceClass) {
295295

296296
@Override
297297
public void onBackPressed() {
298-
299298
// SketchFragment
300299
Fragment f = checkFragmentInstance(R.id.fragment_container, SketchFragment.class);
301300
if (f != null) {
@@ -312,8 +311,9 @@ public void onBackPressed() {
312311
// DetailFragment
313312
f = checkFragmentInstance(R.id.fragment_container, DetailFragment.class);
314313
if (f != null) {
315-
((DetailFragment) f).goBack = true;
316-
((DetailFragment) f).saveAndExit((DetailFragment) f);
314+
var detailDragment = (DetailFragment) f;
315+
detailDragment.goBack = true;
316+
detailDragment.saveAndExit();
317317
return;
318318
}
319319

omniNotes/src/main/java/it/feio/android/omninotes/async/notes/SaveNoteTask.java

+5-17
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@
1919

2020
import android.content.Context;
2121
import android.os.AsyncTask;
22+
import de.greenrobot.event.EventBus;
2223
import it.feio.android.omninotes.OmniNotes;
24+
import it.feio.android.omninotes.async.bus.NotesUpdatedEvent;
2325
import it.feio.android.omninotes.db.DbHelper;
2426
import it.feio.android.omninotes.helpers.LogDelegate;
2527
import it.feio.android.omninotes.models.Attachment;
2628
import it.feio.android.omninotes.models.Note;
27-
import it.feio.android.omninotes.models.listeners.OnNoteSaved;
2829
import it.feio.android.omninotes.utils.ReminderHelper;
2930
import it.feio.android.omninotes.utils.StorageHelper;
3031
import it.feio.android.omninotes.utils.date.DateUtils;
@@ -35,22 +36,13 @@ public class SaveNoteTask extends AsyncTask<Note, Void, Note> {
3536

3637
private Context context;
3738
private boolean updateLastModification = true;
38-
private OnNoteSaved mOnNoteSaved;
39-
4039

4140
public SaveNoteTask(boolean updateLastModification) {
42-
this(null, updateLastModification);
43-
}
44-
45-
46-
public SaveNoteTask(OnNoteSaved mOnNoteSaved, boolean updateLastModification) {
4741
super();
4842
this.context = OmniNotes.getAppContext();
49-
this.mOnNoteSaved = mOnNoteSaved;
5043
this.updateLastModification = updateLastModification;
5144
}
5245

53-
5446
@Override
5547
protected Note doInBackground(Note... params) {
5648
Note note = params[0];
@@ -66,13 +58,12 @@ protected Note doInBackground(Note... params) {
6658
return note;
6759
}
6860

69-
7061
private void purgeRemovedAttachments(Note note) {
7162
List<Attachment> deletedAttachments = note.getAttachmentsListOld();
7263
for (Attachment attachment : note.getAttachmentsList()) {
7364
if (attachment.getId() != null) {
7465
// Workaround to prevent deleting attachments if instance is changed (app restart)
75-
if (deletedAttachments.indexOf(attachment) == -1) {
66+
if (!deletedAttachments.contains(attachment)) {
7667
attachment = getFixedAttachmentInstance(deletedAttachments, attachment);
7768
}
7869
deletedAttachments.remove(attachment);
@@ -85,7 +76,6 @@ private void purgeRemovedAttachments(Note note) {
8576
}
8677
}
8778

88-
8979
private Attachment getFixedAttachmentInstance(List<Attachment> deletedAttachments,
9080
Attachment attachment) {
9181
for (Attachment deletedAttachment : deletedAttachments) {
@@ -96,12 +86,10 @@ private Attachment getFixedAttachmentInstance(List<Attachment> deletedAttachment
9686
return attachment;
9787
}
9888

99-
10089
@Override
10190
protected void onPostExecute(Note note) {
10291
super.onPostExecute(note);
103-
if (this.mOnNoteSaved != null) {
104-
mOnNoteSaved.onNoteSaved(note);
105-
}
92+
EventBus.getDefault().post(new NotesUpdatedEvent(List.of(note)));
10693
}
94+
10795
}

omniNotes/src/main/java/it/feio/android/omninotes/models/listeners/OnNoteSaved.java

-26
This file was deleted.

0 commit comments

Comments
 (0)