Skip to content

Commit 0e65285

Browse files
committed
Updating receivers via notify
This enable immediate updates
1 parent 4d0afc3 commit 0e65285

File tree

4 files changed

+57
-71
lines changed

4 files changed

+57
-71
lines changed

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@
99
"mqtt",
1010
"mwcmanager",
1111
"ZARIOT"
12-
]
12+
],
13+
"cmake.configureOnOpen": false
1314
}

flutter/iot_receiver/lib/main.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ Future<AtClientPreference> loadAtClientPreference() async {
4242
..hiveStoragePath = dir.path
4343
..commitLogPath = dir.path
4444
..isLocalStoreRequired = true
45-
..syncIntervalMins = 1
46-
..fetchOfflineNotifications = true;
45+
//..syncIntervalMins = 1
46+
..fetchOfflineNotifications = false;
4747
}
4848

4949
class MyApp extends StatefulWidget {

flutter/iot_receiver/lib/services/hro2_data_service.dart

Lines changed: 52 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ class Hro2DataService {
2222
}
2323

2424
Future<bool> deleteAllForKey(String key) async {
25-
var atKeys =
26-
await AtClientManager.getInstance().atClient.getAtKeys(regex: key);
25+
var atKeys = await AtClientManager.getInstance().atClient.getAtKeys(regex: key);
2726
for (var atKey in atKeys) {
2827
await delete(atKey);
2928
}
@@ -41,9 +40,7 @@ class Hro2DataService {
4140

4241
Future<List<HrO2Device>> getDevices() async {
4342
List<HrO2Device> hrO2DeviceList = [];
44-
var keys = await AtClientManager.getInstance()
45-
.atClient
46-
.getAtKeys(regex: AppConstants.deviceKey);
43+
var keys = await AtClientManager.getInstance().atClient.getAtKeys(regex: AppConstants.deviceKey);
4744
_logger.info('getDevices keys ${keys.toString()}');
4845

4946
for (var element in keys) {
@@ -63,27 +60,29 @@ class Hro2DataService {
6360
}
6461

6562
Future<bool> putDevice(HrO2Device hrO2Device) async {
66-
AtKey atKey = AtKey()..key = AppConstants.deviceKey;
63+
Metadata metadata = Metadata()
64+
// ..ttl = 10000
65+
..ttr = -1;
66+
AtKey atKey = AtKey()
67+
..sharedWith = '@demopatient01'
68+
..metadata = metadata
69+
..key = AppConstants.deviceKey;
6770
var value = jsonEncode(hrO2Device);
68-
var response =
69-
await AtClientManager.getInstance().atClient.put(atKey, value);
71+
var response = await AtClientManager.getInstance().atClient.put(atKey, value);
7072
_logger.info('putDeviceList success = $response');
7173
return response;
7274
}
7375

7476
Future<bool> deleteDevice(HrO2Device hrO2Device) async {
7577
bool response = false;
76-
List<AtKey> keys = await AtClientManager.getInstance()
77-
.atClient
78-
.getAtKeys(regex: AppConstants.deviceKey);
78+
List<AtKey> keys = await AtClientManager.getInstance().atClient.getAtKeys(regex: AppConstants.deviceKey);
7979
_logger.info('deleteDevice processing ${keys.length} items');
8080
for (var key in keys) {
8181
AtValue data = await AtClientManager.getInstance().atClient.get(key);
8282
var atKeyString = jsonDecode(data.value);
8383
HrO2Device device = HrO2Device.fromJson(atKeyString);
8484
if (device.deviceAtsign == hrO2Device.deviceAtsign) {
85-
_logger.info(
86-
'deleteReceiver deleting ${hrO2Device.deviceAtsign}\'s entry');
85+
_logger.info('deleteReceiver deleting ${hrO2Device.deviceAtsign}\'s entry');
8786
response = await delete(key);
8887
}
8988
}
@@ -93,15 +92,12 @@ class Hro2DataService {
9392
Future<List<HrO2Receiver>> getReceivers() async {
9493
List<HrO2Receiver> hrO2ReceiverList = [];
9594
// var atClient = _atClient;
96-
var keys = await AtClientManager.getInstance()
97-
.atClient
98-
.getAtKeys(regex: AppConstants.receiverKey);
95+
var keys = await AtClientManager.getInstance().atClient.getAtKeys(regex: AppConstants.receiverKey);
9996
for (var element in keys) {
10097
var data = await AtClientManager.getInstance().atClient.get(element);
10198
_logger.info('getReceivers got ${data.value}');
10299
try {
103-
HrO2Receiver hrO2Receiver =
104-
HrO2Receiver.fromJson(jsonDecode(data.value));
100+
HrO2Receiver hrO2Receiver = HrO2Receiver.fromJson(jsonDecode(data.value));
105101
hrO2ReceiverList.add(hrO2Receiver);
106102
} catch (error) {
107103
// found some dirty data, consider deleting
@@ -122,8 +118,7 @@ class Hro2DataService {
122118
..metadata = metadata
123119
..key = AppConstants.receiverKey;
124120
var value = jsonEncode(hrO2Receiver);
125-
var success =
126-
await AtClientManager.getInstance().atClient.put(atKey, value);
121+
var success = await AtClientManager.getInstance().atClient.put(atKey, value);
127122
_logger.info('putReceiver success = $success');
128123
var receiverSuccess = await updateDeviceReceivers(hrO2Receiver.hrO2Device);
129124
return success && receiverSuccess;
@@ -132,17 +127,14 @@ class Hro2DataService {
132127
Future<bool> deleteReceiver(HrO2Receiver hrO2Receiver) async {
133128
bool deleteSuccess = false;
134129
bool deviceUpdated = false;
135-
List<AtKey> keys = await AtClientManager.getInstance()
136-
.atClient
137-
.getAtKeys(regex: AppConstants.receiverKey);
130+
List<AtKey> keys = await AtClientManager.getInstance().atClient.getAtKeys(regex: AppConstants.receiverKey);
138131
_logger.info('deleteReceiver processing ${keys.length} items');
139132
for (var key in keys) {
140133
AtValue data = await AtClientManager.getInstance().atClient.get(key);
141134
var atKeyString = jsonDecode(data.value);
142135
HrO2Receiver rec = HrO2Receiver.fromJson(atKeyString);
143136
if (rec.receiverAtsign == hrO2Receiver.receiverAtsign) {
144-
_logger.info(
145-
'deleteReceiver deleting ${hrO2Receiver.receiverAtsign}\'s entry');
137+
_logger.info('deleteReceiver deleting ${hrO2Receiver.receiverAtsign}\'s entry');
146138
deleteSuccess = await delete(key);
147139
deviceUpdated = await updateDeviceReceivers(hrO2Receiver.hrO2Device);
148140
}
@@ -152,16 +144,13 @@ class Hro2DataService {
152144

153145
Future<List<HrO2DataOwner>> getDataOwners() async {
154146
List<HrO2DataOwner> hrO2DataOwnerList = [];
155-
var keys = await AtClientManager.getInstance()
156-
.atClient
157-
.getAtKeys(regex: AppConstants.dataOwnerKey);
147+
var keys = await AtClientManager.getInstance().atClient.getAtKeys(regex: AppConstants.dataOwnerKey);
158148
_logger.info('getDataOwners keys $keys');
159149
for (var element in keys) {
160150
var data = await AtClientManager.getInstance().atClient.get(element);
161151
_logger.info('getDataOwners got ${data.value}');
162152
try {
163-
HrO2DataOwner hrO2DataOwner =
164-
HrO2DataOwner.fromJson(jsonDecode(data.value));
153+
HrO2DataOwner hrO2DataOwner = HrO2DataOwner.fromJson(jsonDecode(data.value));
165154
hrO2DataOwnerList.add(hrO2DataOwner);
166155
} catch (error) {
167156
// found some dirty data, consider deleting
@@ -181,30 +170,24 @@ class Hro2DataService {
181170
..sharedWith = hrO2DataOwner.dataOwnerAtsign
182171
..metadata = metadata
183172
..key = AppConstants.dataOwnerKey;
184-
var success = await AtClientManager.getInstance()
185-
.atClient
186-
.put(atKey, jsonEncode(hrO2DataOwner));
173+
var success = await AtClientManager.getInstance().atClient.put(atKey, jsonEncode(hrO2DataOwner));
187174
_logger.info('putDataOwner success = $success');
188-
var dataOwnerSuccess =
189-
await updateDeviceDataOwners(hrO2DataOwner.hrO2Device);
175+
var dataOwnerSuccess = await updateDeviceDataOwners(hrO2DataOwner.hrO2Device);
190176
_logger.info('putDataOwner updateDevice success = $dataOwnerSuccess');
191177
return success && dataOwnerSuccess;
192178
}
193179

194180
Future<bool> deleteDataOwner(HrO2DataOwner hrO2DataOwner) async {
195181
bool deleteSuccess = false;
196182
bool deviceUpdated = false;
197-
List<AtKey> keys = await AtClientManager.getInstance()
198-
.atClient
199-
.getAtKeys(regex: AppConstants.dataOwnerKey);
183+
List<AtKey> keys = await AtClientManager.getInstance().atClient.getAtKeys(regex: AppConstants.dataOwnerKey);
200184
_logger.info('deleteDataOwner processing ${keys.length} items');
201185
for (var key in keys) {
202186
AtValue data = await AtClientManager.getInstance().atClient.get(key);
203187
var atKeyString = jsonDecode(data.value);
204188
HrO2DataOwner owner = HrO2DataOwner.fromJson(atKeyString);
205189
if (owner.dataOwnerAtsign == hrO2DataOwner.dataOwnerAtsign) {
206-
_logger.info(
207-
'deleteDataOwner deleting ${hrO2DataOwner.dataOwnerAtsign}\'s entry');
190+
_logger.info('deleteDataOwner deleting ${hrO2DataOwner.dataOwnerAtsign}\'s entry');
208191
deleteSuccess = await delete(key);
209192
deviceUpdated = await updateDeviceDataOwners(hrO2DataOwner.hrO2Device);
210193
}
@@ -214,16 +197,12 @@ class Hro2DataService {
214197

215198
Future<List<HrO2DeviceOwner>> getDeviceOwners() async {
216199
List<HrO2DeviceOwner> hrO2DeviceOwnerList = [];
217-
var keys = await AtClientManager.getInstance()
218-
.atClient
219-
.getAtKeys(regex: AppConstants.deviceOwnerKey);
200+
var keys = await AtClientManager.getInstance().atClient.getAtKeys(regex: AppConstants.deviceOwnerKey);
220201
for (var element in keys) {
221-
var deviceOwnerData =
222-
await AtClientManager.getInstance().atClient.get(element);
202+
var deviceOwnerData = await AtClientManager.getInstance().atClient.get(element);
223203
_logger.info('getDeviceOwners got ${deviceOwnerData.value}');
224204
try {
225-
HrO2DeviceOwner hrO2DeviceOwner =
226-
HrO2DeviceOwner.fromJson(jsonDecode(deviceOwnerData.value));
205+
HrO2DeviceOwner hrO2DeviceOwner = HrO2DeviceOwner.fromJson(jsonDecode(deviceOwnerData.value));
227206
hrO2DeviceOwnerList.add(hrO2DeviceOwner);
228207
} catch (error) {
229208
// found some dirty data, consider deleting
@@ -242,18 +221,14 @@ class Hro2DataService {
242221
..key = AppConstants.deviceOwnerKey
243222
..metadata = metadata
244223
..sharedWith = hrO2DeviceOwner.deviceOwnerAtsign;
245-
var response = await AtClientManager.getInstance()
246-
.atClient
247-
.put(atKey, jsonEncode(hrO2DeviceOwner));
224+
var response = await AtClientManager.getInstance().atClient.put(atKey, jsonEncode(hrO2DeviceOwner));
248225
_logger.info('putDeviceOwner success = $response');
249226
return response;
250227
}
251228

252229
Future<bool> deleteDeviceOwner(HrO2DeviceOwner hrO2DeviceOwner) async {
253230
bool deleteSuccess = false;
254-
List<AtKey> keys = await AtClientManager.getInstance()
255-
.atClient
256-
.getAtKeys(regex: AppConstants.deviceOwnerKey);
231+
List<AtKey> keys = await AtClientManager.getInstance().atClient.getAtKeys(regex: AppConstants.deviceOwnerKey);
257232
_logger.info('deleteDeviceOwner processing ${keys.length} items');
258233
for (var key in keys) {
259234
AtValue data = await AtClientManager.getInstance().atClient.get(key);
@@ -270,21 +245,35 @@ class Hro2DataService {
270245

271246
Future<bool> updateDeviceReceivers(HrO2Device hrO2Device) async {
272247
// update the device list of recipients from HrO2Receiver objects
248+
bool success = false;
273249
Metadata metadata = Metadata()
274250
// ..ttl = 10000
251+
//..namespaceAware
275252
..ttr = -1;
276253
AtKey atKey = AtKey()
277254
..sharedWith = hrO2Device.deviceAtsign
278255
..metadata = metadata
279256
..key = AppConstants.receiverListKey;
280257
List<HrO2Receiver> receiverList = await getReceivers();
281-
var success = await AtClientManager.getInstance()
282-
.atClient
283-
.put(atKey, jsonEncode(receiverList));
284-
_logger.info('updateDeviceReceivers key = $atKey');
285-
_logger.info(
286-
'updateDeviceReceivers receiverList = ${jsonEncode(receiverList)}');
287-
_logger.info('updateDeviceReceivers success = $success');
258+
NotificationService notify = AtClientManager.getInstance().notificationService;
259+
try {
260+
await notify.notify(NotificationParams.forUpdate(atKey, value: jsonEncode(receiverList)),
261+
checkForFinalDeliveryStatus: false, onSuccess: (notification) {
262+
success = true;
263+
_logger.info('SUCCESS:$notification');
264+
}, onError: (notification) {
265+
_logger.info('ERROR:$notification');
266+
}, onSentToSecondary: (notification) {
267+
_logger.info('SENT:$notification');
268+
}, waitForFinalDeliveryStatus: false);
269+
} catch (e) {
270+
_logger.severe(e.toString());
271+
}
272+
// var success = await AtClientManager.getInstance().atClient.put(atKey, jsonEncode(receiverList));
273+
// _logger.info('updateDeviceReceivers key = $atKey');
274+
// _logger.info('updateDeviceReceivers receiverList = ${jsonEncode(receiverList)}');
275+
// _logger.info('updateDeviceReceivers success = $success');
276+
// AtClientManager.getInstance().syncService.sync();
288277
return success;
289278
}
290279

@@ -299,9 +288,7 @@ class Hro2DataService {
299288
..key = AppConstants.dataOwnerListKey;
300289
List<HrO2DataOwner> owners = await getDataOwners();
301290
_logger.info('updateDeviceDataOwners found = ${owners.toString()}');
302-
var success = await AtClientManager.getInstance()
303-
.atClient
304-
.put(atKey, jsonEncode(owners));
291+
var success = await AtClientManager.getInstance().atClient.put(atKey, jsonEncode(owners));
305292
_logger.info('updateDeviceDataOwners key = $atKey');
306293
_logger.info('updateDeviceDataOwners success = $success');
307294
return success;
@@ -315,10 +302,8 @@ class AppConstants {
315302
static const String deviceKey = 'device.$libraryNamespace';
316303
static const String deviceListKey = 'device_list.$libraryNamespace';
317304
static const String deviceOwnerKey = 'device_owner.$libraryNamespace';
318-
static const String deviceOwnerListKey =
319-
'device_owner_list.$libraryNamespace';
320-
static const String deviceDataOwnerKey =
321-
'device_data_owner.$libraryNamespace';
305+
static const String deviceOwnerListKey = 'device_owner_list.$libraryNamespace';
306+
static const String deviceDataOwnerKey = 'device_data_owner.$libraryNamespace';
322307
static const String deviceReceiverKey = 'device_receiver.$libraryNamespace';
323308
static const String receiverKey = 'receiver.$libraryNamespace';
324309
static const int responseTimeLimit = 30;

flutter/iot_receiver/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: A new Flutter project.
55
environment:
66
sdk: '>=2.15.1 <3.0.0'
77

8-
dependency_overrides:
8+
#dependency_overrides:
99
# biometric_storage: ^4.1.3
1010
# at_client:
1111
# git:

0 commit comments

Comments
 (0)