public PackageManagerViewModel()

in WindowsSmartInk/SmartInkLaboratory/ViewModels/PackageManagerViewModel.cs [60:114]


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