using C4IT.FASD.Base; using FasdDesktopUi.Basics.Models; using FasdDesktopUi.Basics.UiActions.NativeActions; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace FasdDesktopUi.Basics.UiActions { internal class UiNativeQuickAction : cUiQuickAction { private readonly string _nativeActionName; public UiNativeQuickAction(FasdNativeQuickAction quickActionConfig) : base(quickActionConfig) { _nativeActionName = quickActionConfig.NativeName; } public override Task GetQuickActionDataAsync(cSupportCaseDataProvider dataProvider, bool isDetailedLayout) { DataProvider = dataProvider; switch (_nativeActionName) { case RemoteConnectionAction.NativeActionName: return Task.FromResult(RemoteConnectionAction.GetQuickActionData(QuickActionConfig, ProcessActionAsync)); default: throw new NotImplementedException(); } } public override async Task> ProcessActionAsync(CancellationToken token, Dictionary parameterDictionary = null) { return await RunNativeAction(_nativeActionName, token); } private async Task> RunNativeAction(string actionName, CancellationToken token) { switch (actionName) { case RemoteConnectionAction.NativeActionName: return await RemoteConnectionAction.RunQuickAction(QuickActionConfig.Name, StatusMonitor, DataProvider?.NamedParameterEntries, token); default: throw new NotImplementedException(); } } } }