feat(ui): repo-import modal — remember folders, search, compact rows, no auto-select

This commit is contained in:
mika kuns
2026-05-29 16:29:22 +02:00
parent bb8b3e235a
commit 6d0973c67c
10 changed files with 181 additions and 26 deletions

View File

@@ -1,3 +1,4 @@
using System.Text.Json;
using ClaudeDo.Data.Models;
using Microsoft.EntityFrameworkCore;
@@ -45,4 +46,31 @@ public sealed class AppSettingsRepository
await _context.SaveChangesAsync(ct);
}
public async Task<List<string>> GetRepoImportFoldersAsync(CancellationToken ct = default)
{
var json = await _context.AppSettings.AsNoTracking()
.Where(s => s.Id == AppSettingsEntity.SingletonId)
.Select(s => s.RepoImportFolders)
.FirstOrDefaultAsync(ct);
if (string.IsNullOrWhiteSpace(json)) return new List<string>();
try { return JsonSerializer.Deserialize<List<string>>(json) ?? new List<string>(); }
catch (JsonException) { return new List<string>(); }
}
public async Task SetRepoImportFoldersAsync(IEnumerable<string> folders, CancellationToken ct = default)
{
var list = folders.ToList();
var row = await _context.AppSettings
.FirstOrDefaultAsync(s => s.Id == AppSettingsEntity.SingletonId, ct);
if (row is null)
{
row = new AppSettingsEntity { Id = AppSettingsEntity.SingletonId };
_context.AppSettings.Add(row);
}
row.RepoImportFolders = list.Count == 0 ? null : JsonSerializer.Serialize(list);
await _context.SaveChangesAsync(ct);
}
}