public IObservable<Unit> LogOut()
{
if (!IsLoggedIn) return Observable.Return(Unit.Default);
log.Info(CultureInfo.InvariantCulture, "Logged off of host '{0}'", hostAddress.ApiUri);
return loginCache.EraseLogin(Address)
.Catch<Unit, Exception>(e =>
{
log.Warn("ASSERT! Failed to erase login. Going to invalidate cache anyways.", e);
return Observable.Return(Unit.Default);
})
.SelectMany(_ => ModelService.InvalidateAll())
.Catch<Unit, Exception>(e =>
{
log.Warn("ASSERT! Failed to invaldiate caches", e);
return Observable.Return(Unit.Default);
})
.ObserveOn(RxApp.MainThreadScheduler)
.Finally(() =>
{
IsLoggedIn = false;
});
}