• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Duit-Foundation / duit_kernel / 20897307069

11 Jan 2026 03:13PM UTC coverage: 75.211% (-1.5%) from 76.681%
20897307069

push

github

web-flow
feat: Migration to capability-based API pt3 (#52)

* feat: Add scripting and transport capabilities

* Introduced ScriptingCapabilityDelegate with methods for script evaluation and execution.
* Added TransportCapabilityDelegate for server communication and resource management.
* Updated index.dart to export new capabilities.
* Enhanced UIDriver to include new capability delegates.

* wip

* wip

* wip

* refactor: Update logging methods for consistency

* Replaced instances of `driver.error` with `driver.logError` for improved logging consistency.
* Updated logging method names in `LoggingManager` and `LoggingCapabilityDelegate` to include the `log` prefix.
* Adjusted logging calls in `DuitRegistry` to reflect the new method names.

* wip

3 of 66 new or added lines in 9 files covered. (4.55%)

2 existing lines in 2 files now uncovered.

1781 of 2368 relevant lines covered (75.21%)

4.88 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/lib/src/action_api/event_resolver.dart
1
import "dart:async";
2

3
import "package:duit_kernel/duit_kernel.dart";
4
import "package:flutter/material.dart" show BuildContext;
5

6
abstract class EventResolver {
7
  final UIDriver driver;
8
  @Deprecated("Use [LoggingCapabilityDelegate] instead")
9
  final DebugLogger? logger;
10

11
  EventResolver({
×
12
    required this.driver,
13
    this.logger,
14
  });
15

16
  Future<void> resolveEvent(BuildContext context, eventData);
17
}
18

19
final class DefaultEventResolver extends EventResolver {
20
  DefaultEventResolver({
×
21
    required super.driver,
22
    super.logger,
23
  });
24

25
  @override
×
26
  Future<void> resolveEvent(BuildContext context, eventData) async {
27
    ServerEvent event;
28

29
    if (eventData is ServerEvent) {
×
30
      event = eventData;
31
    } else {
32
      event = ServerEvent.parseEvent(eventData);
×
33
    }
34

35
    try {
36
      switch (event) {
UNCOV
37
        case UpdateEvent():
×
38
          event.updates.forEach((key, value) async {
×
39
            await driver.updateAttributes(key, value);
×
40
          });
41
          break;
42
        case NavigationEvent():
×
43
          assert(
44
            driver.externalEventHandler != null,
×
45
            "ExternalEventHandler instance is not set",
46
          );
47
          if (driver.externalEventHandler != null) {
×
NEW
48
            driver.logError("ExternalEventHandler instance is not set");
×
49
            throw StateError("ExternalEventHandler instance is not set");
×
50
          }
51
          await driver.externalEventHandler?.handleNavigation(
×
52
            context,
53
            event.path,
×
54
            event.extra,
×
55
          );
56
          break;
57
        case OpenUrlEvent():
×
58
          if (driver.externalEventHandler != null) {
×
NEW
59
            driver.logError("ExternalEventHandler instance is not set");
×
60
            throw StateError("ExternalEventHandler instance is not set");
×
61
          }
62
          await driver.externalEventHandler?.handleOpenUrl(event.url);
×
63
          break;
64
        case CustomEvent():
×
65
          if (driver.isModule) {
×
66
            await driver.driverChannel
×
67
                ?.invokeMethod<Map<String, dynamic>>(event.key, event.extra);
×
68
          } else {
69
            await driver.externalEventHandler?.handleCustomEvent(
×
70
              context,
71
              event.key,
×
72
              event.extra,
×
73
            );
74
          }
75
          break;
76
        case SequencedEventGroup():
×
77
          for (final entry in event.events) {
×
78
            if (context.mounted) {
×
79
              await resolveEvent(context, entry.event);
×
80
              await Future.delayed(entry.delay);
×
81
            }
82
          }
83
          break;
84
        case CommonEventGroup():
×
85
          for (final entry in event.events) {
×
86
            await resolveEvent(context, entry.event);
×
87
          }
88
          break;
89
        case CommandEvent():
×
90
          final c = driver.getController(event.command.controllerId);
×
91
          await c?.emitCommand(event.command);
×
92
          break;
93
        case TimerEvent():
×
94
          final evt = event;
95
          Future.delayed(
×
96
            evt.timerDelay,
×
97
            () async {
×
98
              if (context.mounted) {
×
99
                await resolveEvent(context, evt.payload);
×
100
              }
101
            },
102
          );
103
          break;
104
        default:
105
          break;
106
      }
107
    } catch (e, s) {
NEW
108
      driver.logError(
×
109
        "Error while resolving ${event.type} event",
×
110
        e,
111
        s,
112
      );
113
    }
114
  }
115
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc