deleteDocument<T> method
Future<void>
deleteDocument<T>(
- DocumentReference<
T> ref, { - DeletePolicy deletePolicy = DeletePolicy.serverFirst,
Implementation
Future<void> deleteDocument<T>(
DocumentReference<T> ref, {
DeletePolicy deletePolicy = DeletePolicy.serverFirst,
}) async {
switch (deletePolicy) {
case DeletePolicy.serverFirst:
final snap =
await getDocument(ref, fetchPolicy: GetFetchPolicy.cacheOnly);
await ref.delete();
_updateFromSnap(snap.withValue(null));
break;
case DeletePolicy.cacheOnly:
final snap =
await getDocument(ref, fetchPolicy: GetFetchPolicy.cacheOnly);
_updateFromSnap(snap.withValue(null));
break;
case DeletePolicy.cacheAndServer:
final snap =
await getDocument(ref, fetchPolicy: GetFetchPolicy.cacheOnly);
_updateFromSnap(snap.withValue(null), isOptimistic: true);
try {
await ref.delete();
} catch (e) {
_rollbackOptimisticUpdate(snap);
rethrow;
}
}
}