refactor(tasks): route UI quick-add through TaskRepository.AddAsync
Drops the append-SortOrder query duplicated inline in TasksIslandViewModel.AddAsync; the repository (already used by MCP AddTask) is now the single home for the create+SortOrder invariant. Sets Status=Idle explicitly for parity.
This commit is contained in:
@@ -408,20 +408,15 @@ public sealed partial class TasksIslandViewModel : ViewModelBase, IDisposable
|
|||||||
if (string.IsNullOrWhiteSpace(NewTaskTitle) || _currentList?.Kind != ListKind.User) return;
|
if (string.IsNullOrWhiteSpace(NewTaskTitle) || _currentList?.Kind != ListKind.User) return;
|
||||||
var listId = _currentList.Id["user:".Length..];
|
var listId = _currentList.Id["user:".Length..];
|
||||||
await using var db = await _dbFactory.CreateDbContextAsync();
|
await using var db = await _dbFactory.CreateDbContextAsync();
|
||||||
var maxSort = await db.Tasks
|
|
||||||
.Where(t => t.ListId == listId)
|
|
||||||
.Select(t => (int?)t.SortOrder)
|
|
||||||
.MaxAsync();
|
|
||||||
var entity = new TaskEntity
|
var entity = new TaskEntity
|
||||||
{
|
{
|
||||||
Id = Guid.NewGuid().ToString("N"),
|
Id = Guid.NewGuid().ToString("N"),
|
||||||
ListId = listId,
|
ListId = listId,
|
||||||
Title = NewTaskTitle.Trim(),
|
Title = NewTaskTitle.Trim(),
|
||||||
|
Status = TaskStatus.Idle,
|
||||||
CreatedAt = DateTime.UtcNow,
|
CreatedAt = DateTime.UtcNow,
|
||||||
SortOrder = (maxSort ?? -1) + 1,
|
|
||||||
};
|
};
|
||||||
db.Tasks.Add(entity);
|
await new TaskRepository(db).AddAsync(entity);
|
||||||
await db.SaveChangesAsync();
|
|
||||||
var row = TaskRowViewModel.FromEntity(entity);
|
var row = TaskRowViewModel.FromEntity(entity);
|
||||||
row.ShowListChip = _currentList?.Kind == ListKind.Virtual;
|
row.ShowListChip = _currentList?.Kind == ListKind.Virtual;
|
||||||
Items.Add(row);
|
Items.Add(row);
|
||||||
|
|||||||
Reference in New Issue
Block a user