public void OnUnload() { if (_settingsWindow != null) { if (_settingsWindow.IsVisible) { _settingsWindow.Close(); } _settingsWindow = null; } _config.Save(); _view.OnUnload(); }
public async Task <List <Deck> > RetrieveMetaDecks(PluginConfig config) { // First check if we need to download the meta file. string newMetaVersion = ""; if (!File.Exists(MetaFilePath)) { Log.Info("No meta file found."); using (WebClient client = new WebClient()) { newMetaVersion = await client.DownloadStringTaskAsync(MetaVersionUrl); } } else { double daysSinceLastDownload = (DateTime.Now - config.CurrentMetaFileDownloadTime).TotalDays; if (daysSinceLastDownload > RecentDownloadTimeoutDays) { Log.Info(daysSinceLastDownload + " days since meta file has been updated, checking for new version."); using (WebClient client = new WebClient()) { newMetaVersion = await client.DownloadStringTaskAsync(MetaVersionUrl); } if (newMetaVersion.Trim() != "" && newMetaVersion != config.CurrentMetaFileVersion) { Log.Info("New version detected: " + newMetaVersion + ", old version: " + config.CurrentMetaFileVersion); } else { Log.Debug("Newest version of meta file matches cached version: " + newMetaVersion); newMetaVersion = ""; } } else { Log.Debug("Cached meta file is only " + daysSinceLastDownload + " days old."); } } if (newMetaVersion != "") { Log.Info("Downloading new meta file."); using (WebClient client = new WebClient()) { await client.DownloadFileTaskAsync(MetaFileUrl, MetaArchivePath); } Log.Info("Meta file downloaded, unzipping..."); FileInfo archiveFile = new FileInfo(MetaArchivePath); using (FileStream archiveFileStream = archiveFile.OpenRead()) { using (FileStream unzippedFileStream = File.Create(MetaFilePath)) { using (GZipStream unzipStream = new GZipStream(archiveFileStream, CompressionMode.Decompress)) { unzipStream.CopyTo(unzippedFileStream); } } } config.CurrentMetaFileVersion = newMetaVersion; config.CurrentMetaFileDownloadTime = DateTime.Now; config.Save(); } Log.Debug("Loading meta file"); List <Deck> metaDecks = XmlManager <List <Deck> > .Load(MetaFilePath); Log.Info("Meta retrieved, " + metaDecks.Count + " decks loaded."); return(metaDecks); }