fix(ui): Import-Erfolgsmeldung nicht mehr als Fehler einfaerben

Der Footer-Strip trug schon immer ein Level, es gab nur keinen
Einstiegspunkt jenseits von FlashFooterError. "3 neue Tasks" in Rot
liest sich als Fehlschlag.
This commit is contained in:
mika kuns
2026-08-27 13:41:03 +02:00
parent fb1ceac192
commit 2fe2ac83b1
2 changed files with 14 additions and 6 deletions
@@ -33,6 +33,9 @@ public sealed partial class ListsIslandViewModel : ViewModelBase, IDisposable
// mirrors TasksIslandViewModel.ErrorReported — surfaces modal-owned failures in the footer strip.
public event Action<string>? ErrorReported;
// Same strip, but for an action that succeeded and has a result worth showing.
public event Action<string>? SuccessReported;
public IDialogService? Dialogs { get; set; }
[RelayCommand]
@@ -528,10 +531,7 @@ public sealed partial class ListsIslandViewModel : ViewModelBase, IDisposable
try
{
var result = await _worker.ImportTicketsAsync(rawId);
// No FlashFooterInfo variant exists in this project — the footer strip only has an
// error channel (ErrorReported -> IslandsShellViewModel.FlashFooterError). A silent
// success is the worse option, so the result reuses the same channel.
ErrorReported?.Invoke(Loc.T("lists.importTicketsResult", result.Examined, result.Created));
SuccessReported?.Invoke(Loc.T("lists.importTicketsResult", result.Examined, result.Created));
}
catch (Exception ex)
{
@@ -190,10 +190,17 @@ public sealed partial class IslandsShellViewModel : ViewModelBase, IDisposable
// Surfaces a UI-originated failure in the footer status strip (same line as the
// worker log), color-coded as an error and auto-cleared by _clearTimer.
public void FlashFooterError(string message)
public void FlashFooterError(string message) => FlashFooter(message, WorkerLogLevel.Error);
// Same strip, for an action that succeeded and has something to report ("3 new tasks").
// The strip has always carried a level — routing a success through FlashFooterError would
// paint a good outcome red, which reads as a failure.
public void FlashFooterSuccess(string message) => FlashFooter(message, WorkerLogLevel.Success);
private void FlashFooter(string message, WorkerLogLevel level)
{
WorkerLogText = $"{DateTime.Now:HH:mm} · {message}";
WorkerLogLevel = WorkerLogLevel.Error;
WorkerLogLevel = level;
IsWorkerLogVisible = true;
_clearTimer.Stop();
_clearTimer.Start();
@@ -337,6 +344,7 @@ public sealed partial class IslandsShellViewModel : ViewModelBase, IDisposable
Tasks.PrepRequested += () => Details.ShowPrep();
Tasks.ErrorReported += FlashFooterError;
Lists.ErrorReported += FlashFooterError;
Lists.SuccessReported += FlashFooterSuccess;
Tasks.OpenConPtySessionRequested += taskId =>
{
OpenMissionControl();