mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-18 23:17:28 +01:00
Changes:
- Declare RxJava as dependency - Add a folder chooser for downloads - Fix a force close when updating library - Enable ACRA and add a setting to send crash reports - Manga class now uses the default get resolver - Other minor changes
This commit is contained in:
@@ -27,6 +27,7 @@ import eu.kanade.mangafeed.data.database.models.ChapterSyncStorIOSQLiteGetResolv
|
||||
import eu.kanade.mangafeed.data.database.models.ChapterSyncStorIOSQLitePutResolver;
|
||||
import eu.kanade.mangafeed.data.database.models.Manga;
|
||||
import eu.kanade.mangafeed.data.database.models.MangaStorIOSQLiteDeleteResolver;
|
||||
import eu.kanade.mangafeed.data.database.models.MangaStorIOSQLiteGetResolver;
|
||||
import eu.kanade.mangafeed.data.database.models.MangaStorIOSQLitePutResolver;
|
||||
import eu.kanade.mangafeed.data.database.resolvers.MangaWithUnreadGetResolver;
|
||||
import eu.kanade.mangafeed.data.database.tables.ChapterSyncTable;
|
||||
@@ -46,7 +47,7 @@ public class DatabaseHelper {
|
||||
.sqliteOpenHelper(new DbOpenHelper(context))
|
||||
.addTypeMapping(Manga.class, SQLiteTypeMapping.<Manga>builder()
|
||||
.putResolver(new MangaStorIOSQLitePutResolver())
|
||||
.getResolver(new MangaWithUnreadGetResolver())
|
||||
.getResolver(new MangaStorIOSQLiteGetResolver())
|
||||
.deleteResolver(new MangaStorIOSQLiteDeleteResolver())
|
||||
.build())
|
||||
.addTypeMapping(Chapter.class, SQLiteTypeMapping.<Chapter>builder()
|
||||
@@ -94,6 +95,7 @@ public class DatabaseHelper {
|
||||
.query(favoriteMangasWithUnreadQuery)
|
||||
.observesTables(MangaTable.TABLE, ChapterTable.TABLE)
|
||||
.build())
|
||||
.withGetResolver(MangaWithUnreadGetResolver.instance)
|
||||
.prepare();
|
||||
}
|
||||
|
||||
|
||||
@@ -9,12 +9,14 @@ import eu.kanade.mangafeed.data.database.tables.MangaTable;
|
||||
|
||||
public class MangaWithUnreadGetResolver extends MangaStorIOSQLiteGetResolver {
|
||||
|
||||
public static final MangaWithUnreadGetResolver instance = new MangaWithUnreadGetResolver();
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
public Manga mapFromCursor(@NonNull Cursor cursor) {
|
||||
Manga manga = super.mapFromCursor(cursor);
|
||||
int unreadColumn = cursor.getColumnIndex(MangaTable.COLUMN_UNREAD);
|
||||
if (unreadColumn != -1)
|
||||
manga.unread = cursor.getInt(unreadColumn);
|
||||
manga.unread = cursor.getInt(unreadColumn);
|
||||
return manga;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,15 +2,17 @@ package eu.kanade.mangafeed.data.preference;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Environment;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import com.f2prateek.rx.preferences.Preference;
|
||||
import com.f2prateek.rx.preferences.RxSharedPreferences;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import eu.kanade.mangafeed.R;
|
||||
import eu.kanade.mangafeed.data.chaptersync.BaseChapterSync;
|
||||
import eu.kanade.mangafeed.data.source.base.Source;
|
||||
import eu.kanade.mangafeed.util.DiskUtils;
|
||||
import rx.Observable;
|
||||
|
||||
public class PreferencesHelper {
|
||||
@@ -24,12 +26,21 @@ public class PreferencesHelper {
|
||||
private static final String CHAPTERSYNC_ACCOUNT_USERNAME = "pref_chaptersync_username_";
|
||||
private static final String CHAPTERSYNC_ACCOUNT_PASSWORD = "pref_chaptersync_password_";
|
||||
|
||||
private File defaultDownloadsDir;
|
||||
|
||||
public PreferencesHelper(Context context) {
|
||||
this.context = context;
|
||||
PreferenceManager.setDefaultValues(context, R.xml.pref_reader, false);
|
||||
|
||||
prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
rxPrefs = RxSharedPreferences.create(prefs);
|
||||
|
||||
defaultDownloadsDir = new File(Environment.getExternalStorageDirectory() +
|
||||
File.separator + context.getString(R.string.app_name), "downloads");
|
||||
|
||||
// Create default directory
|
||||
if (getDownloadsDirectory().equals(defaultDownloadsDir.getAbsolutePath()))
|
||||
defaultDownloadsDir.mkdirs();
|
||||
}
|
||||
|
||||
private String getKey(int keyResource) {
|
||||
@@ -108,7 +119,11 @@ public class PreferencesHelper {
|
||||
|
||||
public String getDownloadsDirectory() {
|
||||
return prefs.getString(getKey(R.string.pref_download_directory_key),
|
||||
DiskUtils.getStorageDirectories(context)[0]);
|
||||
defaultDownloadsDir.getAbsolutePath());
|
||||
}
|
||||
|
||||
public void setDownloadsDirectory(String path) {
|
||||
prefs.edit().putString(getKey(R.string.pref_download_directory_key), path).apply();
|
||||
}
|
||||
|
||||
public int getDownloadThreads() {
|
||||
|
||||
@@ -32,7 +32,6 @@ public class LibraryUpdateService extends Service {
|
||||
@Inject SourceManager sourceManager;
|
||||
|
||||
private Subscription updateSubscription;
|
||||
private Subscription favoriteMangasSubscription;
|
||||
|
||||
public static final int UPDATE_NOTIFICATION_ID = 1;
|
||||
|
||||
@@ -68,14 +67,9 @@ public class LibraryUpdateService extends Service {
|
||||
return START_NOT_STICKY;
|
||||
}
|
||||
|
||||
if (favoriteMangasSubscription != null && !favoriteMangasSubscription.isUnsubscribed())
|
||||
favoriteMangasSubscription.unsubscribe();
|
||||
|
||||
favoriteMangasSubscription = db.getFavoriteMangas().createObservable()
|
||||
Observable.fromCallable(() -> db.getFavoriteMangas().executeAsBlocking())
|
||||
.subscribe(mangas -> {
|
||||
// Don't receive further db updates
|
||||
favoriteMangasSubscription.unsubscribe();
|
||||
this.startUpdating(mangas, startId);
|
||||
startUpdating(mangas, startId);
|
||||
});
|
||||
|
||||
return START_STICKY;
|
||||
|
||||
Reference in New Issue
Block a user