mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-06 03:34:40 +00:00
chore: appease codefactor AGAIN
This commit is contained in:
+68
-103
@@ -14,49 +14,9 @@ function reloadSeqtaPages() {
|
||||
result.then(open, console.error);
|
||||
}
|
||||
|
||||
browser.runtime.onMessage.addListener(
|
||||
// @ts-ignore - OnMessageListener expects literal true for async, we return boolean
|
||||
(request: any, _: any, sendResponse: (response?: any) => void) => {
|
||||
switch (request.type) {
|
||||
case "reloadTabs":
|
||||
reloadSeqtaPages();
|
||||
break;
|
||||
type MessageSender = (response?: any) => void;
|
||||
|
||||
case "extensionPages":
|
||||
browser.tabs.query({}).then(function (tabs) {
|
||||
for (let tab of tabs) {
|
||||
if (tab.url?.includes("chrome-extension://")) {
|
||||
browser.tabs.sendMessage(tab.id!, request);
|
||||
}
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
case "currentTab":
|
||||
browser.tabs
|
||||
.query({ active: true, currentWindow: true })
|
||||
.then(function (tabs) {
|
||||
browser.tabs
|
||||
.sendMessage(tabs[0].id!, request)
|
||||
.then(function (response) {
|
||||
sendResponse(response);
|
||||
});
|
||||
});
|
||||
return true;
|
||||
|
||||
case "githubTab":
|
||||
browser.tabs.create({ url: "github.com/BetterSEQTA/BetterSEQTA-Plus" });
|
||||
break;
|
||||
|
||||
case "setDefaultStorage":
|
||||
SetStorageValue(getDefaultValues());
|
||||
break;
|
||||
|
||||
case "sendNews":
|
||||
fetchNews(request.source ?? "australia", sendResponse);
|
||||
return true;
|
||||
|
||||
case "fetchThemes": {
|
||||
function handleFetchThemes(request: any, sendResponse: MessageSender): boolean {
|
||||
const { token } = request;
|
||||
const apiUrl = `https://betterseqta.org/api/themes?type=betterseqta&limit=100&nocache=${Date.now()}`;
|
||||
const githubUrl = `https://raw.githubusercontent.com/BetterSEQTA/BetterSEQTA-Themes/main/store/themes.json?nocache=${Date.now()}`;
|
||||
@@ -78,7 +38,7 @@ browser.runtime.onMessage.addListener(
|
||||
return true;
|
||||
}
|
||||
|
||||
case "fetchThemeDetails": {
|
||||
function handleFetchThemeDetails(request: any, sendResponse: MessageSender): boolean {
|
||||
const { themeId, token } = request;
|
||||
if (!themeId || typeof themeId !== "string") {
|
||||
sendResponse({ success: false, error: "Missing themeId" });
|
||||
@@ -86,10 +46,7 @@ browser.runtime.onMessage.addListener(
|
||||
}
|
||||
const headers: Record<string, string> = {};
|
||||
if (token) headers["Authorization"] = `Bearer ${token}`;
|
||||
fetch(`https://betterseqta.org/api/themes/${themeId}`, {
|
||||
cache: "no-store",
|
||||
headers,
|
||||
})
|
||||
fetch(`https://betterseqta.org/api/themes/${themeId}`, { cache: "no-store", headers })
|
||||
.then((r) => r.json())
|
||||
.then(sendResponse)
|
||||
.catch((err) => {
|
||||
@@ -99,7 +56,7 @@ browser.runtime.onMessage.addListener(
|
||||
return true;
|
||||
}
|
||||
|
||||
case "fetchFromUrl": {
|
||||
function handleFetchFromUrl(request: any, sendResponse: MessageSender): boolean {
|
||||
const { url } = request;
|
||||
if (!url || typeof url !== "string") {
|
||||
sendResponse({ error: "Missing url" });
|
||||
@@ -115,30 +72,26 @@ browser.runtime.onMessage.addListener(
|
||||
return true;
|
||||
}
|
||||
|
||||
case "cloudReserveClient": {
|
||||
const redirect_uri =
|
||||
request.redirect_uri ?? "https://accounts.betterseqta.org/auth/bsplus/callback";
|
||||
async function parseJsonResponse(r: Response): Promise<any> {
|
||||
const text = await r.text();
|
||||
try {
|
||||
return text ? JSON.parse(text) : {};
|
||||
} catch {
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
function handleCloudReserveClient(request: any, sendResponse: MessageSender): boolean {
|
||||
const redirect_uri = request.redirect_uri ?? "https://accounts.betterseqta.org/auth/bsplus/callback";
|
||||
fetch("https://accounts.betterseqta.org/api/bsplus/client/reserve", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ redirect_uri }),
|
||||
})
|
||||
.then(async (r) => {
|
||||
const text = await r.text();
|
||||
let data: any = {};
|
||||
try {
|
||||
data = text ? JSON.parse(text) : {};
|
||||
} catch {
|
||||
sendResponse({ error: "Invalid response from server" });
|
||||
return;
|
||||
}
|
||||
if (!r.ok) {
|
||||
sendResponse({
|
||||
error: data?.error ?? `Reserve failed (${r.status})`,
|
||||
});
|
||||
} else {
|
||||
sendResponse(data);
|
||||
}
|
||||
const data = await parseJsonResponse(r);
|
||||
if (!r.ok) sendResponse({ error: data?.error ?? `Reserve failed (${r.status})` });
|
||||
else sendResponse(data);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error("[Background] cloudReserveClient error:", err);
|
||||
@@ -147,38 +100,21 @@ browser.runtime.onMessage.addListener(
|
||||
return true;
|
||||
}
|
||||
|
||||
case "cloudLogin": {
|
||||
function handleCloudLogin(request: any, sendResponse: MessageSender): boolean {
|
||||
const { client_id, redirect_uri, login, password } = request;
|
||||
if (!client_id || !redirect_uri || !login || !password) {
|
||||
sendResponse({
|
||||
error: "Missing client_id, redirect_uri, login, or password",
|
||||
});
|
||||
sendResponse({ error: "Missing client_id, redirect_uri, login, or password" });
|
||||
return false;
|
||||
}
|
||||
fetch("https://accounts.betterseqta.org/api/bsplus/login", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
client_id,
|
||||
redirect_uri,
|
||||
login,
|
||||
password,
|
||||
}),
|
||||
body: JSON.stringify({ client_id, redirect_uri, login, password }),
|
||||
})
|
||||
.then(async (r) => {
|
||||
const text = await r.text();
|
||||
let data: any = {};
|
||||
try {
|
||||
data = text ? JSON.parse(text) : {};
|
||||
} catch {
|
||||
sendResponse({ error: "Invalid response from server" });
|
||||
return;
|
||||
}
|
||||
if (!r.ok) {
|
||||
sendResponse({ error: data?.error ?? "Login failed" });
|
||||
return;
|
||||
}
|
||||
sendResponse(data);
|
||||
const data = await parseJsonResponse(r);
|
||||
if (!r.ok) sendResponse({ error: data?.error ?? "Login failed" });
|
||||
else sendResponse(data);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error("[Background] cloudLogin error:", err);
|
||||
@@ -187,7 +123,7 @@ browser.runtime.onMessage.addListener(
|
||||
return true;
|
||||
}
|
||||
|
||||
case "cloudRefresh": {
|
||||
function handleCloudRefresh(request: any, sendResponse: MessageSender): boolean {
|
||||
const { refresh_token, client_id } = request;
|
||||
if (!refresh_token || !client_id) {
|
||||
sendResponse({ error: "Missing refresh_token or client_id" });
|
||||
@@ -199,14 +135,7 @@ browser.runtime.onMessage.addListener(
|
||||
body: JSON.stringify({ refresh_token, client_id }),
|
||||
})
|
||||
.then(async (r) => {
|
||||
const text = await r.text();
|
||||
let data: any = {};
|
||||
try {
|
||||
data = text ? JSON.parse(text) : {};
|
||||
} catch {
|
||||
sendResponse({ error: "Invalid response from server" });
|
||||
return;
|
||||
}
|
||||
const data = await parseJsonResponse(r);
|
||||
if (!r.ok) sendResponse({ error: data?.error ?? "Refresh failed" });
|
||||
else sendResponse(data);
|
||||
})
|
||||
@@ -217,15 +146,14 @@ browser.runtime.onMessage.addListener(
|
||||
return true;
|
||||
}
|
||||
|
||||
case "cloudFavorite": {
|
||||
function handleCloudFavorite(request: any, sendResponse: MessageSender): boolean {
|
||||
const { themeId, token, action } = request;
|
||||
if (!themeId || !token) {
|
||||
sendResponse({ success: false, error: "Theme ID and token required" });
|
||||
return false;
|
||||
}
|
||||
const isFavorite = action === "favorite";
|
||||
const url = `https://betterseqta.org/api/themes/${themeId}/favorite`;
|
||||
fetch(url, {
|
||||
fetch(`https://betterseqta.org/api/themes/${themeId}/favorite`, {
|
||||
method: isFavorite ? "POST" : "DELETE",
|
||||
headers: { Authorization: `Bearer ${token}` },
|
||||
})
|
||||
@@ -238,10 +166,47 @@ browser.runtime.onMessage.addListener(
|
||||
return true;
|
||||
}
|
||||
|
||||
default:
|
||||
console.log("Unknown request type");
|
||||
const MESSAGE_HANDLERS: Record<string, (req: any, send: MessageSender) => boolean | void> = {
|
||||
reloadTabs: () => reloadSeqtaPages(),
|
||||
extensionPages: (req) => {
|
||||
browser.tabs.query({}).then((tabs) => {
|
||||
for (const tab of tabs) {
|
||||
if (tab.url?.includes("chrome-extension://")) browser.tabs.sendMessage(tab.id!, req);
|
||||
}
|
||||
});
|
||||
},
|
||||
currentTab: (req, sendResponse) => {
|
||||
browser.tabs.query({ active: true, currentWindow: true }).then((tabs) => {
|
||||
browser.tabs.sendMessage(tabs[0].id!, req).then(sendResponse);
|
||||
});
|
||||
return true;
|
||||
},
|
||||
githubTab: () => {
|
||||
void browser.tabs.create({ url: "github.com/BetterSEQTA/BetterSEQTA-Plus" });
|
||||
},
|
||||
setDefaultStorage: () => SetStorageValue(getDefaultValues()),
|
||||
sendNews: (req, sendResponse) => {
|
||||
fetchNews(req.source ?? "australia", sendResponse);
|
||||
return true;
|
||||
},
|
||||
fetchThemes: handleFetchThemes,
|
||||
fetchThemeDetails: handleFetchThemeDetails,
|
||||
fetchFromUrl: handleFetchFromUrl,
|
||||
cloudReserveClient: handleCloudReserveClient,
|
||||
cloudLogin: handleCloudLogin,
|
||||
cloudRefresh: handleCloudRefresh,
|
||||
cloudFavorite: handleCloudFavorite,
|
||||
};
|
||||
|
||||
browser.runtime.onMessage.addListener(
|
||||
// @ts-ignore - OnMessageListener expects literal true for async, we return boolean
|
||||
(request: any, _: any, sendResponse: MessageSender) => {
|
||||
const handler = MESSAGE_HANDLERS[request.type];
|
||||
if (handler) {
|
||||
const result = handler(request, sendResponse);
|
||||
return result === true;
|
||||
}
|
||||
console.log("Unknown request type");
|
||||
return false;
|
||||
},
|
||||
);
|
||||
|
||||
@@ -24,7 +24,7 @@ export type CloudAuthState = {
|
||||
user: CloudUser | null;
|
||||
};
|
||||
|
||||
type Listener = (_state: CloudAuthState) => void;
|
||||
type Listener = (state: CloudAuthState) => void;
|
||||
|
||||
class CloudAuthService {
|
||||
private static instance: CloudAuthService;
|
||||
|
||||
Reference in New Issue
Block a user