コード例 #1
0
        protected virtual async void ListUpdatedHandler(MessageBase <IList <TDomain> > messageBase)
        {
            // Might need to add new threads and main thread requests.
            IsLoading = true;

            var objects = await Resolver.Resolve <IListBusiness <TId, TDomain> >().GetAllAsync().ConfigureAwait(false);

            var deleteIds = 0;

            try
            {
                deleteIds = Observables.Select(x => x.Id).Except(objects.Select(x => x.Id)).Count();
            }
            catch (Exception)
            {
            }

            var count = objects.Count + deleteIds;

            VerifyAndResetCountdown(count);

            var dispatcher = Resolver.Resolve <IExMainThreadDispatcher>();

            foreach (var observable in Observables.Reverse())
            {
                TObservable tmpObservable = observable;
                dispatcher.InvokeOnMainThread(() =>
                {
                    Observables.Remove(tmpObservable);
                    SignalCde();
                });
            }

            foreach (var domainObject in objects)
            {
                if (ObservablesContainsId(domainObject.Id))
                {
                    var observable = Observables.First(x => x.Id.Equals(domainObject.Id));
                    DomainObservableMapper.UpdateDestination(domainObject, observable);
                    SignalCde();
                }
                else
                {
                    var observable = DomainObservableMapper.Map(domainObject);
                    dispatcher.InvokeOnMainThread(() =>
                    {
                        Observables.InsertItem(observable);
                        SignalCde();
                    });
                }
            }

            if (SelectedObservable.IsTransient() && Observables.Any())
            {
                ObservableSelectedMapper.UpdateDestination(Observables.First(), SelectedObservable);
            }

            IsLoading = false;
        }
コード例 #2
0
        protected virtual void ItemUpdatedHandler(MessageBase <TDomain> messageBase)
        {
            // Update item in the list
            var itemInList = Observables.FirstOrDefault(x => x.Id.Equals(messageBase.Object.Id));

            if (itemInList != null)
            {
                DomainObservableMapper.UpdateDestination(messageBase.Object, itemInList);
            }

            // Update the selected item only if updated and is selected
            if (SelectedObservable.Id.Equals(messageBase.Object.Id) && messageBase.State == EDomainState.Updated)
            {
                DomainSelectedMapper.UpdateDestination(messageBase.Object, SelectedObservable);
            }
        }