49 lines
No EOL
1.5 KiB
C#
49 lines
No EOL
1.5 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using LANCommander.SDK.Abstractions;
|
|
using LANCommander.Steam.Abstractions;
|
|
using LANCommander.Steam.Models;
|
|
|
|
namespace LANCommander.SDK.Providers;
|
|
|
|
public class SteamCmdProfileStore(ISettingsProvider settingsProvider) : ISteamCmdProfileStore
|
|
{
|
|
public async Task<IEnumerable<SteamCmdProfile>> GetAllAsync()
|
|
=> settingsProvider.CurrentValue.Steam.Profiles;
|
|
|
|
public async Task<SteamCmdProfile?> GetByUsernameAsync(string username)
|
|
=> settingsProvider.CurrentValue.Steam.Profiles.FirstOrDefault(p => p.Username == username);
|
|
|
|
public async Task SaveAsync(SteamCmdProfile profile)
|
|
{
|
|
settingsProvider.Update(s =>
|
|
{
|
|
var existing = s.Steam.Profiles.FirstOrDefault(p => p.Username == profile.Username);
|
|
|
|
if (existing != null)
|
|
{
|
|
// Update existing profile
|
|
existing.InstallDirectory = profile.InstallDirectory;
|
|
}
|
|
else
|
|
{
|
|
// Add new profile
|
|
s.Steam.Profiles.Add(profile);
|
|
}
|
|
});
|
|
}
|
|
|
|
public async Task DeleteAsync(string username)
|
|
{
|
|
settingsProvider.Update(s =>
|
|
{
|
|
var existing = s.Steam.Profiles.FirstOrDefault(p => p.Username == username);
|
|
|
|
if (existing != null)
|
|
{
|
|
s.Steam.Profiles.Remove(existing);
|
|
}
|
|
});
|
|
}
|
|
} |