diff --git a/Akavache.Http/Registrations.cs b/Akavache.Http/Registrations.cs index 51f06209..6f6f986b 100644 --- a/Akavache.Http/Registrations.cs +++ b/Akavache.Http/Registrations.cs @@ -30,18 +30,16 @@ public class Registrations : IWantsToRegisterStuff { public void Register(IMutableDependencyResolver resolver) { - // NB: This is an end-run around not having ReactiveUI as a reference - // but it being real damn useful at this point for detecting suspension - // ReactiveUI.Mobile sets up this Observable in its initializer - var shouldPersistState = Locator.Current.GetService>("ShouldPersistState") - ?? Observable.Never(); - var isUnpausing = Locator.Current.GetService>("IsUnpausing") - ?? Observable.Never(); - var background = new Lazy(() => { var ret = new CachingHttpScheduler(new HttpScheduler((int)Priorities.Background, 1)); + // NB: This is an end-run around not having ReactiveUI as a reference + // but it being real damn useful at this point for detecting suspension + // Akavache.Mobile sets up this Observable in its initializer + var shouldPersistState = resolver.GetService>("ShouldPersistState") + ?? Observable.Never(); + if (shouldPersistState != null) { shouldPersistState.Subscribe(_ => ret.CancelAll()); @@ -54,6 +52,9 @@ public void Register(IMutableDependencyResolver resolver) { var ret = new CachingHttpScheduler(new HttpScheduler((int)Priorities.UserInitiated, 3)); + var shouldPersistState = resolver.GetService>("ShouldPersistState") + ?? Observable.Never(); + if (shouldPersistState != null) { shouldPersistState.Subscribe(_ => ret.CancelAll()); @@ -67,6 +68,11 @@ public void Register(IMutableDependencyResolver resolver) var ret = new CachingHttpScheduler(new HttpScheduler((int)Priorities.Speculative, 0)); ret.ResetLimit(GetDataLimit()); + var shouldPersistState = resolver.GetService>("ShouldPersistState") + ?? Observable.Never(); + var isUnpausing = resolver.GetService>("IsUnpausing") + ?? Observable.Never(); + if (shouldPersistState != null) { shouldPersistState.Subscribe(_ => ret.CancelAll()); diff --git a/Akavache.Mobile/Registrations.cs b/Akavache.Mobile/Registrations.cs index c508f321..04fdbded 100644 --- a/Akavache.Mobile/Registrations.cs +++ b/Akavache.Mobile/Registrations.cs @@ -6,6 +6,7 @@ using System.Text; using System.Threading.Tasks; using Splat; +using System.Reactive; namespace Akavache.Mobile { @@ -22,6 +23,13 @@ public void Register(IMutableDependencyResolver resolver) var akavacheDriver = new AkavacheDriver(); resolver.Register(() => akavacheDriver, typeof(ISuspensionDriver), null); + + // NB: These correspond to the hacks in Akavache.Http's registrations + resolver.Register(() => resolver.GetService().ShouldPersistState, + typeof(IObservable), "ShouldPersistState"); + + resolver.Register(() => resolver.GetService().IsUnpausing, + typeof(IObservable), "IsUnpausing"); } } } \ No newline at end of file