private async void NexusLogIn() { await NexusConnection.StartNewConnectionAsync(new Progress <NewConnectionProgress>(x => { if (!x.IsComplete) { LogInButtonText = "Logging In"; } if (x.HasError) { LogInButtonText = "Nexus Login"; } if (x.IsComplete) { if (!x.HasError) { IsLoggedIn = true; IsLoginVisible = false; WindowNotificationControls.MoveToFront(); InitializeDownloadHandle(); } else { IsLoggedIn = false; IsLoginVisible = true; } } })); }
/// <summary> /// Initializes the NXMWorker pipe listener. /// </summary> private void InitializeDownloadHandle() { if (NoMissingMods) { return; } var nexusProtocol = new NexusProtocol(); // Start capturing piped messages from the NXMWorker, handle any progress reports. nexusProtocol.StartRecievingProtocolValues(new Progress <CaptureProtocolValuesProgress>(async x => { var matchingMods = MissingMods.Where(y => y.NexusModId == x.ModId); if (!matchingMods.Any()) { return; } var matchingMod = matchingMods.First(); if (matchingMod != null) { WindowNotificationControls.MoveToFront(); // Start downloading the mod file. await NexusMod.DownloadModFile(matchingMod, x.FileId, new Progress <DownloadModFileProgress>(downloadProgress => { MissingMods[MissingMods.IndexOf(matchingMod)].CurrentDownloadPercentage = downloadProgress.CurrentDownloadPercentage; if (downloadProgress.IsDownloadComplete) { Modpack.UpdateModArchivePaths(matchingMod, downloadProgress.DownloadLocation); MissingMods.Remove(matchingMod); NoMissingMods = MissingMods.Count == 0; } })); } })); }