From 399cf2a65487358d6497bf09b1d409b37cac5636 Mon Sep 17 00:00:00 2001 From: houxg Date: Tue, 21 Feb 2017 16:13:35 +0800 Subject: [PATCH] code refactoring --- .../houxg/leamonax/service/NoteService.java | 41 ++++++++----------- .../org/houxg/leamonax/ui/NoteFragment.java | 14 ++++++- .../org/houxg/leamonax/ui/SearchActivity.java | 14 ++++++- 3 files changed, 40 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/org/houxg/leamonax/service/NoteService.java b/app/src/main/java/org/houxg/leamonax/service/NoteService.java index 400d085..0a58596 100644 --- a/app/src/main/java/org/houxg/leamonax/service/NoteService.java +++ b/app/src/main/java/org/houxg/leamonax/service/NoteService.java @@ -388,33 +388,24 @@ public class NoteService { return localIds; } - //TODO:change to synchonous - public static Observable deleteNote(final Note note) { - return Observable.create( - new Observable.OnSubscribe() { - @Override - public void call(Subscriber subscriber) { - if (!subscriber.isUnsubscribed()) { - if (TextUtils.isEmpty(note.getNoteId())) { - AppDataBase.deleteNoteByLocalId(note.getId()); - } else { - UpdateRe response = RetrofitUtils.excuteWithException( - ApiProvider.getInstance().getNoteApi().delete(note.getNoteId(), note.getUsn())); - if (response.isOk()) { - AppDataBase.deleteNoteByLocalId(note.getId()); - updateNoteUsnIfNeed(response.getUsn()); - } else { - throw new IllegalStateException(response.getMsg()); - } - } - subscriber.onNext(note); - subscriber.onCompleted(); - } - } - }); + public static void deleteNote(Note note) { + if (note.isLocalNote()) { + AppDataBase.deleteNoteByLocalId(note.getId()); + } else { + Call call = ApiProvider.getInstance().getNoteApi().delete(note.getNoteId(), note.getUsn()); + UpdateRe response = RetrofitUtils.excuteWithException(call); + if (response.isOk()) { + AppDataBase.deleteNoteByLocalId(note.getId()); + updateNoteUsnIfNeed(response.getUsn()); + } else { + throw new IllegalStateException(response.getMsg()); + } + } } - //TODO:delete this method + /** + * if new usn equals to (current usn + 1), then just simply update usn without syncing. + */ private static void updateNoteUsnIfNeed(int newUsn) { Account account = AccountService.getCurrent(); if (newUsn - account.getNoteUsn() == 1) { diff --git a/app/src/main/java/org/houxg/leamonax/ui/NoteFragment.java b/app/src/main/java/org/houxg/leamonax/ui/NoteFragment.java index 53d5ccc..520420c 100644 --- a/app/src/main/java/org/houxg/leamonax/ui/NoteFragment.java +++ b/app/src/main/java/org/houxg/leamonax/ui/NoteFragment.java @@ -46,6 +46,7 @@ import butterknife.BindView; import butterknife.ButterKnife; import rx.Observable; import rx.Observer; +import rx.Subscriber; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Func1; import rx.schedulers.Schedulers; @@ -155,8 +156,17 @@ public class NoteFragment extends Fragment implements NoteAdapter.NoteAdapterLis Observable.from(notes) .flatMap(new Func1>() { @Override - public rx.Observable call(Note note) { - return NoteService.deleteNote(note); + public rx.Observable call(final Note note) { + return Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + if (!subscriber.isUnsubscribed()) { + NoteService.deleteNote(note); + subscriber.onNext(note); + subscriber.onCompleted(); + } + } + }); } }) .subscribeOn(Schedulers.io()) diff --git a/app/src/main/java/org/houxg/leamonax/ui/SearchActivity.java b/app/src/main/java/org/houxg/leamonax/ui/SearchActivity.java index 91d9ae1..2bb60ae 100644 --- a/app/src/main/java/org/houxg/leamonax/ui/SearchActivity.java +++ b/app/src/main/java/org/houxg/leamonax/ui/SearchActivity.java @@ -37,6 +37,7 @@ import butterknife.BindView; import butterknife.ButterKnife; import rx.Observable; import rx.Observer; +import rx.Subscriber; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Func1; import rx.schedulers.Schedulers; @@ -162,8 +163,17 @@ public class SearchActivity extends BaseActivity implements NoteAdapter.NoteAdap Observable.from(notes) .flatMap(new Func1>() { @Override - public rx.Observable call(Note note) { - return NoteService.deleteNote(note); + public rx.Observable call(final Note note) { + return Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + if (!subscriber.isUnsubscribed()) { + NoteService.deleteNote(note); + subscriber.onNext(note); + subscriber.onCompleted(); + } + } + }); } }) .subscribeOn(Schedulers.io())