diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 0fe0ecd..6bc39a4 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -7,15 +7,21 @@
-
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
> getTags() => throw UnimplementedError();
+ Future> getTags() async {
+ final list = await tagClient.getTags();
+ return list.map((j) => Tag.fromJson(j as Map)).toList();
+ }
@override
- Future getTag(String id) => throw UnimplementedError();
+ Future getTag(int id) async =>
+ Tag.fromJson(await tagClient.getTag(id));
@override
- Future createTag({required String id, required String name}) =>
- throw UnimplementedError();
+ Future createTag({required String tag_id, required String name}) async =>
+ Tag.fromJson(await tagClient.createTag({'tag_id': tag_id, 'name': name}));
@override
- Future updateTag(String id, {String? name}) => throw UnimplementedError();
+ Future updateTag(int id, {String? name}) async {
+ final params = {};
+ if (name != null) params['name'] = name;
+ return Tag.fromJson(await tagClient.updateTag(id, params));
+ }
@override
- Future deleteTag(String id) => throw UnimplementedError();
+ Future deleteTag(int id) => tagClient.deleteTag(id);
@override
- Stream> watchPositions() => throw UnimplementedError();
+ Stream> watchPositions() =>
+ realtime.channel('tags').map((payload) {
+ final list = payload['positions'] as List? ?? [];
+ return list.map((j) {
+ final m = j as Map;
+ return TagPosition(
+ tagId: m['tag_id'] as String,
+ name: m['name'] as String,
+ color: m['color'] as String,
+ roomId: m['room_id'] as int?,
+ );
+ }).toList();
+ });
@override
- Stream> watchParticleCloud() => throw UnimplementedError();
+ Stream> watchParticleCloud() =>
+ realtime.channel('localiserd').map((payload) {
+ final list = payload['particles'] as List? ?? [];
+ return list
+ .map((j) => Particle.fromJson(j as Map))
+ .toList();
+ });
+
+ @override
+ Stream