Esempio n. 1
0
        private static bool OnReleaseAvailable(ReleaseDetails release)
        {
            AppCenterLog.Info(Constants.AppCenterLogTag, $"{nameof(OnReleaseAvailable)} id={release.Id} version={release.Version} mandatory={release.MandatoryUpdate}");

            var message = $"New release {release.ShortVersion}({release.Version}) available";

            // On mandatory update, user cannot postpone
            var answer = release.MandatoryUpdate ? UserDialogs.Instance.AlertAsync(message, "Warning!", "Download and install") :
                         UserDialogs.Instance.ConfirmAsync(message, "Warning!", "Download and install", "Not now");

            answer.ContinueWith(task =>
            {
                // If mandatory or if answer was positive
                if (release.MandatoryUpdate || ((Task <bool>)task).Result)
                {
                    // Notify SDK that user selected update
                    AppCenterLog.Info(Constants.AppCenterLogTag, "Notify Update");
                    Distribute.NotifyUpdateAction(UpdateAction.Update);
                }
                else
                {
                    // Notify SDK that user selected postpone (for 1 day)
                    // Note that this method call is ignored by the SDK if the update is mandatory
                    AppCenterLog.Info(Constants.AppCenterLogTag, "Notify Postpone");
                    Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                }
            });

            // Return true if you are using your own dialog, false otherwise
            return(true);
        }
Esempio n. 2
0
        bool OnReleaseAvailable(ReleaseDetails releaseDetails)
        {
            AppCenterLog.Info(LogTag, "OnReleaseAvailable id=" + releaseDetails.Id
                              + " version=" + releaseDetails.Version
                              + " releaseNotesUrl=" + releaseDetails.ReleaseNotesUrl);
            var custom = releaseDetails.ReleaseNotes?.ToLowerInvariant().Contains("custom") ?? false;

            if (custom)
            {
                var  title = "Version " + releaseDetails.ShortVersion + " available!";
                Task answer;
                if (releaseDetails.MandatoryUpdate)
                {
                    answer = Current.MainPage.DisplayAlert(title, releaseDetails.ReleaseNotes, "Update now!");
                }
                else
                {
                    answer = Current.MainPage.DisplayAlert(title, releaseDetails.ReleaseNotes, "Update now!", "Maybe tomorrow...");
                }
                answer.ContinueWith((task) =>
                {
                    if (releaseDetails.MandatoryUpdate || ((Task <bool>)task).Result)
                    {
                        Distribute.NotifyUpdateAction(UpdateAction.Update);
                    }
                    else
                    {
                        Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                    }
                });
            }
            return(custom);
        }
Esempio n. 3
0
        private static bool OnReleaseAvailable(ReleaseDetails releaseDetails)
        {
            // Look at releaseDetails public properties to get version information, release notes text or release notes URL
            var versionName = releaseDetails.ShortVersion;
            var versionCodeOrBuildNumber = releaseDetails.Version;
            var releaseNotes             = releaseDetails.ReleaseNotes;
            var releaseNotesUrl          = releaseDetails.ReleaseNotesUrl;

            // custom dialog
            var title = "Version " + versionName + " available!";

            // On mandatory update, user cannot postpone
            var answer = releaseDetails.MandatoryUpdate ?
                         Current.MainPage.DisplayAlert(title, releaseNotes, "Download and Install") :
                         Current.MainPage.DisplayAlert(title, releaseNotes, "Download and Install", "Maybe tomorrow...");

            answer.ContinueWith((task) =>
            {
                // If mandatory or if answer was positive
                if (releaseDetails.MandatoryUpdate || (task as Task <bool>).Result)
                {
                    // Notify SDK that user selected update
                    Distribute.NotifyUpdateAction(UpdateAction.Update);
                }
                else
                {
                    // Notify SDK that user selected postpone (for 1 day)
                    // Note that this method call is ignored by the SDK if the update is mandatory
                    Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                }
            });

            // Return true if you are using your own dialog, false otherwise
            return(true);
        }
Esempio n. 4
0
        bool OnReleaseAvailable(ReleaseDetails releaseDetails)
        {
            AppCenterLog.Info(LogTag, "OnReleaseAvailable id=" + releaseDetails.Id
                              + " version=" + releaseDetails.Version
                              + " releaseNotesUrl=" + releaseDetails.ReleaseNotesUrl);
            var custom = releaseDetails.ReleaseNotes?.ToLowerInvariant().Contains("custom") ?? false;

            if (custom)
            {
                var builder = new AlertDialog.Builder(this);
                builder.SetTitle(string.Format(GetString(Resource.String.version_x_available), releaseDetails.ShortVersion));
                builder.SetMessage(releaseDetails.ReleaseNotes);
                builder.SetPositiveButton(Microsoft.AppCenter.Distribute.Resource.String.appcenter_distribute_update_dialog_download, delegate
                {
                    Distribute.NotifyUpdateAction(UpdateAction.Update);
                });
                builder.SetCancelable(false);
                if (!releaseDetails.MandatoryUpdate)
                {
                    builder.SetNegativeButton(Microsoft.AppCenter.Distribute.Resource.String.appcenter_distribute_update_dialog_postpone, delegate
                    {
                        Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                    });
                }
                builder.Create().Show();
            }
            return(custom);
        }
        private bool OnReleaseAvailable(ReleaseDetails releaseDetails)
        {
            // Look at releaseDetails public properties to get version information,
            // release notes text or release notes URL
            string versionName             = releaseDetails.ShortVersion;
            string verionCodeOrBuildNumber = releaseDetails.Version;
            string releaseNotes            = releaseDetails.ReleaseNotes;
            Uri    releaseNotesUrl         = releaseDetails.ReleaseNotesUrl;

            // Build dialog
            AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
            AlertDialog         alert         = dialogBuilder.Create();

            alert.SetTitle("Version: " + versionName + " is available!");
            alert.SetMessage(verionCodeOrBuildNumber);
            alert.SetButton("Ok", (sender, e) => {
                Distribute.NotifyUpdateAction(UpdateAction.Update);

                if (!releaseDetails.MandatoryUpdate)
                {
                    alert.SetButton2("Cancel", (sender1, e1) => {
                        Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                    });
                }
            });
            alert.SetCancelable(false);
            alert.Show();

            // Return true if you are using your own dialog
            // Return false otherwise
            return(true);
        }
Esempio n. 6
0
        public void SearchFromASINReturnsNoResults()
        {
            IKernel kernal         = new StandardKernel(new BindModule());
            var     amazonItemRepo = kernal.Get <IAmazonItemRepository>();
            var     itunesItemRepo = kernal.Get <IItunesItemRepository>();

            var resultsObj = new ReleaseDetails(amazonItemRepo, itunesItemRepo).GetReleaseDetailsFromASIN("sdasdasd");

            Assert.IsTrue(resultsObj.Items.Count == 0);
        }
Esempio n. 7
0
        public void SearchFromASINIsNotNull()
        {
            IKernel kernal         = new StandardKernel(new BindModule());
            var     amazonItemRepo = kernal.Get <IAmazonItemRepository>();
            var     itunesItemRepo = kernal.Get <IItunesItemRepository>();

            var resultsObj = new ReleaseDetails(amazonItemRepo, itunesItemRepo).GetReleaseDetailsFromASIN("B06XSS46GQ");

            Assert.IsNotNull(resultsObj);
        }
Esempio n. 8
0
        bool OnReleaseAvailable(ReleaseDetails releaseDetails)
        {
            var title = "Version " + releaseDetails.ShortVersion + " available!";
            var alert = UIAlertController.Create(title, releaseDetails.ReleaseNotes, UIAlertControllerStyle.Alert);

            alert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, x => Distribute.NotifyUpdateAction(UpdateAction.Update)));
            if (!releaseDetails.MandatoryUpdate)
            {
                alert.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, x => Distribute.NotifyUpdateAction(UpdateAction.Postpone)));
            }
            return(true);
        }
Esempio n. 9
0
        private bool OnReleaseAvailable(ReleaseDetails releaseDetails)
        {
            Analytics.TrackEvent("Release Available.");

            var info = GetUpdateDetail(releaseDetails);

            Analytics.TrackEvent(info);

            _updateService.Update = info;

            return(true);
        }
Esempio n. 10
0
        public static string GetUpdateDetail(ReleaseDetails info)
        {
            var sb = new StringBuilder();

            sb.AppendLine($"{nameof(info.Id)}: {info.Id}");
            sb.AppendLine($"{nameof(info.Version)}: {info.Version}");
            sb.AppendLine($"{nameof(info.ShortVersion)}: {info.ShortVersion}");
            sb.AppendLine($"{nameof(info.ReleaseNotes)}: {info.ReleaseNotes}");
            sb.AppendLine($"{nameof(info.ReleaseNotesUrl)}: {info.ReleaseNotesUrl}");
            sb.AppendLine($"{nameof(info.MandatoryUpdate)}: {info.MandatoryUpdate}");

            return(sb.ToString());
        }
Esempio n. 11
0
        bool OnReleaseAvailable(ReleaseDetails releaseDetails)
        {
            string versionName = releaseDetails.ShortVersion;
            string versionCodeOrBuildNumber = releaseDetails.Version;
            string releaseNotes             = releaseDetails.ReleaseNotes;
            Uri    releaseNotesUrl          = releaseDetails.ReleaseNotesUrl;

            // custom dialog
            var title = "Version " + versionName + " available!";

            if (releaseDetails.MandatoryUpdate)
            {
                Distribute.NotifyUpdateAction(UpdateAction.Update);
                return(true);
            }
            else
            {
                Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                return(false);
            }
        }
Esempio n. 12
0
        public List <ReleaseDetails> GetReleaseDetails(string projectName, string repositoryGuid)
        {
            List <ReleaseDetails> releases = new List <ReleaseDetails>();

            var commits = GetReleaseMergeCommits(repositoryGuid);
            var start   = commits.Max(x => x.end);
            var end     = DateTime.Now;

            var futureRelease = new ReleaseCommit(new Commit {
            }, "Future", start, end);

            commits.Add(futureRelease);

            commits.Reverse();

            foreach (var item in commits)
            {
                var release = new ReleaseDetails
                {
                    commit          = item,
                    workItems       = GetClosedWorkItems(projectName, item.start, item.end),
                    workItemDetails = new List <WorkItemDetails>()
                };

                var result = Parallel.ForEach(release.workItems,
                                              new ParallelOptions {
                    MaxDegreeOfParallelism = 5
                },
                                              x => release.workItemDetails.Add(GetWorkItem(x.url)));

                releases.Add(release);
            }

            // Revert back to descending order
            releases.Reverse();

            return(releases);
        }
Esempio n. 13
0
        public ReleaseDetails GetReleaseInfo(string name, string version)
        {
            var release = _queryProvider.SelectRelease(name, version);

            if (release != null)
            {
                var details = new ReleaseDetails
                {
                    Created                 = release.Created,
                    Description             = release.Description,
                    IconUrl                 = release.IconUrl,
                    IsAbsoluteLatestVersion = release.IsAbsoluteLatestVersion,
                    IsLatestVersion         = release.IsLatestVersion,
                    IsPrerelease            = release.IsPrerelease,
                    ReleaseNotes            = release.ReleaseNotes,
                    Name    = name,
                    Version = version
                };

                return(details);
            }
            return(null);
        }
Esempio n. 14
0
        public ReleaseDetails GetReleaseInfo(string name, string version)
        {
            var release = _queryProvider.SelectRelease(name, version);

            if (release != null)
            {
                var details = new ReleaseDetails
                    {
                        Created = release.Created,
                        Description = release.Description,
                        IconUrl = release.IconUrl,
                        IsAbsoluteLatestVersion = release.IsAbsoluteLatestVersion,
                        IsLatestVersion = release.IsLatestVersion,
                        IsPrerelease = release.IsPrerelease,
                        ReleaseNotes = release.ReleaseNotes,
                        Name = name,
                        Version = version
                    };

                return details;
            }
            return null;
        }
Esempio n. 15
0
        private static bool OnReleaseAvailable(ReleaseDetails releaseDetails)
        {
            // Get public properties for the new release
            var versionName = releaseDetails.ShortVersion;
            var versionCodeOrBuildNumber = releaseDetails.Version;
            var releaseNotes             = releaseDetails.ReleaseNotes;
            var releaseNotesUrl          = releaseDetails.ReleaseNotesUrl;

            if (string.IsNullOrWhiteSpace(releaseNotes))
            {
                releaseNotes = "A new version for this app is available.";
            }

            // custom dialog
            var  title = $"New version available {versionName} !";
            Task answer;

            answer = Application.Current.MainPage.DisplayAlert(title, releaseNotes, "Download and install now", "later");

            answer.ContinueWith((task) =>
            {
                // If mandatory or if answer was positive, then update the app
                if (releaseDetails.MandatoryUpdate || (task as Task <bool>).Result)
                {
                    Distribute.NotifyUpdateAction(UpdateAction.Update);
                }
                else
                {
                    // Postpone the update for 1 day.
                    // This method call is ignored by the SDK if the update is mandatory
                    Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                }
            });

            return(true);
        }