Update dependencies. Update last chapter read in MAL only when the reader is left, instead of on every chapter change. Other minor improvements.
This commit is contained in:
@@ -17,7 +17,7 @@ import com.pushtorefresh.storio.sqlite.queries.RawQuery;
|
||||
import java.util.List;
|
||||
|
||||
import eu.kanade.mangafeed.data.database.models.MangaSync;
|
||||
import eu.kanade.mangafeed.data.mangasync.base.BaseMangaSync;
|
||||
import eu.kanade.mangafeed.data.mangasync.base.MangaSyncService;
|
||||
import eu.kanade.mangafeed.data.database.models.Chapter;
|
||||
import eu.kanade.mangafeed.data.database.models.ChapterStorIOSQLiteDeleteResolver;
|
||||
import eu.kanade.mangafeed.data.database.models.ChapterStorIOSQLiteGetResolver;
|
||||
@@ -303,8 +303,7 @@ public class DatabaseHelper {
|
||||
|
||||
// Manga sync related queries
|
||||
|
||||
public PreparedGetListOfObjects<MangaSync> getMangaSync(Manga manga, BaseMangaSync sync) {
|
||||
|
||||
public PreparedGetListOfObjects<MangaSync> getMangaSync(Manga manga, MangaSyncService sync) {
|
||||
return db.get()
|
||||
.listOfObjects(MangaSync.class)
|
||||
.withQuery(Query.builder()
|
||||
@@ -316,6 +315,17 @@ public class DatabaseHelper {
|
||||
.prepare();
|
||||
}
|
||||
|
||||
public PreparedGetListOfObjects<MangaSync> getMangaSync(Manga manga) {
|
||||
return db.get()
|
||||
.listOfObjects(MangaSync.class)
|
||||
.withQuery(Query.builder()
|
||||
.table(MangaSyncTable.TABLE)
|
||||
.where(MangaSyncTable.COLUMN_MANGA_ID + "=?")
|
||||
.whereArgs(manga.id)
|
||||
.build())
|
||||
.prepare();
|
||||
}
|
||||
|
||||
public PreparedPutObject<MangaSync> insertMangaSync(MangaSync manga) {
|
||||
return db.put()
|
||||
.object(manga)
|
||||
|
||||
@@ -3,11 +3,13 @@ package eu.kanade.mangafeed.data.database.models;
|
||||
import com.pushtorefresh.storio.sqlite.annotations.StorIOSQLiteColumn;
|
||||
import com.pushtorefresh.storio.sqlite.annotations.StorIOSQLiteType;
|
||||
|
||||
import eu.kanade.mangafeed.data.mangasync.base.BaseMangaSync;
|
||||
import java.io.Serializable;
|
||||
|
||||
import eu.kanade.mangafeed.data.mangasync.base.MangaSyncService;
|
||||
import eu.kanade.mangafeed.data.database.tables.MangaSyncTable;
|
||||
|
||||
@StorIOSQLiteType(table = MangaSyncTable.TABLE)
|
||||
public class MangaSync {
|
||||
public class MangaSync implements Serializable {
|
||||
|
||||
@StorIOSQLiteColumn(name = MangaSyncTable.COLUMN_ID, key = true)
|
||||
public Long id;
|
||||
@@ -33,7 +35,7 @@ public class MangaSync {
|
||||
@StorIOSQLiteColumn(name = MangaSyncTable.COLUMN_STATUS)
|
||||
public int status;
|
||||
|
||||
public static MangaSync create(BaseMangaSync service) {
|
||||
public static MangaSync create(MangaSyncService service) {
|
||||
MangaSync mangasync = new MangaSync();
|
||||
mangasync.sync_id = service.getId();
|
||||
return mangasync;
|
||||
|
||||
@@ -5,12 +5,12 @@ import android.content.Context;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import eu.kanade.mangafeed.data.mangasync.base.BaseMangaSync;
|
||||
import eu.kanade.mangafeed.data.mangasync.base.MangaSyncService;
|
||||
import eu.kanade.mangafeed.data.mangasync.services.MyAnimeList;
|
||||
|
||||
public class MangaSyncManager {
|
||||
|
||||
private List<BaseMangaSync> services;
|
||||
private List<MangaSyncService> services;
|
||||
private MyAnimeList myAnimeList;
|
||||
|
||||
public static final int MYANIMELIST = 1;
|
||||
@@ -25,11 +25,11 @@ public class MangaSyncManager {
|
||||
return myAnimeList;
|
||||
}
|
||||
|
||||
public List<BaseMangaSync> getSyncServices() {
|
||||
public List<MangaSyncService> getSyncServices() {
|
||||
return services;
|
||||
}
|
||||
|
||||
public BaseMangaSync getSyncService(int id) {
|
||||
public MangaSyncService getSyncService(int id) {
|
||||
switch (id) {
|
||||
case MYANIMELIST:
|
||||
return myAnimeList;
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.squareup.okhttp.Response;
|
||||
import eu.kanade.mangafeed.data.database.models.MangaSync;
|
||||
import rx.Observable;
|
||||
|
||||
public abstract class BaseMangaSync {
|
||||
public abstract class MangaSyncService {
|
||||
|
||||
// Name of the manga sync service to display
|
||||
public abstract String getName();
|
||||
@@ -22,12 +22,12 @@ import javax.inject.Inject;
|
||||
import eu.kanade.mangafeed.App;
|
||||
import eu.kanade.mangafeed.data.database.models.MangaSync;
|
||||
import eu.kanade.mangafeed.data.mangasync.MangaSyncManager;
|
||||
import eu.kanade.mangafeed.data.mangasync.base.BaseMangaSync;
|
||||
import eu.kanade.mangafeed.data.mangasync.base.MangaSyncService;
|
||||
import eu.kanade.mangafeed.data.network.NetworkHelper;
|
||||
import eu.kanade.mangafeed.data.preference.PreferencesHelper;
|
||||
import rx.Observable;
|
||||
|
||||
public class MyAnimeList extends BaseMangaSync {
|
||||
public class MyAnimeList extends MangaSyncService {
|
||||
|
||||
@Inject PreferencesHelper preferences;
|
||||
@Inject NetworkHelper networkService;
|
||||
|
||||
@@ -11,7 +11,7 @@ import com.f2prateek.rx.preferences.RxSharedPreferences;
|
||||
import java.io.File;
|
||||
|
||||
import eu.kanade.mangafeed.R;
|
||||
import eu.kanade.mangafeed.data.mangasync.base.BaseMangaSync;
|
||||
import eu.kanade.mangafeed.data.mangasync.base.MangaSyncService;
|
||||
import eu.kanade.mangafeed.data.source.base.Source;
|
||||
import rx.Observable;
|
||||
|
||||
@@ -106,15 +106,15 @@ public class PreferencesHelper {
|
||||
.apply();
|
||||
}
|
||||
|
||||
public String getMangaSyncUsername(BaseMangaSync sync) {
|
||||
public String getMangaSyncUsername(MangaSyncService sync) {
|
||||
return prefs.getString(MANGASYNC_ACCOUNT_USERNAME + sync.getId(), "");
|
||||
}
|
||||
|
||||
public String getMangaSyncPassword(BaseMangaSync sync) {
|
||||
public String getMangaSyncPassword(MangaSyncService sync) {
|
||||
return prefs.getString(MANGASYNC_ACCOUNT_PASSWORD + sync.getId(), "");
|
||||
}
|
||||
|
||||
public void setMangaSyncCredentials(BaseMangaSync sync, String username, String password) {
|
||||
public void setMangaSyncCredentials(MangaSyncService sync, String username, String password) {
|
||||
prefs.edit()
|
||||
.putString(MANGASYNC_ACCOUNT_USERNAME + sync.getId(), username)
|
||||
.putString(MANGASYNC_ACCOUNT_PASSWORD + sync.getId(), password)
|
||||
|
||||
@@ -7,14 +7,12 @@ 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.MangaSync;
|
||||
import eu.kanade.mangafeed.data.mangasync.MangaSyncManager;
|
||||
import eu.kanade.mangafeed.data.mangasync.base.BaseMangaSync;
|
||||
import eu.kanade.mangafeed.event.UpdateMangaSyncEvent;
|
||||
import eu.kanade.mangafeed.util.EventBusHook;
|
||||
import eu.kanade.mangafeed.data.mangasync.base.MangaSyncService;
|
||||
import rx.Observable;
|
||||
import rx.android.schedulers.AndroidSchedulers;
|
||||
import rx.schedulers.Schedulers;
|
||||
import rx.subscriptions.CompositeSubscription;
|
||||
@@ -26,8 +24,12 @@ public class UpdateMangaSyncService extends Service {
|
||||
|
||||
private CompositeSubscription subscriptions;
|
||||
|
||||
public static void start(Context context) {
|
||||
context.startService(new Intent(context, UpdateMangaSyncService.class));
|
||||
private static final String EXTRA_MANGASYNC = "extra_mangasync";
|
||||
|
||||
public static void start(Context context, MangaSync mangaSync) {
|
||||
Intent intent = new Intent(context, UpdateMangaSyncService.class);
|
||||
intent.putExtra(EXTRA_MANGASYNC, mangaSync);
|
||||
context.startService(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -35,17 +37,17 @@ public class UpdateMangaSyncService extends Service {
|
||||
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) {
|
||||
MangaSync mangaSync = (MangaSync) intent.getSerializableExtra(EXTRA_MANGASYNC);
|
||||
updateLastChapterRead(mangaSync, startId);
|
||||
return START_STICKY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
EventBus.getDefault().unregister(this);
|
||||
subscriptions.unsubscribe();
|
||||
super.onDestroy();
|
||||
}
|
||||
@@ -55,22 +57,17 @@ public class UpdateMangaSyncService extends Service {
|
||||
return null;
|
||||
}
|
||||
|
||||
@EventBusHook
|
||||
public void onEventMainThread(UpdateMangaSyncEvent event) {
|
||||
updateLastChapteRead(event.getMangaSync());
|
||||
}
|
||||
private void updateLastChapterRead(MangaSync mangaSync, int startId) {
|
||||
MangaSyncService sync = syncManager.getSyncService(mangaSync.sync_id);
|
||||
|
||||
private void updateLastChapteRead(MangaSync mangaSync) {
|
||||
BaseMangaSync sync = syncManager.getSyncService(mangaSync.sync_id);
|
||||
|
||||
subscriptions.add(sync.update(mangaSync)
|
||||
subscriptions.add(Observable.fromCallable(() -> sync.update(mangaSync))
|
||||
.flatMap(response -> db.insertMangaSync(mangaSync).createObservable())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(result -> {
|
||||
stopSelf();
|
||||
stopSelf(startId);
|
||||
}, error -> {
|
||||
stopSelf();
|
||||
stopSelf(startId);
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user