Added Seo to settings page, added a few optional env variables

main
Guus van Meerveld 3 years ago
parent 44f2db7c25
commit 0973689fb7
Signed by: Guusvanmeerveld
GPG Key ID: 2BA7D7912771966E

@ -1,3 +1,5 @@
const packageInfo = require("./package.json");
// @ts-check // @ts-check
/** /**
* @type {import('next').NextConfig} * @type {import('next').NextConfig}
@ -8,7 +10,9 @@ module.exports = {
ignoreDuringBuilds: true ignoreDuringBuilds: true
}, },
env: { env: {
NEXT_PUBLIC_GITHUB_URL: "https://github.com/Guusvanmeerveld/MaterialTube" NEXT_PUBLIC_GITHUB_URL: packageInfo.repository.url,
NEXT_PUBLIC_APP_NAME: process.env.APP_NAME ?? packageInfo.displayName,
NEXT_PUBLIC_DEFAULT_SERVER: process.env.DEFAULT_SERVER ?? "vid.puffyan.us"
}, },
basePath: process.env.BASE_PATH ?? "", basePath: process.env.BASE_PATH ?? "",
trailingSlash: !(process.env.CI == "true") trailingSlash: !(process.env.CI == "true")

@ -3,6 +3,9 @@
"displayName": "MaterialTube", "displayName": "MaterialTube",
"description": "MaterialTube is a beautiful and elegant web client for Invidious servers, built using Next.js and MUI.", "description": "MaterialTube is a beautiful and elegant web client for Invidious servers, built using Next.js and MUI.",
"license": "MIT", "license": "MIT",
"repository": {
"url": "https://github.com/Guusvanmeerveld/MaterialTube"
},
"scripts": { "scripts": {
"dev": "next dev", "dev": "next dev",
"build": "next build", "build": "next build",

@ -36,7 +36,9 @@ const AppDrawer: FC<{
onKeyDown={toggleDrawer(false)} onKeyDown={toggleDrawer(false)}
> >
<Box padding={2}> <Box padding={2}>
<Typography variant="h4">{packageInfo.displayName}</Typography> <Typography variant="h4">
{process.env.NEXT_PUBLIC_APP_NAME}
</Typography>
</Box> </Box>
<Divider /> <Divider />
<List> <List>

@ -91,14 +91,21 @@ const Navbar: FC = () => {
<Menu /> <Menu />
</IconButton> </IconButton>
<Link href="/" passHref>
<Typography <Typography
variant="h6" variant="h6"
component="div" component="div"
sx={{ mr: 2, display: "flex", alignItems: "center" }} sx={{
mr: 2,
display: "flex",
alignItems: "center",
cursor: "pointer"
}}
> >
<PlayCircleOutline sx={{ mr: 1 }} /> <PlayCircleOutline sx={{ mr: 1 }} />
{packageInfo.displayName} {process.env.NEXT_PUBLIC_APP_NAME}
</Typography> </Typography>
</Link>
<Box <Box
sx={{ sx={{

@ -2,13 +2,15 @@ import packageInfo from "../package.json";
import type { DefaultSeoProps } from "next-seo"; import type { DefaultSeoProps } from "next-seo";
const name = process.env.NEXT_PUBLIC_APP_NAME;
const SEO: DefaultSeoProps = { const SEO: DefaultSeoProps = {
titleTemplate: `%s | ${packageInfo.displayName}`, titleTemplate: `%s | ${name}`,
defaultTitle: packageInfo.displayName, defaultTitle: name,
description: packageInfo.description, description: packageInfo.description,
openGraph: { openGraph: {
description: packageInfo.displayName, description: name,
site_name: packageInfo.displayName site_name: name
} }
}; };

@ -25,7 +25,7 @@ const Index: NextPage = () => (
> >
<PlayCircleOutline sx={{ mt: 2, fontSize: 100 }} /> <PlayCircleOutline sx={{ mt: 2, fontSize: 100 }} />
<Typography variant="h2" sx={{ my: 1 }}> <Typography variant="h2" sx={{ my: 1 }}>
{packageInfo.displayName} {process.env.NEXT_PUBLIC_APP_NAME}
</Typography> </Typography>
<Typography variant="h4" sx={{ my: 1 }}> <Typography variant="h4" sx={{ my: 1 }}>
{packageInfo.description} {packageInfo.description}

@ -1,6 +1,7 @@
import axios from "axios"; import axios from "axios";
import { NextPage } from "next"; import { NextPage } from "next";
import { NextSeo } from "next-seo";
import { FC, useState } from "react"; import { FC, useState } from "react";
@ -163,6 +164,11 @@ const Settings: NextPage = () => {
}; };
return ( return (
<>
<NextSeo
title="Settings"
description={`Update your ${process.env.NEXT_PUBLIC_APP_NAME} settings`}
/>
<Layout> <Layout>
<Container> <Container>
<Typography sx={{ my: 2 }} variant="h2"> <Typography sx={{ my: 2 }} variant="h2">
@ -182,7 +188,9 @@ const Settings: NextPage = () => {
color="primary" color="primary"
aria-label="outlined default button group" aria-label="outlined default button group"
> >
<Button onClick={() => setSetting("theme", "light")}>Light</Button> <Button onClick={() => setSetting("theme", "light")}>
Light
</Button>
<Button onClick={() => setSetting("theme")}>System</Button> <Button onClick={() => setSetting("theme")}>System</Button>
<Button onClick={() => setSetting("theme", "dark")}>Dark</Button> <Button onClick={() => setSetting("theme", "dark")}>Dark</Button>
</ButtonGroup> </ButtonGroup>
@ -251,6 +259,7 @@ const Settings: NextPage = () => {
</Box> </Box>
</Container> </Container>
</Layout> </Layout>
</>
); );
}; };

@ -26,10 +26,10 @@ const Trending: NextPage = () => {
const [settings] = useSettings(); const [settings] = useSettings();
const { isLoading, error, data } = useQuery< const { isLoading, error, data, refetch } = useQuery<
TrendingModel[], TrendingModel[],
AxiosError<Error> AxiosError<Error>
>("trendingData", () => >("trendingData", (context) =>
axios axios
.get(`https://${settings.invidiousServer}/api/v1/trending`, { .get(`https://${settings.invidiousServer}/api/v1/trending`, {
params: { params: {

@ -9,7 +9,7 @@ import Settings from "@interfaces/settings";
const defaultSettings: Settings = { const defaultSettings: Settings = {
primaryColor: red[800], primaryColor: red[800],
accentColor: red[800], accentColor: red[800],
invidiousServer: "vid.puffyan.us" invidiousServer: process.env.NEXT_PUBLIC_DEFAULT_SERVER as string
}; };
export const useSettings = (): [ export const useSettings = (): [

Loading…
Cancel
Save