Working logic to redirect to sessions
Build LinkLog Development Image / development-image (push) Successful in 12s

This commit is contained in:
2026-08-26 16:11:11 +02:00
parent 0287305884
commit 6772bf7107
11 changed files with 122 additions and 4 deletions
+42 -3
View File
@@ -12,6 +12,7 @@ const newTagsInput = document.getElementById('new-tags');
const feedLink = document.getElementById('feed-link');
const authWarning = document.getElementById('auth-warning');
const warningSettingsButton = document.getElementById('warning-settings');
const authSession = document.getElementById('auth-session');
const t = window.linklogI18n;
@@ -31,13 +32,36 @@ async function getSettings() {
return result;
}
async function validateSession(settings) {
if (!settings.backendUrl || !settings.accessToken) return null;
try {
const response = await fetch(`${settings.backendUrl}/api/auth/me`, {
headers: {'Authorization': `Bearer ${settings.accessToken}`},
});
if (!response.ok) {
await browser.storage.local.remove(['accessToken', 'tokenType', 'tokenExpiresAt', 'refreshToken']);
return null;
}
return await response.json();
} catch (error) {
return null;
}
}
function showSignedOutState() {
form.classList.add('hidden');
authSession.hidden = true;
authSession.classList.add('hidden');
authWarning.hidden = false;
authWarning.classList.remove('hidden');
}
function showSignedInState() {
function showSignedInState(user, backendUrl) {
authWarning.hidden = true;
authWarning.classList.add('hidden');
authSession.textContent = t('loggedInAt', [user.username || user.email, backendUrl]);
authSession.hidden = false;
authSession.classList.remove('hidden');
form.classList.remove('hidden');
}
@@ -59,12 +83,20 @@ async function loadExistingTags() {
showSignedOutState();
return;
}
showSignedInState();
const user = await validateSession(settings);
if (!user) {
showSignedOutState();
return;
}
showSignedInState(user, settings.backendUrl);
const response = await fetch(`${settings.backendUrl}/api/tags`, {
headers: {'Authorization': `Bearer ${settings.accessToken}`},
});
if (!response.ok) {
if (response.status === 401) showSignedOutState();
if (response.status === 401) {
showSignedOutState();
return;
}
existingTags.textContent = t('loadTagsFailed');
return;
}
@@ -124,6 +156,13 @@ async function handleSubmit(event) {
return;
}
if (!await validateSession(settings)) {
showSignedOutState();
setStatus(t('sessionExpired'), true);
browser.runtime.openOptionsPage();
return;
}
try {
const response = await fetch(`${backendUrl}/api/links`, {
method: 'POST',