Skip to content

Commit 68f593b

Browse files
authored
[RSDK-9281] Add native type return to Flutter SDK DiscoverComponents (#299)
* Add native type return * Add unwrapper * Improve naming * Revert unwrapper
1 parent b2bc45c commit 68f593b

File tree

1 file changed

+30
-2
lines changed

1 file changed

+30
-2
lines changed

lib/src/robot/client.dart

+30-2
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,33 @@ class DiscoveryQuery {
6666
Struct get extraStruct => extra.toStruct();
6767
}
6868

69+
/// {@category Viam SDK}
70+
/// Represents the result of a discovery query.
71+
class Discovery {
72+
final String subtype;
73+
final String model;
74+
final Map<String, dynamic> results;
75+
76+
Discovery({
77+
required this.subtype,
78+
required this.model,
79+
required this.results,
80+
});
81+
82+
factory Discovery.fromProto(rpb.Discovery proto) {
83+
return Discovery(
84+
subtype: proto.query.subtype,
85+
model: proto.query.model,
86+
results: proto.results.toMap(),
87+
);
88+
}
89+
90+
@override
91+
String toString() {
92+
return 'Discovery(subtype: $subtype, model: $model, results: $results)';
93+
}
94+
}
95+
6996
/// {@category Viam SDK}
7097
/// gRPC client for a Robot. This class should be used for all interactions with a robot.
7198
///
@@ -287,13 +314,14 @@ class RobotClient {
287314
/// var queries = [DiscoveryQuery(subtype: 'camera', model: 'webcam', extra: {'username': 'admin', 'password': 'admin'})];
288315
/// var discoveredComponents = await machine.discoverComponents(queries);
289316
/// ```
290-
Future<rpb.DiscoverComponentsResponse> discoverComponents([List<DiscoveryQuery> queries = const []]) async {
317+
Future<List<Discovery>> discoverComponents([List<DiscoveryQuery> queries = const []]) async {
291318
final request = rpb.DiscoverComponentsRequest()
292319
..queries.addAll(queries.map((sdkQuery) => rpb.DiscoveryQuery()
293320
..subtype = sdkQuery.subtype
294321
..model = sdkQuery.model
295322
..extra = sdkQuery.extraStruct));
296323

297-
return await _client.discoverComponents(request);
324+
final response = await _client.discoverComponents(request);
325+
return response.discovery.map((d) => Discovery.fromProto(d)).toList();
298326
}
299327
}

0 commit comments

Comments
 (0)