upsert<TModel extends OfflineFirstWithRestModel> method

  1. @override
Future<TModel> upsert<TModel extends OfflineFirstWithRestModel>(
  1. TModel instance, {
  2. OfflineFirstUpsertPolicy policy = OfflineFirstUpsertPolicy.optimisticLocal,
  3. Query? query,
  4. bool throwOnReattemptStatusCodes = false,
})

throwOnReattemptStatusCodes - when true, the repository will throw an OfflineFirstException for responses that include a code within reattemptForStatusCodes. Defaults false.

Implementation

@override
Future<TModel> upsert<TModel extends OfflineFirstWithRestModel>(
  TModel instance, {
  OfflineFirstUpsertPolicy policy = OfflineFirstUpsertPolicy.optimisticLocal,
  Query? query,
  bool throwOnReattemptStatusCodes = false,
}) async {
  try {
    return await super.upsert<TModel>(instance, policy: policy, query: query);
  } on RestException catch (e) {
    logger.warning('#upsert rest failure: $e');
    // since we know we'll reattempt this request, an exception does not need to be reported
    if (policy == OfflineFirstUpsertPolicy.requireRemote) {
      throw OfflineFirstException(e);
    }

    return instance;
  }
}