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