save method
Future<T>
save(
- T model, {
- bool? remote,
- Map<
String, dynamic> ? params, - Map<
String, String> ? headers, - OnSuccessOne<
T> ? onSuccess, - OnErrorOne<
T> ? onError, - DataRequestLabel? label,
inherited
Implementation
Future<T> save(
T model, {
bool? remote,
Map<String, dynamic>? params,
Map<String, String>? headers,
OnSuccessOne<T>? onSuccess,
OnErrorOne<T>? onError,
DataRequestLabel? label,
}) async {
remote ??= _remote;
params = await defaultParams & params;
headers = await defaultHeaders & headers;
// ensure model is saved
await localAdapter.save(model._key!, model);
label = DataRequestLabel('save',
type: internalType,
id: model.id?.toString(),
model: model,
withParent: label);
if (remote == false) {
log(label, 'saved in local storage only');
return model;
}
final serialized = await serialize(model);
final body = json.encode(serialized);
final uri = baseUrl.asUri / urlForSave(model.id, params) & params;
final method = methodForSave(model.id, params);
final result = await sendRequest<T>(
uri,
method: method,
headers: headers,
body: body,
label: label,
onSuccess: (data, label) {
onSuccess ??= (data, label, _) => this.onSuccess<T>(data, label);
return onSuccess!.call(data, label, this as RemoteAdapter<T>);
},
onError: (e, label) async {
onError ??= (e, label, _) => this.onError<T>(e, label);
return onError!.call(e, label, this as RemoteAdapter<T>);
},
);
return result ?? model;
}