Skip to content

Commit

Permalink
New Loader Behavior (#74)
Browse files Browse the repository at this point in the history
Update dependencies
Update support libs and adjust breaking loader changes
Also update dependencies which ship latest support lib

Fixes #70
  • Loading branch information
Tobias Rohloff authored and Ben-Noah Engelhaupt committed Jun 12, 2018
1 parent 4df0c58 commit ed79a92
Show file tree
Hide file tree
Showing 18 changed files with 101 additions and 308 deletions.
20 changes: 12 additions & 8 deletions app/dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,31 +15,35 @@ dependencies {
implementation 'com.coolerfall:android-http-download-manager:1.6.1'

// images
def glideVersion = '4.6.1'
def glideVersion = '4.7.1'
implementation "com.github.bumptech.glide:glide:${glideVersion}"
implementation "com.github.bumptech.glide:okhttp3-integration:${glideVersion}"
kapt "com.github.bumptech.glide:compiler:${glideVersion}"

// architecture
implementation 'com.evernote:android-job:1.2.5'
implementation 'com.evernote:android-job:1.2.6'
implementation 'org.greenrobot:eventbus:3.1.1'

// json
implementation 'com.google.code.gson:gson:2.8.4'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.squareup.moshi:moshi:1.6.0'

// json:api
def retrofitVersion = '2.4.0'
implementation "com.squareup.retrofit2:retrofit:${retrofitVersion}"
implementation "com.squareup.retrofit2:converter-moshi:${retrofitVersion}"
implementation 'moe.banana:moshi-jsonapi:3.3.1'

def moshijsonapiVersion = '3.5.0'
implementation "moe.banana:moshi-jsonapi:${moshijsonapiVersion}"
implementation "moe.banana:moshi-jsonapi-retrofit-converter:${moshijsonapiVersion}"

// user interface
implementation 'com.github.barteksc:android-pdf-viewer:2.8.1'
implementation 'de.psdev.licensesdialog:licensesdialog:1.8.3'
implementation 'com.github.Commit451:bypasses:1.1.0'

// video
implementation 'com.devbrackets.android:exomedia:4.1.0'
implementation 'com.devbrackets.android:exomedia:4.2.1'

// view binding
def butterknifeVersion = '8.8.1'
Expand All @@ -56,11 +60,11 @@ dependencies {
implementation "com.google.android.gms:play-services-gcm:15.0.1"

// firebase
implementation "com.crashlytics.sdk.android:crashlytics:2.9.2"
implementation "com.google.firebase:firebase-core:15.0.2"
implementation "com.crashlytics.sdk.android:crashlytics:2.9.3"
implementation "com.google.firebase:firebase-core:16.0.0"

// support libraries
def supportVersion = '27.0.2'
def supportVersion = '27.1.1'
implementation "com.android.support:support-v4:${supportVersion}"
implementation "com.android.support:appcompat-v7:${supportVersion}"
implementation "com.android.support:cardview-v7:${supportVersion}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,21 +38,23 @@ protected void onCreate(Bundle savedInstanceState) {
private void initLoader() {
// LoaderCallbacks as an object, so no hint regarding Loader will be leak to the subclasses.
getSupportLoaderManager().initLoader(loaderId(), null, new LoaderManager.LoaderCallbacks<P>() {
@NonNull
@Override
public final Loader<P> onCreateLoader(int id, Bundle args) {
if (PRESENTER_LIFECYCLE_LOGGING) Log.i(TAG, "onCreateLoader");
return new PresenterLoader<>(BasePresenterActivity.this, getPresenterFactory(), tag());
}

@Override
public final void onLoadFinished(Loader<P> loader, P presenter) {
public final void onLoadFinished(@NonNull Loader<P> loader, P presenter) {
if (PRESENTER_LIFECYCLE_LOGGING) Log.i(TAG, "onLoadFinished");
BasePresenterActivity.this.presenter = presenter;
presenter.onViewAttached(getPresenterView());
onPresenterCreatedOrRestored(presenter);
}

@Override
public final void onLoaderReset(Loader<P> loader) {
public final void onLoaderReset(@NonNull Loader<P> loader) {
if (PRESENTER_LIFECYCLE_LOGGING) Log.i(TAG, "onLoaderReset");
BasePresenterActivity.this.presenter = null;
onPresenterDestroyed();
Expand All @@ -63,12 +65,12 @@ public final void onLoaderReset(Loader<P> loader) {
@Override
protected void onStart() {
super.onStart();
presenter.onViewAttached(getPresenterView());
if (presenter != null) presenter.onViewAttached(getPresenterView());
}

@Override
protected void onStop() {
presenter.onViewDetached();
if (presenter != null) presenter.onViewDetached();
super.onStop();
}

Expand All @@ -77,7 +79,7 @@ protected void onStop() {
*/
@NonNull
protected String tag() {
return TAG;
return this.getClass().getSimpleName();
}

/**
Expand All @@ -88,7 +90,7 @@ protected String tag() {
protected abstract PresenterFactory<P> getPresenterFactory();

/**
* Hook for subclasses that deliver the {@link Presenter} before its View is attached.
* Hook for subclasses that deliver the {@link Presenter} when created or restored.
* Can be use to initialize the Presenter or simple hold a reference to it.
*/
protected void onPresenterCreatedOrRestored(@NonNull P presenter) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,21 +38,23 @@ public void onActivityCreated(Bundle savedInstanceState) {
private void initLoader() {
// LoaderCallbacks as an object, so no hint regarding loader will be leak to the subclasses.
getLoaderManager().initLoader(loaderId(), null, new LoaderManager.LoaderCallbacks<P>() {
@NonNull
@Override
public final Loader<P> onCreateLoader(int id, Bundle args) {
if (PRESENTER_LIFECYCLE_LOGGING) Log.i(TAG, "onCreateLoader-" + tag());
return new PresenterLoader<>(getContext(), getPresenterFactory(), tag());
}

@Override
public final void onLoadFinished(Loader<P> loader, P presenter) {
public final void onLoadFinished(@NonNull Loader<P> loader, P presenter) {
if (PRESENTER_LIFECYCLE_LOGGING) Log.i(TAG, "onLoadFinished-" + tag());
BasePresenterFragment.this.presenter = presenter;
presenter.onViewAttached(getPresenterView());
onPresenterCreatedOrRestored(presenter);
}

@Override
public final void onLoaderReset(Loader<P> loader) {
public final void onLoaderReset(@NonNull Loader<P> loader) {
if (PRESENTER_LIFECYCLE_LOGGING) Log.i(TAG, "onLoaderReset-" + tag());
BasePresenterFragment.this.presenter = null;
onPresenterDestroyed();
Expand All @@ -63,12 +65,12 @@ public final void onLoaderReset(Loader<P> loader) {
@Override
public void onStart() {
super.onStart();
presenter.onViewAttached(getPresenterView());
if (presenter != null) presenter.onViewAttached(getPresenterView());
}

@Override
public void onStop() {
presenter.onViewDetached();
if (presenter != null) presenter.onViewDetached();
super.onStop();
}

Expand All @@ -82,7 +84,7 @@ public void setTitle(CharSequence title) {
*/
@NonNull
protected String tag() {
return TAG;
return this.getClass().getSimpleName();
}

/**
Expand All @@ -93,7 +95,7 @@ protected String tag() {
protected abstract PresenterFactory<P> getPresenterFactory();

/**
* Hook for subclasses that deliver the {@link Presenter} before its View is attached.
* Hook for subclasses that deliver the {@link Presenter} when created or restored.
* Can be use to initialize the Presenter or simple hold a reference to it.
*/
protected void onPresenterCreatedOrRestored(@NonNull P presenter) {
Expand Down
28 changes: 11 additions & 17 deletions app/src/main/java/de/xikolo/models/base/Sync.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,8 @@ public static <S extends RealmModel, T extends Resource & RealmAdapter<S>> Data<
public String[] run() {
final List<String> ids = new ArrayList<>();

Realm realm = Realm.getDefaultInstance();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
try (Realm realmInstance = Realm.getDefaultInstance()) {
realmInstance.executeTransaction(realm -> {
for (T item : items) {
if (beforeCommitCallback != null) {
beforeCommitCallback.beforeCommit(realm, item.convertToRealmObject());
Expand Down Expand Up @@ -116,9 +114,8 @@ public void execute(Realm realm) {

results.deleteAllFromRealm();
} else if (Config.DEBUG) Log.d(TAG, "DATA: Deleted 0 local resources from type " + clazz.getSimpleName());
}
});
realm.close();
});
}

return ids.toArray(new String[0]);
}
Expand All @@ -127,14 +124,14 @@ public void execute(Realm realm) {

public static class Included<S extends RealmModel, T extends Resource & RealmAdapter<S>> extends Sync<S, T> {

private Document<?> document;
private Document document;

private Included(Class<S> clazz, Document<?> document) {
private Included(Class<S> clazz, Document document) {
super(clazz);
this.document = document;
}

public static <S extends RealmModel> Included<S, ?> with(Class<S> clazz, final Document<?> document) {
public static <S extends RealmModel> Included<S, ?> with(Class<S> clazz, final Document document) {
return new Included<>(clazz, document);
}

Expand All @@ -151,10 +148,8 @@ public String[] run() {

final List<String> ids = new ArrayList<>();

Realm realm = Realm.getDefaultInstance();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
try (Realm realmInstance = Realm.getDefaultInstance()) {
realmInstance.executeTransaction(realm -> {
for (Resource resource : document.getIncluded()) {
if (resource instanceof RealmAdapter) {
RealmAdapter adapter = (RealmAdapter) resource;
Expand Down Expand Up @@ -192,9 +187,8 @@ public void execute(Realm realm) {

results.deleteAllFromRealm();
} else if (Config.DEBUG) Log.d(TAG, "INCLUDED: Deleted 0 local resources from type " + clazz.getSimpleName());
}
});
realm.close();
});
}

return ids.toArray(new String[0]);
}
Expand Down
1 change: 1 addition & 0 deletions app/src/main/java/de/xikolo/network/ApiService.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import de.xikolo.models.SubtitleCue;
import de.xikolo.models.SubtitleTrack;
import de.xikolo.models.Video;
import moe.banana.jsonapi2.JsonApiConverterFactory;
import moe.banana.jsonapi2.ResourceAdapterFactory;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
Expand Down
Loading

0 comments on commit ed79a92

Please sign in to comment.