public override async Task Initialize() { await base.Initialize(); var allClients = await interactorFactory.GetAllClientsInWorkspace(workspaceId).Execute(); Clients = FilterText .Select(text => text ?? string.Empty) .Select(text => { var trimmedText = text.Trim(); var selectableViewModels = allClients .Where(c => c.Name.ContainsIgnoringCase(trimmedText)) .Select(toSelectableViewModel); var isClientFilterEmpty = string.IsNullOrEmpty(trimmedText); var suggestCreation = !isClientFilterEmpty && allClients.None(c => c.Name == trimmedText) && trimmedText.LengthInBytes() <= MaxClientNameLengthInBytes; if (suggestCreation) { var creationSelectableViewModel = new SelectableClientCreationViewModel(trimmedText); selectableViewModels = selectableViewModels.Prepend(creationSelectableViewModel); } else if (isClientFilterEmpty) { selectableViewModels = selectableViewModels.Prepend(noClient); } return selectableViewModels; }); }
public override async Task Initialize() { await base.Initialize(); allClients = await interactorFactory.GetAllClientsInWorkspace(workspaceId).Execute(); Suggestions.Add(noClient); Suggestions.AddRange(allClients.Select(c => new SelectableClientViewModel(c.Name, c.Id == selectedClientId))); }
public override async Task Initialize() { await base.Initialize(); var allClients = await interactorFactory .GetAllClientsInWorkspace(workspaceId) .Execute(); Clients = FilterText .Select(text => text?.Trim() ?? string.Empty) .DistinctUntilChanged() .Select(trimmedText => filterClientsByText(trimmedText, allClients)) .AsDriver(Enumerable.Empty <SelectableClientBaseViewModel>(), schedulerProvider); }
public override async Task Initialize(SelectClientParameters parameter) { await base.Initialize(parameter); workspaceId = parameter.WorkspaceId; selectedClientId = parameter.SelectedClientId; noClient = new SelectableClientViewModel(0, Resources.NoClient, selectedClientId == 0); var allClients = await interactorFactory .GetAllClientsInWorkspace(workspaceId) .Execute(); Clients = FilterText .Select(text => text?.Trim() ?? string.Empty) .DistinctUntilChanged() .Select(trimmedText => filterClientsByText(trimmedText, allClients)) .AsDriver(ImmutableList <SelectableClientBaseViewModel> .Empty, schedulerProvider); }