feat: phone login via QR when the saved Mudfish login expires
When autologin is rejected the panel offers '휴대폰으로 로그인 (QR)'. It opens a 5-minute LAN relay to the launcher UI guarded by a one-time token (first phone to open the QR URL is the only client allowed) and shows the URL as a QR code. The relay closes as soon as a new session appears, on cancel, on expiry, and on unload. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d8f1c05372
commit
7513fef6f8
12 files changed
+586
-7
No files matched your search
@@ -4,8 +4,10 @@ import {
|
||||
Field,
|
||||
PanelSection,
|
||||
PanelSectionRow,
|
||||
showModal,
|
||||
ToggleField,
|
||||
} from "@decky/ui";
|
||||
import { LoginModal } from "./LoginModal";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import {
|
||||
connect,
|
||||
@@ -158,6 +160,13 @@ export function Panel() {
|
||||
<Field focusable={false} description={state.message} />
|
||||
</PanelSectionRow>
|
||||
)}
|
||||
{state.need_login && (
|
||||
<PanelSectionRow>
|
||||
<ButtonItem layout="below" onClick={() => showModal(<LoginModal />)}>
|
||||
휴대폰으로 로그인 (QR)
|
||||
</ButtonItem>
|
||||
</PanelSectionRow>
|
||||
)}
|
||||
<PanelSectionRow>
|
||||
<ButtonItem layout="below" onClick={() => setAdvanced(!advanced)}>
|
||||
{advanced ? "고급 ▾" : "고급 ▸"}
|
||||
|
||||
Reference in new issue
Block a user