diff --git a/client/scripts/craft_client.gd b/client/scripts/craft_client.gd index e474e18..055b960 100644 --- a/client/scripts/craft_client.gd +++ b/client/scripts/craft_client.gd @@ -40,6 +40,7 @@ func request_craft(recipe_id: String, quantity: int = 1) -> bool: if rid.is_empty(): return false _current_recipe_id = rid + _busy = true var payload: Dictionary = { "schemaVersion": SCHEMA_VERSION, "recipeId": rid, @@ -49,10 +50,10 @@ func request_craft(recipe_id: String, quantity: int = 1) -> bool: var headers := PackedStringArray(["Content-Type: application/json"]) var err: Error = _http.request(url, headers, HTTPClient.METHOD_POST, JSON.stringify(payload)) if err != OK: + _busy = false _current_recipe_id = "" push_warning("CraftClient: POST failed to start (%s)" % err) return false - _busy = true return true diff --git a/client/scripts/recipe_definitions_client.gd b/client/scripts/recipe_definitions_client.gd index 7b20883..5de122c 100644 --- a/client/scripts/recipe_definitions_client.gd +++ b/client/scripts/recipe_definitions_client.gd @@ -41,20 +41,6 @@ func request_sync_from_server() -> void: recipes_sync_failed.emit(reason) -func recipes_snapshot() -> Array: - return _recipes.duplicate(true) - - -func recipe_by_id(recipe_id: String) -> Dictionary: - for row_variant in _recipes: - if not row_variant is Dictionary: - continue - var row: Dictionary = row_variant - if str(row.get("id", "")) == recipe_id: - return row.duplicate(true) - return {} - - func _base_root() -> String: return base_url.strip_edges().rstrip("/") diff --git a/client/test/craft_client_test.gd b/client/test/craft_client_test.gd index 03a2794..9f09c50 100644 --- a/client/test/craft_client_test.gd +++ b/client/test/craft_client_test.gd @@ -130,3 +130,15 @@ func test_http_error_emits_craft_request_failed() -> void: c.call("request_craft", "refine_scrap_standard") # Assert assert_that(_failed_reason).contains("404") + + +func test_request_craft_clears_busy_after_sync_mock_response() -> void: + # Arrange + var transport := MockHttpTransport.new() + transport.body_json = _success_craft_json() + var c := _make_client(transport) + # Act + var started: bool = bool(c.call("request_craft", "refine_scrap_standard", 1)) + # Assert + assert_that(started).is_true() + assert_that(bool(c.call("is_busy"))).is_false()