diff --git a/Sources/FirebaseFirestore/Firestore+Swift.swift b/Sources/FirebaseFirestore/Firestore+Swift.swift index f5970e7..2bcebf1 100644 --- a/Sources/FirebaseFirestore/Firestore+Swift.swift +++ b/Sources/FirebaseFirestore/Firestore+Swift.swift @@ -44,6 +44,24 @@ public class Firestore { } } + public func clearPersistence(completion: @escaping () -> Void) { + let future = swift_firebase.swift_cxx_shims.firebase.firestore.firestore_clear_persistence(impl) + future.setCompletion({ + DispatchQueue.main.async { + completion() + } + }) + } + + public func clearPersistence() async { + await withCheckedContinuation { continuation in + let future = swift_firebase.swift_cxx_shims.firebase.firestore.firestore_clear_persistence(impl) + future.setCompletion({ + continuation.resume() + }) + } + } + public func document(_ documentPath: String) -> DocumentReference { swift_firebase.swift_cxx_shims.firebase.firestore.firestore_document(impl, std.string(documentPath)) } diff --git a/Sources/firebase/include/FirebaseFirestore.hh b/Sources/firebase/include/FirebaseFirestore.hh index 6bfdade..c9115ea 100644 --- a/Sources/firebase/include/FirebaseFirestore.hh +++ b/Sources/firebase/include/FirebaseFirestore.hh @@ -26,6 +26,11 @@ firestore_set_settings(::firebase::firestore::Firestore *firestore, ::firebase:: return firestore->set_settings(settings); } +inline VoidFuture +firestore_clear_persistence(::firebase::firestore::Firestore *firestore) { + return VoidFuture::From(firestore->ClearPersistence()); +} + inline ::firebase::firestore::DocumentReference firestore_document(::firebase::firestore::Firestore *firestore, const ::std::string &document_path) {