parent
e1a14be2bd
commit
9db81b1832
@ -0,0 +1,77 @@
|
||||
package eu.kanade.mangafeed.data.chaptersync;
|
||||
|
||||
import android.app.Service;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.IBinder;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
import eu.kanade.mangafeed.App;
|
||||
import eu.kanade.mangafeed.data.database.DatabaseHelper;
|
||||
import eu.kanade.mangafeed.data.database.models.ChapterSync;
|
||||
import eu.kanade.mangafeed.data.network.NetworkHelper;
|
||||
import eu.kanade.mangafeed.event.UpdateChapterSyncEvent;
|
||||
import eu.kanade.mangafeed.util.EventBusHook;
|
||||
import rx.android.schedulers.AndroidSchedulers;
|
||||
import rx.schedulers.Schedulers;
|
||||
import rx.subscriptions.CompositeSubscription;
|
||||
|
||||
public class UpdateChapterSyncService extends Service {
|
||||
|
||||
@Inject ChapterSyncManager syncManager;
|
||||
@Inject NetworkHelper networkManager;
|
||||
@Inject DatabaseHelper db;
|
||||
|
||||
private CompositeSubscription subscriptions;
|
||||
|
||||
public static void start(Context context) {
|
||||
context.startService(new Intent(context, UpdateChapterSyncService.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
App.get(this).getComponent().inject(this);
|
||||
subscriptions = new CompositeSubscription();
|
||||
EventBus.getDefault().registerSticky(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
return START_STICKY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
EventBus.getDefault().unregister(this);
|
||||
subscriptions.unsubscribe();
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@EventBusHook
|
||||
public void onEventMainThread(UpdateChapterSyncEvent event) {
|
||||
updateLastChapteRead(event.getChapterSync());
|
||||
}
|
||||
|
||||
private void updateLastChapteRead(ChapterSync chapterSync) {
|
||||
BaseChapterSync sync = syncManager.getSyncService(chapterSync.sync_id);
|
||||
|
||||
subscriptions.add(sync.update(chapterSync)
|
||||
.flatMap(response -> db.insertChapterSync(chapterSync).createObservable())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(result -> {
|
||||
stopSelf();
|
||||
}, error -> {
|
||||
stopSelf();
|
||||
}));
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package eu.kanade.mangafeed.event;
|
||||
|
||||
import eu.kanade.mangafeed.data.database.models.ChapterSync;
|
||||
|
||||
public class UpdateChapterSyncEvent {
|
||||
|
||||
private ChapterSync chapterSync;
|
||||
|
||||
public UpdateChapterSyncEvent(ChapterSync chapterSync) {
|
||||
this.chapterSync = chapterSync;
|
||||
}
|
||||
|
||||
public ChapterSync getChapterSync() {
|
||||
return chapterSync;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in new issue