Skip to content

Commit daacfa2

Browse files
fix: update ShareButtons and SignersList components for better link handling and loading state
fixes various linting errors
1 parent 5516e4e commit daacfa2

4 files changed

Lines changed: 18 additions & 13 deletions

File tree

src/components/ShareButtons.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,9 @@ export default function ShareButtons({
8383

8484
const handleShare = async (link: ShareLink) => {
8585
if (link.name === 'Email') {
86-
window.location.href = link.url;
86+
if (typeof window !== 'undefined') {
87+
window.open(link.url, '_self');
88+
}
8789
} else {
8890
window.open(link.url, '_blank', 'width=600,height=400,noopener,noreferrer');
8991
}

src/components/SignManifest.tsx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ export function SignManifest() {
269269
const { data: newCaptcha } = await supabase.rpc('generate_captcha_challenge');
270270
if (newCaptcha) setCaptchaChallenge(newCaptcha);
271271
setNameOnlyForm((prev) => ({ ...prev, captchaAnswer: '' }));
272-
} else if ((error as any).code === '42501') {
272+
} else if ((error as { code?: string }).code === '42501') {
273273
setNameOnlyError(
274274
'Permission denied (RLS). Please retry in a moment or contact support if this persists.'
275275
);
@@ -315,18 +315,24 @@ export function SignManifest() {
315315

316316
if (error) {
317317
console.error('Failed to delete account', error);
318-
// Optional: User informieren
319-
alert('Fehler beim Löschen des Accounts: ' + error.message);
318+
// Show error to user
319+
if (typeof window !== 'undefined') {
320+
window.alert('Error deleting account: ' + error.message);
321+
}
320322
} else {
321323
setSignature(null);
322324
try {
323325
sessionStorage.removeItem('signedUserId');
324-
} catch {}
326+
} catch {
327+
// SessionStorage not available
328+
}
325329
broadcastSignatureChange();
326330

327331
try {
328332
await supabase.auth.signOut();
329-
} catch (e) {}
333+
} catch {
334+
// Sign out failed, ignore
335+
}
330336

331337
setSession(null);
332338
}

src/components/SignersList.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,21 @@ interface SignersListProps {
2626

2727
export default function SignersList({ variant = 'compact' }: SignersListProps) {
2828
const supabase = useSupabase();
29-
const [signers, setSigners] = useState<Signer[]>([]);
30-
const [loading, setLoading] = useState(true);
29+
const [signers, setSigners] = useState<Signer[]>(() => (USE_MOCK_DATA ? (mockSignatures as Signer[]) : []));
30+
const [loading, setLoading] = useState(() => !USE_MOCK_DATA && !!supabase);
3131

3232
useEffect(() => {
33-
// Always use mock data if enabled
3433
if (USE_MOCK_DATA) {
3534
console.log('Loading mock signatures:', mockSignatures.length, 'entries');
36-
setSigners(mockSignatures as Signer[]);
37-
setLoading(false);
3835
return;
3936
}
4037

4138
if (!supabase) {
42-
setLoading(false);
4339
return;
4440
}
4541

4642
const load = async () => {
43+
setLoading(true);
4744
const { data, error } = await supabase
4845
.from('signatures')
4946
.select(

src/pages/index.module.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@
104104
align-items: center;
105105
justify-content: flex-start;
106106
gap: 1.1rem;
107-
max-width: min(420px, 90vw);
107+
max-width: min(370px, 90vw);
108108
margin: 2.25rem auto 1.75rem auto;
109109
padding: 0 0.5rem;
110110
}

0 commit comments

Comments
 (0)