private void Initialize() { this.settings = PluginUpdateNotifierSettings.LoadOrCreateSettings(); this.versionInformation = VersionInformationProvider.Instance.VersionInformation; this.minSize = windowSize; this.showAtStartup = settings.ShowAtStartup; }
private void OnErrorGetVersionInformation(Exception error, Action <Exception> onError) { // データ取得エラーを示すためLatestVersionが空のVersionInformationを格納。 VersionInformation = new VersionInformation(Config.CurrentVersion, "", ""); if (onError != null) { onError(error); } }
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)); }
/// <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); }
private VersionInformationProvider() { // CheckForLatestVersionが呼び出される(データを取りに行く)まではとりあえずStatus.UpToDateをかえすVersionInformationを保持。 VersionInformation = new VersionInformation(Config.CurrentVersion, Config.CurrentVersion, ""); }
private void OnUpdateVersionInformation(VersionInformation versionInformation) { this.versionInformation = versionInformation; // VersionInformationが更新されたら再描画する。 this.Repaint(); }
/// <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); }