setNew<DataT extends Data> method
- DataT? data, {
- 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;
}