Example #1
0
 private void Initialize()
 {
     this.settings           = PluginUpdateNotifierSettings.LoadOrCreateSettings();
     this.versionInformation = VersionInformationProvider.Instance.VersionInformation;
     this.minSize            = windowSize;
     this.showAtStartup      = settings.ShowAtStartup;
 }
Example #2
0
        private void OnErrorGetVersionInformation(Exception error, Action <Exception> onError)
        {
            // データ取得エラーを示すためLatestVersionが空のVersionInformationを格納。
            VersionInformation = new VersionInformation(Config.CurrentVersion, "", "");

            if (onError != null)
            {
                onError(error);
            }
        }
Example #3
0
        public void CheckForLatestVersion(Action onComplete = null, Action <Exception> onError = null)
        {
            // Config.VersionInformationJsonUrlに記載されたUrlからJsonを取得し
            // 内容をVersionInformationに変換して利用する
            var request = UnityWebRequest.Get(Config.VersionInformationJsonUrl);

            request.EditorSendWebRequest(() =>
            {
                var json = request.downloadHandler.text;

                Dictionary <string, object> data = Json.Deserialize(json) as Dictionary <string, object>;

                // 有効なdataではない場合はエラー処理して終了。
                if (!IsValidData(data))
                {
                    OnErrorGetVersionInformation(new Exception("Invalid json object passed in."), onError);
                    return;
                }

                var latestVersion = data[Config.LatestVersionKey] as string;
                var downloadUrl   = data[Config.DownloadUrlKey] as string;

                var info = new VersionInformation(Config.CurrentVersion, latestVersion, downloadUrl);
                // Unavailableなら正しくないパラメータが与えられているので、エラー処理して終了。
                if (info.GetStatus() == VersionInformation.Status.Unavailable)
                {
                    OnErrorGetVersionInformation(new Exception("Invalid parameters passed in."), onError);
                    return;
                }

                // 入手したバージョン情報を格納。
                // 格納時にOnUpdateVersionInformationで通知が行われる。
                VersionInformation = info;

                // 全部終わったらonCompleteを発火。
                if (onComplete != null)
                {
                    onComplete();
                }
            }, (ex) => OnErrorGetVersionInformation(ex, onError));
        }
Example #4
0
        /// <summary>
        /// VersionInformation.LatestVersionが通知スキップ対象バージョンかどうかチェックする。trueならスキップ対象バージョン。
        /// </summary>
        /// <param name="settings"></param>
        /// <param name="versionInformation"></param>
        private static bool CheckIfSkipUpdate(PluginUpdateNotifierSettings settings, VersionInformation versionInformation)
        {
            // SkipVersionの値が空白の時はスキップしない。
            if (string.IsNullOrEmpty(settings.SkipVersion))
            {
                return(false);
            }

            // なんらかの理由でSkipVersionが不適切な値だった場合はスキップしない。
            if (!Utility.IsVersionString(settings.SkipVersion))
            {
                return(false);
            }

            System.Version skipVersion   = new System.Version(settings.SkipVersion);
            System.Version latestVersion = new System.Version(versionInformation.LatestVersion);
            // LatestVersionとSkipVersionが同一でないならスキップしない。
            if (skipVersion.CompareTo(latestVersion) != 0)
            {
                return(false);
            }

            return(true);
        }
Example #5
0
 private VersionInformationProvider()
 {
     // CheckForLatestVersionが呼び出される(データを取りに行く)まではとりあえずStatus.UpToDateをかえすVersionInformationを保持。
     VersionInformation = new VersionInformation(Config.CurrentVersion, Config.CurrentVersion, "");
 }
Example #6
0
 private void OnUpdateVersionInformation(VersionInformation versionInformation)
 {
     this.versionInformation = versionInformation;
     // VersionInformationが更新されたら再描画する。
     this.Repaint();
 }
Example #7
0
        /// <summary>
        /// Pluginの更新情報を通知するか(NotifyPluginUpdateWindowを開くかどうか)チェックするためのメソッド。trueは通知する。
        /// </summary>
        /// <returns></returns>
        private static bool CheckIfNotifyUpdateOnStartUp(PluginUpdateNotifierSettings settings, VersionInformation versionInformation)
        {
            // UpdateAvailableでない時は通知しない。
            if (versionInformation.GetStatus() != VersionInformation.Status.UpdateAvailable)
            {
                return(false);
            }

            // SettingsのShow At Startupがfalseなら通知しない。
            if (!settings.ShowAtStartup)
            {
                return(false);
            }

            // スキップ対象バージョンなら通知しない。
            if (CheckIfSkipUpdate(settings, versionInformation))
            {
                return(false);
            }

            return(true);
        }