From b2cdd34cf8056b043e343af224baceea3316d34e Mon Sep 17 00:00:00 2001 From: Jeddunk Date: Wed, 24 Mar 2021 10:21:59 +0100 Subject: [PATCH] Fixed issue with "UNIQUE" appid in cache during initialization. Adjusted async code to new changes. --- GoldbergGUI.Core/Services/SteamService.cs | 28 ++++++++++---------- GoldbergGUI.Core/ViewModels/MainViewModel.cs | 6 ++--- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/GoldbergGUI.Core/Services/SteamService.cs b/GoldbergGUI.Core/Services/SteamService.cs index 8acb058..7b17e85 100644 --- a/GoldbergGUI.Core/Services/SteamService.cs +++ b/GoldbergGUI.Core/Services/SteamService.cs @@ -20,9 +20,9 @@ namespace GoldbergGUI.Core.Services public interface ISteamService { public Task Initialize(IMvxLog log); - public IEnumerable GetListOfAppsByName(string name); - public SteamApp GetAppByName(string name); - public SteamApp GetAppById(int appid); + public Task> GetListOfAppsByName(string name); + public Task GetAppByName(string name); + public Task GetAppById(int appid); public Task> GetListOfDlc(SteamApp steamApp, bool useSteamDb); } @@ -78,7 +78,6 @@ namespace GoldbergGUI.Core.Services private const string UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " + "Chrome/87.0.4280.88 Safari/537.36"; - private const string AppTypeGame = "game"; private const string AppTypeDlc = "dlc"; private const string Database = "steamapps.cache"; @@ -134,36 +133,37 @@ namespace GoldbergGUI.Core.Services cache.Add(steamApp); } - await _db.InsertAllAsync(cache).ConfigureAwait(false); + await _db.InsertAllAsync(cache, "OR IGNORE").ConfigureAwait(false); } } } - public IEnumerable GetListOfAppsByName(string name) + public async Task> GetListOfAppsByName(string name) { - var query = _db.Table() - .Where(x => x.type == AppTypeGame).ToListAsync().Result; + var query = await _db.Table() + .Where(x => x.type == AppTypeGame).ToListAsync().ConfigureAwait(false); var listOfAppsByName = query.Search(x => x.Name) .SetCulture(StringComparison.OrdinalIgnoreCase) .ContainingAll(name.Split(' ')); return listOfAppsByName; } - public SteamApp GetAppByName(string name) + public async Task GetAppByName(string name) { _log.Info($"Trying to get app {name}"); var comparableName = PrepareStringToCompare(name); - var app = _db.Table() - .FirstOrDefaultAsync(x => x.type == AppTypeGame && x.ComparableName.Equals(comparableName)).Result; + var app = await _db.Table() + .FirstOrDefaultAsync(x => x.type == AppTypeGame && x.ComparableName.Equals(comparableName)) + .ConfigureAwait(false); if (app != null) _log.Info($"Successfully got app {app}"); return app; } - public SteamApp GetAppById(int appid) + public async Task GetAppById(int appid) { _log.Info($"Trying to get app with ID {appid}"); - var app = _db.Table().Where(x => x.type == AppTypeGame) - .FirstOrDefaultAsync(x => x.AppId.Equals(appid)).Result; + var app = await _db.Table().Where(x => x.type == AppTypeGame) + .FirstOrDefaultAsync(x => x.AppId.Equals(appid)).ConfigureAwait(false); if (app != null) _log.Info($"Successfully got app {app}"); return app; } diff --git a/GoldbergGUI.Core/ViewModels/MainViewModel.cs b/GoldbergGUI.Core/ViewModels/MainViewModel.cs index ef36c1d..6f71093 100644 --- a/GoldbergGUI.Core/ViewModels/MainViewModel.cs +++ b/GoldbergGUI.Core/ViewModels/MainViewModel.cs @@ -321,7 +321,7 @@ namespace GoldbergGUI.Core.ViewModels MainWindowEnabled = false; StatusText = "Trying to find AppID..."; - var appByName = _steam.GetAppByName(_gameName); + var appByName = await _steam.GetAppByName(_gameName).ConfigureAwait(false); if (appByName != null) { GameName = appByName.Name; @@ -329,7 +329,7 @@ namespace GoldbergGUI.Core.ViewModels } else { - var list = _steam.GetListOfAppsByName(GameName); + var list = await _steam.GetListOfAppsByName(GameName).ConfigureAwait(false); var steamApps = list as SteamApp[] ?? list.ToArray(); if (steamApps.Length == 1) { @@ -364,7 +364,7 @@ namespace GoldbergGUI.Core.ViewModels return; } - var steamApp = await Task.Run(() => _steam.GetAppById(AppId)).ConfigureAwait(false); + var steamApp = await _steam.GetAppById(AppId).ConfigureAwait(false); if (steamApp != null) GameName = steamApp.Name; }