Skip to content

Commit dd79738

Browse files
committed
Fixed MediaSlider youtube player volume control not working + added Login with SSO checkbox
1 parent 1db3a1c commit dd79738

2 files changed

Lines changed: 26 additions & 27 deletions

File tree

src/components/Login.tsx

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export function Login() {
1616
const [server, setServer] = useState(window.location.origin);
1717
const [username, setUsername] = useState("");
1818
const [password, setPassword] = useState("");
19-
const [remember, setRemember] = useState(true);
19+
const [useSso, setUseSso] = useState(false);
2020

2121
// Refs for focus trap
2222
const serverRef = useRef<HTMLInputElement | null>(null);
@@ -45,11 +45,11 @@ export function Login() {
4545
e.preventDefault();
4646
try {
4747
const normalized = normalizeServer(server);
48-
await loginBasic({ server: normalized, username, password });
49-
if (!remember) {
50-
// If user disabled remember, clear stored refresh token
51-
localStorage.removeItem("app_refresh_token");
48+
if (useSso) {
49+
// For now just disable basic login when SSO selected (future: launch popup flow)
50+
return;
5251
}
52+
await loginBasic({ server: normalized, username, password });
5353
navigate("/library", { replace: true });
5454
} catch {
5555
// error handled in context
@@ -115,6 +115,7 @@ export function Login() {
115115
onChange={(e) => setUsername(e.target.value)}
116116
ref={userRef}
117117
tabIndex={2}
118+
disabled={useSso}
118119
/>
119120
</Field>
120121
<Field>
@@ -128,29 +129,27 @@ export function Login() {
128129
onChange={(e) => setPassword(e.target.value)}
129130
ref={passRef}
130131
tabIndex={3}
132+
disabled={useSso}
131133
/>
132134
</Field>
133-
<div className="flex items-center justify-between hidden">
134-
<CheckboxField>
135-
<Checkbox
136-
name="remember"
137-
checked={remember}
138-
onChange={(ev: any) => {
139-
const checked = (ev?.target as HTMLInputElement | undefined)
140-
?.checked;
141-
if (typeof checked === "boolean") setRemember(checked);
142-
}}
143-
/>
144-
<Label>Remember me</Label>
145-
</CheckboxField>
146-
</div>
135+
<CheckboxField className="cursor-pointer select-none">
136+
<Checkbox
137+
id="login-sso"
138+
name="useSso"
139+
color="indigo"
140+
className="cursor-pointer"
141+
checked={useSso}
142+
onChange={(checked: boolean) => setUseSso(!!checked)}
143+
/>
144+
<Label htmlFor="login-sso" className="cursor-pointer">Login with SSO</Label>
145+
</CheckboxField>
147146
{error && (
148147
<div className="text-sm text-red-500 -mt-4" role="alert">
149148
{error}
150149
</div>
151150
)}
152151
<Button type="submit" className="w-full" disabled={loading} tabIndex={4} ref={submitRef}>
153-
{loading ? "Authenticating…" : "Login"}
152+
{loading ? (useSso ? 'Preparing SSO…' : 'Authenticating…') : (useSso ? 'Continue with SSO' : 'Login')}
154153
</Button>
155154
<Text tabIndex={-1} aria-hidden="true">
156155
Don’t have an account? {""}

src/components/MediaSlider.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -211,19 +211,19 @@ export const MediaSlider: React.FC<MediaSliderProps> = ({
211211
</>
212212
)}
213213

214-
<div className="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/70 to-transparent p-2 flex items-center justify-between text-[11px] text-white">
215-
<div>
214+
<div className={
215+
`absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/70 to-transparent p-2 flex items-center justify-between text-[11px] text-white` +
216+
(isYT ? ' pointer-events-none' : '')
217+
}>
218+
<div className={isYT ? 'pointer-events-none' : ''}>
216219
Media {index + 1} / {list.length}
217-
{current?.originalUrl && (
218-
<> {" "}- <a href={current.originalUrl} target="_blank" rel="noopener noreferrer" className="underline hover:text-indigo-300">source</a></>
219-
)}
220220
</div>
221221
<div className="flex items-center gap-2">
222-
{isYT && !ytId && <span className="text-rose-300">Unrecognized YouTube URL</span>}
222+
{isYT && !ytId && <span className="text-rose-300 pointer-events-none">Unrecognized YouTube URL</span>}
223223
<button
224224
type="button"
225225
onClick={toggleFullscreen}
226-
className="p-1.5 rounded-md bg-white/10 hover:bg-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-500"
226+
className="p-1.5 rounded-md bg-white/10 hover:bg-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-500 pointer-events-auto"
227227
aria-label="Toggle fullscreen"
228228
title={isFullscreen ? "Exit fullscreen" : "Fullscreen"}
229229
aria-pressed={isFullscreen}

0 commit comments

Comments
 (0)