// 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");
                }
            }
        }
예제 #2
0
        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();
        }
예제 #3
0
    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();
        }
    }
예제 #4
0
        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");
        }
예제 #5
0
 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());
 }
예제 #6
0
        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");
        }
예제 #7
0
        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");
        }