updateLocationData method

void updateLocationData(
  1. EventMemberLocation locationData,
  2. String? atKey,
  3. String? fromAtSign
)

Updates event data with received locationData of fromAtSign

Implementation

void updateLocationData(EventMemberLocation locationData, String? atKey,
    String? fromAtSign) async {
  try {
    var eventId = locationData.key!.split('-')[1].split('@')[0];

    EventNotificationModel? presentEventData;

    for (var i = 0; i < allEventNotifications.length; i++) {
      if (allEventNotifications[i].key!.contains('createevent-$eventId')) {
        presentEventData = EventNotificationModel.fromJson(jsonDecode(
            EventNotificationModel.convertEventNotificationToJson(
                allEventNotifications[i].eventNotificationModel!)));
        // print(
        //     'presentEventData ${EventNotificationModel.convertEventNotificationToJson(presentEventData)}');
        break;
      }
    }

    if (presentEventData == null) {
      return;
    }

    for (var i = 0; i < presentEventData.group!.members!.length; i++) {
      var presentGroupMember = presentEventData.group!.members!.elementAt(i);
      if (presentGroupMember.atSign![0] != '@') {
        presentGroupMember.atSign = '@' + presentGroupMember.atSign!;
      }

      if (fromAtSign![0] != '@') fromAtSign = '@' + fromAtSign;

      if (presentGroupMember.atSign!.toLowerCase() ==
          fromAtSign.toLowerCase()) {
        presentGroupMember.tags!['lat'] = locationData.lat;
        presentGroupMember.tags!['long'] = locationData.long;

        break;
      }

      // print('presentGroupMember ${presentGroupMember.tags}');
    }

    presentEventData.isUpdate = true;

    var allAtsignList = <String?>[];
    presentEventData.group!.members!.forEach((element) {
      allAtsignList.add(element.atSign);
    });

    var notification = EventNotificationModel.convertEventNotificationToJson(
        presentEventData);

    var key = EventService().getAtKey(presentEventData.key!);

    var result = await atClientInstance!
        .put(key, notification, isDedicated: MixedConstants.isDedicated);

    key.sharedWith = jsonEncode(allAtsignList);

    await SyncSecondary().callSyncSecondary(
      SyncOperation.notifyAll,
      atKey: key,
      notification: notification,
      operation: OperationEnum.update,
      isDedicated: MixedConstants.isDedicated,
    );

    /// Dont sync as notifyAll is called

    if (result is bool && result) {
      mapUpdatedEventDataToWidget(presentEventData);
    }
  } catch (e) {
    print('error in event acknowledgement: $e');
  }
}