public void TestFetchBSVersions() { var versions = BeatModsV1.FetchBSVersions(); Assert.NotNull(versions); Assert.Equal(11, versions.Count); }
public void TestFetchMods() { var filters = BeatModsV1.DefaultFilters; filters.Add("gameVersion", "1.12.2"); var mods = BeatModsV1.FetchMods(filters); Assert.NotNull(mods); Assert.Equal(56, mods.Count); }
public SettingsViewModel(Settings s) { settings = s; // Fetch data from beatmods api, setup defaults //Task.Run(() => //{ // TODO: This should almost certainly be async (But it's a small request) Assuming a normal threading model in avalonia var versions = BeatModsV1.FetchBSVersions(); var versionSet = new ObservableCollection <string>(versions); this.RaiseAndSetIfChanged(ref bsVersions, versionSet); if (!string.IsNullOrWhiteSpace(settings.BSVersion)) { BSVersionIndex = versions.IndexOf(settings.BSVersion); } else { BSVersionIndex = 0; } // Criteria for continue button to be enabled var bsInstallValid = this.WhenAnyValue( x => x.BSInstall, x => SettingsViewModel.IsBSInstallValid(x) ); // var bsVersionValid = this.WhenAnyValue( // x => x.BSVersion, // x => !string.IsNullOrEmpty(x) // ); // TODO: This doesn't work because the When triggers when both are observable // i.e when both the settings have been changed. // Disabled for now, as we'll always have a version selected, and only really need to // validate the install path..Will need to re-enable later on when things are more complex // var settingsValid = Observable.When( // bsInstallValid.And(bsVersionValid) // .Then((x1,x2) => x1 & x2)); // Command for button. Enabled if validation passes, fires the command when clicked. // Subscribed to in MainWindowViewModel ContinueButton = ReactiveCommand.Create( () => { }, bsInstallValid); }
public void FetchMods(string gameVersion, string bsInstall) { // List all mods for the specified game version var filters = BeatModsV1.DefaultFilters; filters.Add("gameVersion", gameVersion); var m = BeatModsV1.FetchMods(BeatModsV1.DefaultFilters).OrderBy(mod => mod.name, new Helpers.StringInvariantSortComparerUS()).ToList(); var installer = new ModInstaller(); var entries = new List <ModEntry>(); foreach (var mm in m) { var mod = new ModEntry() { mod = mm, selected = installer.IsModInstalled(mm, bsInstall) }; entries.Add(mod); } mods = new ObservableCollection <ModEntry>(entries); }