예제 #1
0
 private async Task InvokeModelsAddedAsync(ModelsFiles modelsFiles)
 {
     if (ModelsAddedAsync is not null)
     {
         await ModelsAddedAsync.Invoke(modelsFiles);
     }
 }
예제 #2
0
        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);
        }
예제 #3
0
        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();
        }
예제 #4
0
        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);
        }
예제 #5
0
 public async Task AddModelsAsync(ModelsFiles modelsFiles) =>
 await _hubConnection.SendAsync(BoardsHubContract.AddModels, modelsFiles);