From 2067fd6976397a22da21ad127098cd5940a7c840 Mon Sep 17 00:00:00 2001 From: Jason Zeederberg Date: Sun, 24 Sep 2023 18:13:57 +0200 Subject: [PATCH] prevent hanging await and return relative value --- .../firestore/firestore_task.gd | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/addons/godot-firebase/firestore/firestore_task.gd b/addons/godot-firebase/firestore/firestore_task.gd index 3fe53a4..def0736 100644 --- a/addons/godot-firebase/firestore/firestore_task.gd +++ b/addons/godot-firebase/firestore/firestore_task.gd @@ -24,22 +24,22 @@ extends RefCounted ## Emitted when a request is completed. The request can be successful or not successful: if not, an [code]error[/code] Dictionary will be passed as a result. ## @arg-types Variant signal task_finished(task) -## Emitted when a [code]add(document)[/code] request checked a [class FirebaseCollection] is successfully completed. [code]error()[/code] signal will be emitted otherwise. +## Emitted when a [code]add(document)[/code] request checked a [class FirebaseCollection] is successfully completed. [code]error()[/code] signal will be emitted otherwise and [code]null[/code] will be passed as a result.. ## @arg-types FirestoreDocument signal add_document(doc) -## Emitted when a [code]get(document)[/code] request checked a [class FirebaseCollection] is successfully completed. [code]error()[/code] signal will be emitted otherwise. +## Emitted when a [code]get(document)[/code] request checked a [class FirebaseCollection] is successfully completed. [code]error()[/code] signal will be emitted otherwise and [code]null[/code] will be passed as a result. ## @arg-types FirestoreDocument signal get_document(doc) -## Emitted when a [code]update(document)[/code] request checked a [class FirebaseCollection] is successfully completed. [code]error()[/code] signal will be emitted otherwise. +## Emitted when a [code]update(document)[/code] request checked a [class FirebaseCollection] is successfully completed. [code]error()[/code] signal will be emitted otherwise and [code]null[/code] will be passed as a result. ## @arg-types FirestoreDocument signal update_document(doc) -## Emitted when a [code]delete(document)[/code] request checked a [class FirebaseCollection] is successfully completed. [code]error()[/code] signal will be emitted otherwise. -## @arg-types FirestoreDocument -signal delete_document() -## Emitted when a [code]list(collection_id)[/code] request checked [class FirebaseFirestore] is successfully completed. [code]error()[/code] signal will be emitted otherwise. +## Emitted when a [code]delete(document)[/code] request checked a [class FirebaseCollection] is successfully completed and [code]true[/code] will be passed. [code]error()[/code] signal will be emitted otherwise and [code]false[/code] will be passed as a result. +## @arg-types bool +signal delete_document(success) +## Emitted when a [code]list(collection_id)[/code] request checked [class FirebaseFirestore] is successfully completed. [code]error()[/code] signal will be emitted otherwise and [code][][/code] will be passed as a result.. ## @arg-types Array signal listed_documents(documents) -## Emitted when a [code]query(collection_id)[/code] request checked [class FirebaseFirestore] is successfully completed. [code]error()[/code] signal will be emitted otherwise. +## Emitted when a [code]query(collection_id)[/code] request checked [class FirebaseFirestore] is successfully completed. [code]error()[/code] signal will be emitted otherwise and [code][][/code] will be passed as a result. ## @arg-types Array signal result_query(result) ## Emitted when a request is [b]not[/b] successfully completed. @@ -98,7 +98,7 @@ func _on_request_completed(result : int, response_code : int, headers : PackedSt document = FirestoreDocument.new(bod) update_document.emit(document) Task.TASK_DELETE: - delete_document.emit() + delete_document.emit(true) Task.TASK_QUERY: data = [] for doc in bod: @@ -116,6 +116,21 @@ func _on_request_completed(result : int, response_code : int, headers : PackedSt else: Firebase._printerr("Action in error was: " + str(action)) emit_error(task_error, bod, action) + match action: + Task.TASK_POST: + add_document.emit(null) + Task.TASK_GET: + get_document.emit(null) + Task.TASK_PATCH: + update_document.emit(null) + Task.TASK_DELETE: + delete_document.emit(false) + Task.TASK_QUERY: + data = [] + result_query.emit(data) + Task.TASK_LIST: + data = [] + listed_documents.emit(data) task_finished.emit(self)