set method

Future set(
  1. dynamic data, {
  2. bool log = true,
  3. bool keepData = true,
})

Implementation

Future set(var data, {bool log = true, bool keepData = true}) async {
  dynamic collectionData;
  if (!keepData) {
    collectionData = data;
  } else {
    collectionData = await _checkType(data);
    if (_isMap(data)) {
      collectionData ??= {};
      for (var key in data.keys) {
        collectionData[key] = data[key];
      }
    } else if (_isList(data)) {
      collectionData ??= [];
      for (var item in data) {
        if (!collectionData.contains(item)) collectionData.add(item);
      }
    } else {
      collectionData = data;
    }
  }

  if (log) {
    for (var streamId in storageListeners.getPathStreamIds(path)) {
      if (storageListeners.hasStreamId(path, streamId)) {
        storageListeners.setDate(path, streamId);
      }
    }
  }

  if (parent != null) {
    await parent!.set({collectionId: collectionData});
  } else {
    await storageDatabase.source.setData(
      collectionId,
      collectionData,
    );
  }
}