setNew<DataT extends Data> method

Future<DataT?> setNew<DataT extends Data>(
  1. DataT? data, {
  2. Data? caller,
})

sets a new DataT

Implementation

Future<DataT?> setNew<DataT extends Data>(
  DataT? data, {
  Data? caller,
}) async {
  final requestType = Helper.SimulatedRequestType.PUT;
  try {
    (data as WithOffline).parentId = caller?.id ?? await rootID;
  } catch (e) {}
  if (data == null) return null;
  // data.id = null;
  return _run(
    itPrefersCache: (caller as WithOffline?)
        ?.forceOffline, // _dataPrefersCache(caller, type: requestType),
    offline: () => local.setNew(data, caller: caller),
    online: () => remote.setNew(data),
    onlineSuccessCB: (response) async {
      //toDo: etwas besser wäre das mit zu serialisieren und wenn der request bei retryFailedRequests später erfolgreich ist das auszuführen
      //aber unser hotfix wird sein beim erflogreichen retryFailedRequests alle lokalen daten zu entfernen (auch im die app-dateien-größe auf dauer kompakt zu halten)
      await deleteData(
        data.id,
        parentId: caller?.id ?? await API().rootID,
      );
    },
    onlineFailedCB: (DataT? data, rap) async {
      rap = remote.setNew<DataT>(data);
      await local.logFailedReq(rap.rd);
    },
    requestType: requestType,
  ).last;
}