private async Task InvokeModelsAddedAsync(ModelsFiles modelsFiles) { if (ModelsAddedAsync is not null) { await ModelsAddedAsync.Invoke(modelsFiles); } }
public async Task AddModels(ModelsFiles modelsFiles) { string boardId = modelsFiles.BoardId; Board board = _boardsManager.GetBoard(boardId); foreach (ModelFile file in modelsFiles.Files) { file.ModelId = board.AddModelFile(file); } await Clients.Group(boardId).SendAsync(BoardsHubContract.ModelsAdded, modelsFiles); }
private async Task OnModelAddedAsync(ModelsFiles modelsFiles) { List <DndIconElem> newModels = await CreateNewIconsModelsAsync(modelsFiles); newModels.RemoveAll(x => _appState.IconsModels.Any(y => y.ModelId == x.ModelId)); _appState.IconsModels.AddRange(newModels.Except(_appState.IconsModels)); for (int i = 0; i < _appState.IconsModels.Count; i++) { _appState.IconsModels[i].Coords = new Coords { X = 50, Y = 50 + i * 110 } } ; StateHasChanged(); }
private async Task <List <DndIconElem> > CreateNewIconsModelsAsync(ModelsFiles modelsFiles) { List <DndIconElem> newModels; if (_jsRuntime is IJSUnmarshalledRuntime jsUnmarshalledRuntime) { newModels = modelsFiles.Files .Select(file => { string url = jsUnmarshalledRuntime.InvokeUnmarshalled <byte[], string>( "createFileURLUnmarshalled", file.ModelContent ); return(new DndIconElem { ModelId = file.ModelId, Url = url }); }).ToList(); } else { List <Task <DndIconElem> > newModelsTasks = modelsFiles.Files .Select(async file => { string url = await _jsRuntime.InvokeAsync <string>( "createFileURL", file.ModelContent ); return(new DndIconElem { ModelId = file.ModelId, Url = url }); }).ToList(); await Task.WhenAll(newModelsTasks); newModels = newModelsTasks.Select(task => task.Result).ToList(); } return(newModels); }
public async Task AddModelsAsync(ModelsFiles modelsFiles) => await _hubConnection.SendAsync(BoardsHubContract.AddModels, modelsFiles);