public OpenPackageViewModel(IProjectPackageMapper mapper, ITagService tags, IAppStateService state)
        {
            _mapper = mapper;
            _tags   = tags;
            _state  = state;

            _state.ProjectChanged += async(s, e) =>
            {
                await GetPackagesAsync();
            };

            this.SelectPackage = new RelayCommand <ISmartInkPackage>(async(package) => {
                if (package == null)
                {
                    return;
                }

                if (_state.CurrentPackage?.Name == package.Name)
                {
                    return;
                }

                var tagList    = await _tags.GetTagsAsync();
                var updateTags = new Dictionary <Guid, string>();
                foreach (var tag in tagList)
                {
                    updateTags.Add(tag.Id, tag.Name);
                }

                await package.UpdateTagsAsync(updateTags);

                _state.SetCurrentPackage(package);
            });
        }
Exemple #2
0
        public NewPackageViewModel(IProjectPackageMapper mapper, ITagService tags, IAppStateService state, INavigationService nav)
        {
            _mapper         = mapper;
            _tags           = tags;
            _state          = state;
            _nav            = nav;
            _packageManager = new PackageManager();

            this.Save = new RelayCommand(async() =>
            {
                ISmartInkPackage package;
                try
                {
                    if (IsMediaPackage)
                    {
                        package = await _packageManager.CreateLocalPackageAsync <SmartInkMediaPackage>(Name);
                    }
                    else
                    {
                        package = await _packageManager.CreateLocalPackageAsync <SmartInkPackage>(Name);
                    }

                    var taglist = await _tags.GetTagsAsync();
                    var newTags = new Dictionary <Guid, string>();
                    foreach (var tag in taglist)
                    {
                        newTags.Add(tag.Id, tag.Name);
                    }

                    await package.AddTagsAsync(newTags);

                    await _mapper.AddAsync(package.Name, _state.CurrentProject.Id.ToString());

                    _state.SetCurrentPackage(package);

                    Reset();
                }
                catch (Exception)
                {
                }
            },
                                         () => {
                return(!string.IsNullOrWhiteSpace(Name) && !string.IsNullOrWhiteSpace(Version));
            });
        }
        public PackageManagerViewModel(ITagService tags, IProjectPackageMapper mapper, IAppStateService state, IDialogService dialog)
        {
            _tags   = tags;
            _mapper = mapper;
            _state  = state;
            _dialog = dialog;

            _state.KeysChanged += (s, e) => {
                NewPackage.RaiseCanExecuteChanged();
            };

            _state.TagDeleted += async(s, e) => {
                if (_state.CurrentPackage != null)
                {
                    await _state.CurrentPackage.RemoveTagAsync(e.DeletedTag.Id);
                }
            };

            _state.PackageChanged += (s, e) => {
                RaisePropertyChanged(nameof(CurrentPackage));
                PublishPackage.RaiseCanExecuteChanged();
            };

            _state.ProjectChanged += async(s, e) => {
                _packageCount = (await _mapper.GetPackagesByProjectAsync(_state.CurrentProject.Id.ToString())).Count;
                OpenPackage.RaiseCanExecuteChanged();
            };

            this.NewPackage = new RelayCommand(async() => {
                await _dialog.OpenAsync(DialogKeys.NewPackage);
            },
                                               () => { return(_state.CurrentKeys != null); });

            this.OpenPackage = new RelayCommand(async() => {
                await _dialog.OpenAsync(DialogKeys.OpenPackage);
            },
                                                () => {
                return(_state.CurrentProject != null && _packageCount > 0);
            });

            this.PublishPackage = new RelayCommand(async() => {
                var savePicker = new Windows.Storage.Pickers.FileSavePicker();
                savePicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.DocumentsLibrary;
                // Dropdown of file types the user can save the file as
                savePicker.FileTypeChoices.Add("Nuget Package", new List <string>()
                {
                    ".nupkg"
                });
                var nugetFileName = $"SmartInk.{_state.CurrentPackage.Name}.{_state.CurrentPackage.Version}.nupkg";
                // Default file name if the user does not type one in or select a file to replace
                savePicker.SuggestedFileName = nugetFileName;
                var file = await savePicker.PickSaveFileAsync();
                if (file != null)
                {
                    await _packageManager.PublishPackageAsync(_state.CurrentPackage.BasePackage, file);
                }
            },
                                                   () => {
                return(_state.CurrentPackage != null);
            });
        }