From 5c720b5be18f8d8a9e8668da9706a1c718b0a8df Mon Sep 17 00:00:00 2001 From: Robin Genz Date: Wed, 18 Oct 2023 12:07:28 +0200 Subject: [PATCH] fix(firestore): `NullPointerException` in `getDocument(...)` on Android (#471) --- .changeset/tame-parents-burn.md | 5 +++++ .../plugins/firebase/firestore/FirebaseFirestore.java | 8 ++------ .../firestore/classes/results/GetDocumentResult.java | 8 +++++++- 3 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 .changeset/tame-parents-burn.md diff --git a/.changeset/tame-parents-burn.md b/.changeset/tame-parents-burn.md new file mode 100644 index 00000000..de27fd4b --- /dev/null +++ b/.changeset/tame-parents-burn.md @@ -0,0 +1,5 @@ +--- +'@capacitor-firebase/firestore': patch +--- + +fix(android): `NullPointerException` in `getDocument(...)` diff --git a/packages/firestore/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/firestore/FirebaseFirestore.java b/packages/firestore/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/firestore/FirebaseFirestore.java index 7778e889..f91d761c 100644 --- a/packages/firestore/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/firestore/FirebaseFirestore.java +++ b/packages/firestore/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/firestore/FirebaseFirestore.java @@ -77,12 +77,8 @@ public void getDocument(@NonNull GetDocumentOptions options, @NonNull NonEmptyRe .get() .addOnSuccessListener( documentSnapshot -> { - if (documentSnapshot.exists()) { - GetDocumentResult result = new GetDocumentResult(documentSnapshot); - callback.success(result); - } else { - callback.success(null); - } + GetDocumentResult result = new GetDocumentResult(documentSnapshot); + callback.success(result); } ) .addOnFailureListener(exception -> callback.error(exception)); diff --git a/packages/firestore/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/firestore/classes/results/GetDocumentResult.java b/packages/firestore/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/firestore/classes/results/GetDocumentResult.java index e06ecaca..90acffcd 100644 --- a/packages/firestore/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/firestore/classes/results/GetDocumentResult.java +++ b/packages/firestore/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/firestore/classes/results/GetDocumentResult.java @@ -4,6 +4,7 @@ import com.google.firebase.firestore.DocumentSnapshot; import io.capawesome.capacitorjs.plugins.firebase.firestore.FirebaseFirestoreHelper; import io.capawesome.capacitorjs.plugins.firebase.firestore.interfaces.Result; +import org.json.JSONObject; public class GetDocumentResult implements Result { @@ -14,7 +15,12 @@ public GetDocumentResult(DocumentSnapshot documentSnapshot) { } public JSObject toJSObject() { - JSObject snapshotDataResult = FirebaseFirestoreHelper.createJSObjectFromMap(documentSnapshot.getData()); + Object snapshotDataResult; + if (documentSnapshot.exists()) { + snapshotDataResult = FirebaseFirestoreHelper.createJSObjectFromMap(documentSnapshot.getData()); + } else { + snapshotDataResult = JSONObject.NULL; + } JSObject snapshotResult = new JSObject(); snapshotResult.put("id", documentSnapshot.getId());