mirror of
https://github.com/halfwaystudent/douyin-sparkflow.git
synced 2026-09-06 07:57:09 +08:00
fix: improve embedded Douyin login workspace
This commit is contained in:
@@ -135,6 +135,8 @@ class LoginDesktopManager:
|
|||||||
"--disable-dev-shm-usage",
|
"--disable-dev-shm-usage",
|
||||||
"--no-sandbox",
|
"--no-sandbox",
|
||||||
"--start-maximized",
|
"--start-maximized",
|
||||||
|
"--window-position=0,0",
|
||||||
|
"--window-size=1600,1000",
|
||||||
"--disable-gpu",
|
"--disable-gpu",
|
||||||
"--disable-gpu-compositing",
|
"--disable-gpu-compositing",
|
||||||
"--disable-software-rasterizer",
|
"--disable-software-rasterizer",
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ class DeploymentContractTests(unittest.TestCase):
|
|||||||
self.assertIn("mem_limit: ${LOGIN_DESKTOP_MEMORY_LIMIT:-1200m}", compose)
|
self.assertIn("mem_limit: ${LOGIN_DESKTOP_MEMORY_LIMIT:-1200m}", compose)
|
||||||
self.assertIn("pids_limit: ${LOGIN_DESKTOP_PIDS_LIMIT:-256}", compose)
|
self.assertIn("pids_limit: ${LOGIN_DESKTOP_PIDS_LIMIT:-256}", compose)
|
||||||
self.assertIn("-nap -wait 50 -defer 50", start_script)
|
self.assertIn("-nap -wait 50 -defer 50", start_script)
|
||||||
|
self.assertIn("--window-size=1600,1000", server)
|
||||||
self.assertIn("start_idle_monitor", server)
|
self.assertIn("start_idle_monitor", server)
|
||||||
self.assertIn("schedule_stop_after_export", server)
|
self.assertIn("schedule_stop_after_export", server)
|
||||||
self.assertIn('reduced_motion="reduce"', server)
|
self.assertIn('reduced_motion="reduce"', server)
|
||||||
|
|||||||
@@ -250,12 +250,15 @@ class WebUiSafetyTests(unittest.TestCase):
|
|||||||
self.assertIn("data-refresh-login-qr", dashboard)
|
self.assertIn("data-refresh-login-qr", dashboard)
|
||||||
self.assertIn("/login-desktop/qr", dashboard)
|
self.assertIn("/login-desktop/qr", dashboard)
|
||||||
|
|
||||||
def test_mobile_login_popup_opens_before_async_request(self):
|
def test_login_workspace_loads_inside_dashboard_frame(self):
|
||||||
script = (Path(app_module.STATIC_DIR) / "app.js").read_text(encoding="utf-8")
|
script = (Path(app_module.STATIC_DIR) / "app.js").read_text(encoding="utf-8")
|
||||||
block_start = script.index('document.querySelectorAll(".login-desktop-open")')
|
block_start = script.index('document.querySelectorAll(".login-desktop-open")')
|
||||||
block_end = script.index('document.querySelectorAll(".login-desktop-save")', block_start)
|
block_end = script.index('document.querySelectorAll(".login-desktop-save")', block_start)
|
||||||
block = script[block_start:block_end]
|
block = script[block_start:block_end]
|
||||||
self.assertLess(block.index('window.open("about:blank"'), block.index('postForm("/login-desktop/open"'))
|
self.assertLess(block.index('postForm("/login-desktop/open"'), block.index("loadFrame(true)"))
|
||||||
|
self.assertNotIn('window.open("about:blank"', block)
|
||||||
|
self.assertNotIn("popup.location", block)
|
||||||
|
self.assertIn("new URL(configuredPublicUrl, window.location.href).href", script)
|
||||||
self.assertIn("refreshLoginQr(500)", block)
|
self.assertIn("refreshLoginQr(500)", block)
|
||||||
self.assertIn('data.state === "queued"', block)
|
self.assertIn('data.state === "queued"', block)
|
||||||
self.assertIn("renderWorkspace(data.workspace)", block)
|
self.assertIn("renderWorkspace(data.workspace)", block)
|
||||||
|
|||||||
@@ -338,7 +338,15 @@
|
|||||||
if (!root) return;
|
if (!root) return;
|
||||||
const section = document.getElementById("interactive-login-section");
|
const section = document.getElementById("interactive-login-section");
|
||||||
const csrfToken = root.dataset.csrfToken || "";
|
const csrfToken = root.dataset.csrfToken || "";
|
||||||
const publicUrl = root.dataset.publicUrl || "";
|
const configuredPublicUrl = root.dataset.publicUrl || "";
|
||||||
|
const publicUrl = (() => {
|
||||||
|
if (!configuredPublicUrl) return "";
|
||||||
|
try {
|
||||||
|
return new URL(configuredPublicUrl, window.location.href).href;
|
||||||
|
} catch {
|
||||||
|
return configuredPublicUrl;
|
||||||
|
}
|
||||||
|
})();
|
||||||
const runtimeState = document.getElementById("login-desktop-runtime-state");
|
const runtimeState = document.getElementById("login-desktop-runtime-state");
|
||||||
const statusText = document.getElementById("login-desktop-status-text");
|
const statusText = document.getElementById("login-desktop-status-text");
|
||||||
const frame = document.querySelector("[data-login-frame]");
|
const frame = document.querySelector("[data-login-frame]");
|
||||||
@@ -472,7 +480,6 @@
|
|||||||
document.querySelectorAll(".login-desktop-open").forEach((button) => {
|
document.querySelectorAll(".login-desktop-open").forEach((button) => {
|
||||||
button.addEventListener("click", async () => {
|
button.addEventListener("click", async () => {
|
||||||
if (section) section.open = true;
|
if (section) section.open = true;
|
||||||
const popup = publicUrl ? window.open("about:blank", "_blank", "noopener") : null;
|
|
||||||
try {
|
try {
|
||||||
const reloginUniqueId = button.dataset.reloginUniqueId || "";
|
const reloginUniqueId = button.dataset.reloginUniqueId || "";
|
||||||
const mode = button.dataset.loginMode || (reloginUniqueId ? "relogin" : "add");
|
const mode = button.dataset.loginMode || (reloginUniqueId ? "relogin" : "add");
|
||||||
@@ -481,16 +488,11 @@
|
|||||||
...(reloginUniqueId ? { relogin_unique_id: reloginUniqueId } : {}),
|
...(reloginUniqueId ? { relogin_unique_id: reloginUniqueId } : {}),
|
||||||
});
|
});
|
||||||
renderWorkspace(data.workspace);
|
renderWorkspace(data.workspace);
|
||||||
if (data.state === "queued") {
|
if (data.state === "queued") return;
|
||||||
if (popup && !popup.closed) popup.close();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (popup && !popup.closed) popup.location.href = publicUrl;
|
|
||||||
loadFrame(true);
|
loadFrame(true);
|
||||||
refreshLoginQr(500);
|
refreshLoginQr(500);
|
||||||
if (!popup && frame) frame.scrollIntoView({ behavior: "smooth", block: "start" });
|
if (frame) frame.scrollIntoView({ behavior: "smooth", block: "start" });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (popup && !popup.closed) popup.close();
|
|
||||||
setStatus(`申请登录工作区失败:${error.message}`, "danger");
|
setStatus(`申请登录工作区失败:${error.message}`, "danger");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -139,7 +139,7 @@
|
|||||||
</dialog>
|
</dialog>
|
||||||
|
|
||||||
<script defer src="/static/lucide.min.js?v=20260710"></script>
|
<script defer src="/static/lucide.min.js?v=20260710"></script>
|
||||||
<script defer src="/static/app.js?v=20260817"></script>
|
<script defer src="/static/app.js?v=20260823"></script>
|
||||||
{% block scripts %}{% endblock %}
|
{% block scripts %}{% endblock %}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user