Deploy browser pre-alpha
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
extends RefCounted
|
||||
|
||||
|
||||
static func resolve(native_url: String, same_origin_path: String) -> String:
|
||||
if not OS.has_feature("web"):
|
||||
return native_url
|
||||
var browser_origin: Variant = JavaScriptBridge.eval("window.location.origin", true)
|
||||
var origin := str(browser_origin).strip_edges().rstrip("/")
|
||||
if origin.is_empty() or not origin.begins_with("http"):
|
||||
return native_url
|
||||
return "%s/%s" % [origin, same_origin_path.trim_prefix("/")]
|
||||
@@ -0,0 +1 @@
|
||||
uid://c0m4jbetdkadj
|
||||
@@ -1,5 +1,6 @@
|
||||
extends Node
|
||||
|
||||
const EndpointConfig := preload("res://scripts/autoload/api_endpoint_config.gd")
|
||||
const DEFAULT_QUESTIONS_API_URL := "https://s3q.ranaze.com/api/questions/search"
|
||||
const DEFAULT_QUESTION_ATTEMPT_API_URL := "https://s3q.ranaze.com/api/questions/attempts/first"
|
||||
const DEFAULT_QUESTION_API_BASE_URL := "https://s3q.ranaze.com/api/questions"
|
||||
@@ -44,11 +45,21 @@ var active_attempt_index := -1
|
||||
var attempt_request_active := false
|
||||
|
||||
func _ready() -> void:
|
||||
questions_api_url = str(ProjectSettings.get_setting("step3/questions_api_url", DEFAULT_QUESTIONS_API_URL))
|
||||
question_attempt_api_url = str(ProjectSettings.get_setting("step3/question_attempt_api_url", DEFAULT_QUESTION_ATTEMPT_API_URL))
|
||||
question_api_base_url = str(ProjectSettings.get_setting("step3/question_api_base_url", DEFAULT_QUESTION_API_BASE_URL))
|
||||
ratings_api_url = str(ProjectSettings.get_setting("step3/ratings_api_url", DEFAULT_RATINGS_API_URL))
|
||||
question_reports_api_url = str(ProjectSettings.get_setting("step3/question_reports_api_url", DEFAULT_QUESTION_REPORTS_API_URL))
|
||||
questions_api_url = EndpointConfig.resolve(
|
||||
str(ProjectSettings.get_setting("step3/questions_api_url", DEFAULT_QUESTIONS_API_URL)),
|
||||
"/api/questions/search")
|
||||
question_attempt_api_url = EndpointConfig.resolve(
|
||||
str(ProjectSettings.get_setting("step3/question_attempt_api_url", DEFAULT_QUESTION_ATTEMPT_API_URL)),
|
||||
"/api/questions/attempts/first")
|
||||
question_api_base_url = EndpointConfig.resolve(
|
||||
str(ProjectSettings.get_setting("step3/question_api_base_url", DEFAULT_QUESTION_API_BASE_URL)),
|
||||
"/api/questions")
|
||||
ratings_api_url = EndpointConfig.resolve(
|
||||
str(ProjectSettings.get_setting("step3/ratings_api_url", DEFAULT_RATINGS_API_URL)),
|
||||
"/api/ratings/me")
|
||||
question_reports_api_url = EndpointConfig.resolve(
|
||||
str(ProjectSettings.get_setting("step3/question_reports_api_url", DEFAULT_QUESTION_REPORTS_API_URL)),
|
||||
"/api/question-reports")
|
||||
request = HTTPRequest.new()
|
||||
request.request_completed.connect(_on_api_questions_loaded)
|
||||
add_child(request)
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
extends VBoxContainer
|
||||
|
||||
const Style := preload("res://scripts/ui/ui_style.gd")
|
||||
const AUTH_LOGIN_URL := "https://pauth.ranaze.com/api/Auth/login"
|
||||
const AUTH_REGISTER_URL := "https://pauth.ranaze.com/api/Auth/register"
|
||||
const EndpointConfig := preload("res://scripts/autoload/api_endpoint_config.gd")
|
||||
const DEFAULT_AUTH_LOGIN_URL := "https://pauth.ranaze.com/api/Auth/login"
|
||||
const DEFAULT_AUTH_REGISTER_URL := "https://pauth.ranaze.com/api/Auth/register"
|
||||
|
||||
var main: Control
|
||||
var auth_panel: PanelContainer
|
||||
@@ -25,9 +26,13 @@ var register_request: HTTPRequest
|
||||
var auth_mode := "login"
|
||||
var automatic_login_pending := false
|
||||
var login_attempt_username := ""
|
||||
var auth_login_url := DEFAULT_AUTH_LOGIN_URL
|
||||
var auth_register_url := DEFAULT_AUTH_REGISTER_URL
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
auth_login_url = EndpointConfig.resolve(DEFAULT_AUTH_LOGIN_URL, "/api/Auth/login")
|
||||
auth_register_url = EndpointConfig.resolve(DEFAULT_AUTH_REGISTER_URL, "/api/Auth/register")
|
||||
set_anchors_preset(Control.PRESET_FULL_RECT)
|
||||
add_theme_constant_override("separation", 18)
|
||||
|
||||
@@ -190,7 +195,7 @@ func _send_login(username: String, password: String, is_automatic: bool) -> void
|
||||
success_label.text = "Account created. Signing you in..."
|
||||
var payload := {"username": username, "password": password}
|
||||
var headers := PackedStringArray(["Content-Type: application/json"])
|
||||
var request_error := login_request.request(AUTH_LOGIN_URL, headers, HTTPClient.METHOD_POST, JSON.stringify(payload))
|
||||
var request_error := login_request.request(auth_login_url, headers, HTTPClient.METHOD_POST, JSON.stringify(payload))
|
||||
if request_error != OK:
|
||||
_set_busy(false)
|
||||
login_button.text = "Log In"
|
||||
@@ -254,7 +259,7 @@ func _on_register_pressed() -> void:
|
||||
_clear_messages()
|
||||
var payload := {"username": username, "email": email, "password": password}
|
||||
var headers := PackedStringArray(["Content-Type: application/json"])
|
||||
var request_error := register_request.request(AUTH_REGISTER_URL, headers, HTTPClient.METHOD_POST, JSON.stringify(payload))
|
||||
var request_error := register_request.request(auth_register_url, headers, HTTPClient.METHOD_POST, JSON.stringify(payload))
|
||||
if request_error != OK:
|
||||
_set_busy(false)
|
||||
register_button.text = "Create Account"
|
||||
|
||||
@@ -14,9 +14,21 @@ var current_screen_name := ""
|
||||
func _ready() -> void:
|
||||
Style.apply_app_theme(self)
|
||||
_build_ui()
|
||||
resized.connect(_update_responsive_layout)
|
||||
_update_responsive_layout()
|
||||
show_screen("selection" if AuthState.is_logged_in else "login", "exam")
|
||||
|
||||
|
||||
func _update_responsive_layout() -> void:
|
||||
if header_stats != null:
|
||||
header_stats.visible = size.x >= 900.0
|
||||
if app_menu != null:
|
||||
app_menu.custom_minimum_size.x = minf(340.0, maxf(280.0, size.x - 32.0))
|
||||
if app_menu.visible:
|
||||
app_menu.size = app_menu.custom_minimum_size
|
||||
app_menu.position = (get_viewport_rect().size - app_menu.size) * 0.5
|
||||
|
||||
|
||||
func show_screen(screen_name: String, payload: Variant = null) -> void:
|
||||
_close_app_menu()
|
||||
for child in $Root/Screens.get_children():
|
||||
|
||||
@@ -357,6 +357,20 @@ func _ready() -> void:
|
||||
|
||||
_build_labs_modal()
|
||||
_build_report_modal()
|
||||
resized.connect(_fit_modal_panels)
|
||||
_fit_modal_panels()
|
||||
|
||||
|
||||
func _fit_modal_panels() -> void:
|
||||
var available := get_viewport_rect().size - Vector2(32, 32)
|
||||
if report_panel != null:
|
||||
report_panel.custom_minimum_size = Vector2(
|
||||
minf(700.0, maxf(320.0, available.x)),
|
||||
minf(600.0, maxf(560.0, available.y)))
|
||||
if labs_panel != null:
|
||||
labs_panel.custom_minimum_size = Vector2(
|
||||
minf(760.0, maxf(320.0, available.x)),
|
||||
minf(430.0, maxf(360.0, available.y)))
|
||||
|
||||
|
||||
func on_show(_payload: Variant = null) -> void:
|
||||
|
||||
Reference in New Issue
Block a user