public async ValueTask <UpdateInfo> CheckAsync() { if (_cachedInfo != null) { return(_cachedInfo); } try { CheckStatusChanged?.Invoke(CheckUpdateStatus.Checking); var json = await _client.GetByteArrayAsync(CHECK_UPDATE_URL); var info = JsonSerializer.Deserialize <UpdateInfo>(json); if (HasNewVersion(info.Version)) { CheckStatusChanged?.Invoke(CheckUpdateStatus.UpdateAvailable); _cachedInfo = info; return(info); } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); CheckStatusChanged?.Invoke(CheckUpdateStatus.CheckFailed); return(null); } CheckStatusChanged?.Invoke(CheckUpdateStatus.UpToDate); return(null); }
public async ValueTask <UpdateInfo> CheckAsync() { if (_cachedInfo != null) { return(_cachedInfo); } _logService.Info(nameof(UpdateService), "Checking launcher update"); try { CheckStatusChanged?.Invoke(CheckUpdateStatus.Checking); byte[] json = await _client.GetByteArrayAsync(CHECK_UPDATE_URL); var info = JsonSerializer.Deserialize <UpdateInfo>(json); if (HasNewVersion(info.Version)) { _logService.Info(nameof(UpdateService), $"New update available. Version: {info.Version}"); CheckStatusChanged?.Invoke(CheckUpdateStatus.UpdateAvailable); _cachedInfo = info; return(info); } } catch (Exception ex) { _logService.Error(nameof(UpdateService), $"Failed to check update.\n{ex.Message}"); CheckStatusChanged?.Invoke(CheckUpdateStatus.CheckFailed); return(null); } _logService.Info(nameof(UpdateService), "Launcher is up to date"); CheckStatusChanged?.Invoke(CheckUpdateStatus.UpToDate); return(null); }