Exemple #1
0
        /// <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;
            }
        }
Exemple #4
0
        /// <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);
            }
        }