Merge branch 'main' into feature/widget_strelaysrv

This commit is contained in:
Ben Phelps 2022-09-21 09:05:42 +03:00 committed by GitHub
commit 122b987fa3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
33 changed files with 433 additions and 38 deletions

View file

@ -8,6 +8,7 @@ import "styles/theme.css";
import "utils/i18n";
import { ColorProvider } from "utils/color-context";
import { ThemeProvider } from "utils/theme-context";
import { SettingsProvider } from "utils/settings-context";
function MyApp({ Component, pageProps }) {
return (
@ -18,7 +19,9 @@ function MyApp({ Component, pageProps }) {
>
<ColorProvider>
<ThemeProvider>
<Component {...pageProps} />
<SettingsProvider>
<Component {...pageProps} />
</SettingsProvider>
</ThemeProvider>
</ColorProvider>
</SWRConfig>

View file

@ -1,3 +1,4 @@
import logger from "utils/logger";
import genericProxyHandler from "utils/proxies/generic";
import credentialedProxyHandler from "utils/proxies/credentialed";
import rutorrentProxyHandler from "utils/proxies/rutorrent";
@ -82,6 +83,7 @@ const serviceProxyHandlers = {
jackett: genericProxyHandler,
adguard: genericProxyHandler,
strelaysrv: genericProxyHandler,
mastodon: genericProxyHandler,
// uses X-API-Key (or similar) header auth
gotify: credentialedProxyHandler,
portainer: credentialedProxyHandler,
@ -99,20 +101,27 @@ const serviceProxyHandlers = {
};
export default async function handler(req, res) {
const { type } = req.query;
try {
const { type } = req.query;
const serviceProxyHandler = serviceProxyHandlers[type];
const serviceProxyHandler = serviceProxyHandlers[type];
if (serviceProxyHandler) {
if (serviceProxyHandler instanceof Function) {
return serviceProxyHandler(req, res);
if (serviceProxyHandler) {
if (serviceProxyHandler instanceof Function) {
return serviceProxyHandler(req, res);
}
const { proxy, maps } = serviceProxyHandler;
if (proxy) {
return proxy(req, res, maps);
}
}
const { proxy, maps } = serviceProxyHandler;
if (proxy) {
return proxy(req, res, maps);
}
logger.debug("Unknown proxy service type: %s", type);
return res.status(403).json({ error: "Unkown proxy service type" });
}
catch (ex) {
logger.error(ex);
return res.status(500).send({ error: "Unexpected error" });
}
return res.status(403).json({ error: "Unkown proxy service type" });
}

View file

@ -13,6 +13,7 @@ import Revalidate from "components/revalidate";
import { getSettings } from "utils/config";
import { ColorContext } from "utils/color-context";
import { ThemeContext } from "utils/theme-context";
import { SettingsContext } from "utils/settings-context";
const ThemeToggle = dynamic(() => import("components/theme-toggle"), {
ssr: false,
@ -26,22 +27,23 @@ const rightAlignedWidgets = ["weatherapi", "openweathermap", "weather", "search"
export function getStaticProps() {
try {
const settings = getSettings();
const { providers, ...settings } = getSettings();
return {
props: {
settings,
initialSettings: settings,
},
};
} catch (e) {
return {
props: {
settings: {},
initialSettings: {},
},
};
}
}
export default function Index({ settings }) {
export default function Index({ initialSettings }) {
const { data: errorsData } = useSWR("/api/validate");
if (errorsData && errorsData.length > 0) {
@ -68,20 +70,25 @@ export default function Index({ settings }) {
);
}
return <Home settings={settings} />;
return <Home initialSettings={initialSettings} />;
}
function Home({ settings }) {
function Home({ initialSettings }) {
const { i18n } = useTranslation();
const { theme, setTheme } = useContext(ThemeContext);
const { color, setColor } = useContext(ColorContext);
const { settings, setSettings } = useContext(SettingsContext);
if (initialSettings) {
setSettings(initialSettings);
}
const { data: services } = useSWR("/api/services");
const { data: bookmarks } = useSWR("/api/bookmarks");
const { data: widgets } = useSWR("/api/widgets");
const wrappedStyle = {};
if (settings.background) {
if (settings && settings.background) {
wrappedStyle.backgroundImage = `url(${settings.background})`;
wrappedStyle.backgroundSize = "cover";
wrappedStyle.opacity = settings.backgroundOpacity ?? 1;