mirror of
https://github.com/DI0IK/homepage-plus.git
synced 2025-07-18 02:29:49 +00:00
Merge branch 'main' into feature/widget_strelaysrv
This commit is contained in:
commit
122b987fa3
33 changed files with 433 additions and 38 deletions
|
@ -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>
|
||||
|
|
|
@ -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" });
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue