Exemplo n.º 1
0
        public static async Task <ProjectListViewModel> Init(Guid workspaceId)
        {
            var vm = new ProjectListViewModel(workspaceId);

            var store         = ServiceContainer.Resolve <IDataStore> ();
            var settingsStore = ServiceContainer.Resolve <ISettingsStore> ();

            // Change settings for a better library like
            // James Montemagno version and define default
            // values to avoid this code.
            if (string.IsNullOrEmpty(settingsStore.SortProjectsBy))
            {
                settingsStore.SortProjectsBy = ProjectsCollection.SortProjectsBy.Clients.ToString();
            }
            var savedSort = Enum.Parse(typeof(ProjectsCollection.SortProjectsBy), settingsStore.SortProjectsBy);

            vm.ProjectList = await ProjectsCollection.Init((ProjectsCollection.SortProjectsBy) savedSort, workspaceId);

            vm.WorkspaceList = await store.Table <WorkspaceData> ().Where(r => r.DeletedAt == null)
                               .OrderBy(r => r.Name).ToListAsync();

            vm.CurrentWorkspaceIndex = vm.WorkspaceList.IndexOf(p => p.Id == workspaceId);

            // Search stream
            Observable.FromEventPattern <string> (ev => vm.onSearch += ev, ev => vm.onSearch -= ev)
            .Throttle(TimeSpan.FromMilliseconds(300))
            .DistinctUntilChanged()
            .Subscribe
                (p => ServiceContainer.Resolve <IPlatformUtils> ().DispatchOnUIThread(() => {
                vm.ProjectList.ProjectNameFilter = p.EventArgs;
            }),
                ex => ServiceContainer.Resolve <ILogger> ().Error("Search", ex, null));

            return(vm);
        }