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:
@@ -33,6 +33,9 @@ public sealed partial class ListsIslandViewModel : ViewModelBase, IDisposable
|
|||||||
// mirrors TasksIslandViewModel.ErrorReported — surfaces modal-owned failures in the footer strip.
|
// mirrors TasksIslandViewModel.ErrorReported — surfaces modal-owned failures in the footer strip.
|
||||||
public event Action<string>? ErrorReported;
|
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; }
|
public IDialogService? Dialogs { get; set; }
|
||||||
|
|
||||||
[RelayCommand]
|
[RelayCommand]
|
||||||
@@ -528,10 +531,7 @@ public sealed partial class ListsIslandViewModel : ViewModelBase, IDisposable
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var result = await _worker.ImportTicketsAsync(rawId);
|
var result = await _worker.ImportTicketsAsync(rawId);
|
||||||
// No FlashFooterInfo variant exists in this project — the footer strip only has an
|
SuccessReported?.Invoke(Loc.T("lists.importTicketsResult", result.Examined, result.Created));
|
||||||
// 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));
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
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
|
// 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.
|
// 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}";
|
WorkerLogText = $"{DateTime.Now:HH:mm} · {message}";
|
||||||
WorkerLogLevel = WorkerLogLevel.Error;
|
WorkerLogLevel = level;
|
||||||
IsWorkerLogVisible = true;
|
IsWorkerLogVisible = true;
|
||||||
_clearTimer.Stop();
|
_clearTimer.Stop();
|
||||||
_clearTimer.Start();
|
_clearTimer.Start();
|
||||||
@@ -337,6 +344,7 @@ public sealed partial class IslandsShellViewModel : ViewModelBase, IDisposable
|
|||||||
Tasks.PrepRequested += () => Details.ShowPrep();
|
Tasks.PrepRequested += () => Details.ShowPrep();
|
||||||
Tasks.ErrorReported += FlashFooterError;
|
Tasks.ErrorReported += FlashFooterError;
|
||||||
Lists.ErrorReported += FlashFooterError;
|
Lists.ErrorReported += FlashFooterError;
|
||||||
|
Lists.SuccessReported += FlashFooterSuccess;
|
||||||
Tasks.OpenConPtySessionRequested += taskId =>
|
Tasks.OpenConPtySessionRequested += taskId =>
|
||||||
{
|
{
|
||||||
OpenMissionControl();
|
OpenMissionControl();
|
||||||
|
|||||||
Reference in New Issue
Block a user