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); }