// Change Email & Phone private async Task ForceChangePhone() { var changeData = await _shell.ShowForceChangeDialog( EditViewModel.Phone, "Phone", Locales.FirstOrDefault(), Locales.ToList()); if (changeData != null) { try { var newPhone = long.Parse(changeData.Input); var request = new ChangePhoneRequest(changeData.Locale, newPhone, EditViewModel.Id.Value); await _domain0.Client.ForceChangePhoneAsync(request); EditViewModel.Phone = changeData.Input; Models.AddOrUpdate(EditModel); } catch (Exception e) { await _shell.HandleException(e, "Failed to Change Phone"); } } }
public void ComplexRemove() { TimeSpan?RemoveFunc(Person t) { if (t.Age <= 40) { return(TimeSpan.FromSeconds(5)); } if (t.Age <= 80) { return(TimeSpan.FromSeconds(7)); } return(null); } const int size = 100; Person[] items = Enumerable.Range(1, size).Select(i => new Person($"Name.{i}", i)).ToArray(); _source.AddOrUpdate(items); var remover = _source.ExpireAfter(RemoveFunc, _scheduler).Subscribe(); _scheduler.AdvanceBy(TimeSpan.FromMilliseconds(5010).Ticks); _source.Count.Should().Be(60, "40 items should have been removed from the cache"); _scheduler.AdvanceBy(TimeSpan.FromSeconds(5).Ticks); _source.Count.Should().Be(20, "80 items should have been removed from the cache"); remover.Dispose(); }
public static void SetTo <V, K>(this ISourceCache <V, K> cache, Func <V, K> keySelector, IEnumerable <V> items, SetTo setTo = Noggog.SetTo.Whitewash) where K : notnull { if (setTo == Noggog.SetTo.Whitewash) { SetTo(cache, items); return; } var toRemove = new HashSet <K>(cache.Keys); var keyPairs = items.Select(i => new KeyValuePair <K, V>(keySelector(i), i)).ToArray(); toRemove.Remove(keyPairs.Select(kv => kv.Key)); cache.Remove(toRemove); switch (setTo) { case Noggog.SetTo.SkipExisting: foreach (var item in keyPairs) { if (!cache.Lookup(item.Key).HasValue) { cache.AddOrUpdate(item.Value); } } break; case Noggog.SetTo.SetExisting: cache.AddOrUpdate(items); break; default: throw new NotImplementedException(); } }
public void AddedItemWillbeSubscribed() { _source.AddOrUpdate(new SubscribeableObject(1)); _results.Messages.Count.Should().Be(1, "Should be 1 updates"); _results.Data.Count.Should().Be(1, "Should be 1 item in the cache"); _results.Data.Items.First().IsSubscribed.Should().Be(true, "Should be subscribed"); }
public void Add([NotNull] IEnumerable <SearchMetadata> metadata) { if (metadata == null) { throw new ArgumentNullException(nameof(metadata)); } _searches.AddOrUpdate(metadata); _logger.Info("{0} SearchMetadata has been loaded", metadata.Count()); }
public void AddMatched() { var person = new Person("Adult1", 50); _source.AddOrUpdate(person); Assert.AreEqual(1, _results.Messages.Count, "Should be 1 updates"); Assert.AreEqual(1, _results.Data.Count, "Should be 1 item in the cache"); Assert.AreEqual(person, _results.Data.Items.First(), "Should be same person"); }
public void UpdatingOneSourceOnlyProducesNoResultsDeferredSubscribe() { var person = new Person("Adult1", 50); _source1.AddOrUpdate(person); var results = CreateObservable().AsAggregator(); results.Messages.Count.Should().Be(0, "Should have no updates"); results.Data.Count.Should().Be(0, "Cache should have no items"); }