/// <summary> /// Skips the received release. /// </summary> /// <param name="releaseID">Release ID to skip.</param> public static void SkipRelease(int releaseID) { // Get AddIn configuration AddInConfig addInConfig = ConfigurationHelper.GetAddInConfig(); // Check if the release was not already skipped if (addInConfig.SkippedReleases.Contains(releaseID) == false) { // Add the release to the skipped releases collection addInConfig.SkippedReleases.Add(releaseID); // Save AddIn configuration ConfigurationHelper.SaveAddInConfig(addInConfig); } }
/// <summary> /// Marks this release as rated. /// </summary> public static void MarkReleaseAsRated() { try { AddInConfig addInConfig = ConfigurationHelper.GetAddInConfig(); addInConfig.IsReleaseRated = true; ConfigurationHelper.SaveAddInConfig(addInConfig); } catch (Exception ex) { LogManager.LogError(ex); throw; } }
/// <summary> /// Checks if a release rate is pending. If a rate is pending, it updates the LastRateAskedDate of the /// AddIn config assuming the user will be asked to rate the release. /// </summary> /// <returns></returns> public static bool IsReleaseRatePending() { try { bool isRatePending = false; AddInConfig addInConfig = ConfigurationHelper.GetAddInConfig(); if (addInConfig.RateReleaseID != AssemblyHelper.VersionInfo.ReleaseID) { // User has changed the AddIn version addInConfig.RateReleaseID = AssemblyHelper.VersionInfo.ReleaseID; addInConfig.IsReleaseRated = false; addInConfig.LastRateAskedDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); ConfigurationHelper.SaveAddInConfig(addInConfig); } if (addInConfig.IsReleaseRated == false) { // Have we waited to ask again? if ((DateTime.Now - addInConfig.LastRateAskedDate).TotalDays >= 1) { isRatePending = true; addInConfig.LastRateAskedDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); ConfigurationHelper.SaveAddInConfig(addInConfig); } } return(isRatePending); } catch (Exception ex) { LogManager.LogError(ex); throw; } }
/// <summary> /// Checks if a new release exists based on current version. /// </summary> /// <param name="statusFilter">Release status filter.</param> /// <returns></returns> public static Release CheckNewRelease(List <ReleaseStatus> statusFilter) { try { // Get current version string currentVersion = AssemblyHelper.Version; // Get available releases document XDocument xdoc = XDocument.Load(Resources.ReleasesURL); // Transform release status filter to string IEnumerable <string> statusFilterValues = statusFilter.Select(s => s.ToString().ToLower()); // Get releases filtered by release status IEnumerable <XElement> releases = xdoc.Descendants(ReleasesNodes.Release) .Where(n => statusFilterValues.Contains( n.Attribute(ReleasesNodes.ReleaseAttrStatus).Value.ToLower()) ); // Get latest release node XElement latestReleaseNode = releases.LastOrDefault(); if (latestReleaseNode == null) { // No releases using the specified status filter return(null); } // Get latest release ID int latestReleaseID = Convert.ToInt32(latestReleaseNode .Attribute(ReleasesNodes.ReleaseAttrID).Value); // Check if it is a newer release if (latestReleaseID <= AssemblyHelper.VersionInfo.ReleaseID) { // Same or old release return(null); } else { // Get AddIn configuration AddInConfig addInConfig = ConfigurationHelper.GetAddInConfig(); // Check if the new release has not been previously skipped by the user if (addInConfig.SkippedReleases.Contains(latestReleaseID) == true) { // The release is newer but was previously skipped by the user return(null); } else { // New release return(new Release() { ReleaseID = Convert.ToInt32(latestReleaseNode.Attribute(ReleasesNodes.ReleaseAttrID).Value), Version = latestReleaseNode.Attribute(ReleasesNodes.ReleaseAttrVersion).Value, Status = UpdateHelper.GetReleaseStatusFromText( latestReleaseNode.Attribute(ReleasesNodes.ReleaseAttrID).Value), Link = latestReleaseNode.Descendants(ReleasesNodes.Link).First() .Attribute(ReleasesNodes.LinkAttrHref).Value, Changes = UpdateHelper.GetChanges(latestReleaseNode) }); } } } catch (Exception ex) { LogManager.LogError(ex); return(null); } }