aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/pages
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/pages')
-rw-r--r--frontend/src/pages/[hash].js11
-rw-r--r--frontend/src/pages/_app.js26
-rw-r--r--frontend/src/pages/raw/[hash].js13
3 files changed, 38 insertions, 12 deletions
diff --git a/frontend/src/pages/[hash].js b/frontend/src/pages/[hash].js
index 6d65f3e..f281621 100644
--- a/frontend/src/pages/[hash].js
+++ b/frontend/src/pages/[hash].js
@@ -7,27 +7,23 @@ import RenderDispatch from '../components/renderers/RenderDispatch'
import {Watermark} from "../components/Watermark";
import { useRouter } from 'next/router'
import resolvePaste from "../http/resolvePaste";
+import NextHead from "../components/NextHead";
export async function getServerSideProps(ctx) {
const data = await resolvePaste(ctx.params.hash)
-
- // Pass data to the page via props
return { props: { ...data } }
}
const ViewPaste = ({data, unauthorized, error}) => {
const router = useRouter()
const { hash } = router.query
- const [clientData, setClientData] = useState(data);
const [theme, setTheme] = useState('atom');
const [isRenderMode, setIsRenderMode] = useState(false);
const [enteredPass, setEnteredPass] = useState('');
const [correctPass, setCorrectPass] = useState(!unauthorized);
-
+ const [clientData, setClientData] = useState(data)
const {content, language, expiry, title} = clientData;
-
-
const getWithPassword = (password, errorCallback) => {
resolvePaste(hash, password)
.then(resp => {
@@ -54,6 +50,7 @@ const ViewPaste = ({data, unauthorized, error}) => {
return (
<div>
+ {!error && <NextHead data={data} />}
<PasswordModal
hasPass={unauthorized}
validPass={correctPass}
@@ -74,7 +71,7 @@ const ViewPaste = ({data, unauthorized, error}) => {
toggleRenderCallback={() => setIsRenderMode(!isRenderMode)}
isRenderMode={isRenderMode}
onChange={(e) => setTheme(e.target.value)}
- err={error}
+ err={unauthorized ? '' : error}
/>
<Watermark/>
</div>
diff --git a/frontend/src/pages/_app.js b/frontend/src/pages/_app.js
index e013c64..115f47f 100644
--- a/frontend/src/pages/_app.js
+++ b/frontend/src/pages/_app.js
@@ -2,6 +2,7 @@ import React from 'react'
import ThemeProvider from "../theme/ThemeProvider";
import GlobalStyle from "../theme/GlobalStyle";
import styled from "styled-components";
+import Head from "next/head";
const Main = styled.div`
margin-top: 10vh;
@@ -11,6 +12,31 @@ const Main = styled.div`
const App = ({ Component, pageProps }) => (
<ThemeProvider>
<GlobalStyle />
+ <Head>
+ <meta charSet="utf-8"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
+ <meta name="theme-color" content="#ffffff"/>
+ <meta
+ name="description"
+ content="a modern, open-source pastebin with latex and markdown rendering support"
+ />
+ <link rel="icon" href="/favicon.png" />
+ <link rel="preconnect" href="https://fonts.gstatic.com" />
+ <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;700&display=swap"
+ rel="stylesheet" />
+ <title>ctrl-v | a modern, open-source pastebin</title>
+ <script async src="https://www.googletagmanager.com/gtag/js?id=G-DE1TYY2F24" />
+ <script
+ dangerouslySetInnerHTML={{
+ __html: `
+ window.dataLayer = window.dataLayer || [];
+ function gtag() {dataLayer.push(arguments);}
+ gtag('js', new Date());
+ gtag('config', 'G-DE1TYY2F24');
+ `
+ }}
+ />
+ </Head>
<Main id="appElement">
<Component {...pageProps} />
</Main>
diff --git a/frontend/src/pages/raw/[hash].js b/frontend/src/pages/raw/[hash].js
index a100b4b..3374eea 100644
--- a/frontend/src/pages/raw/[hash].js
+++ b/frontend/src/pages/raw/[hash].js
@@ -2,6 +2,7 @@ import React from 'react';
import resolvePaste from "../../http/resolvePaste";
import {CodeLike} from "../../components/Common/mixins";
import styled from 'styled-components'
+import NextHead from "../../components/NextHead";
const RawText = styled.pre`
${CodeLike}
@@ -10,15 +11,17 @@ const RawText = styled.pre`
export async function getServerSideProps(ctx) {
const data = await resolvePaste(ctx.params.hash)
-
- // Pass data to the page via props
+ console.log(data)
return { props: { ...data } }
}
const Raw = ({error, data}) => {
- return <RawText>
- {data?.content || error}
- </RawText>
+ return <>
+ {!error && <NextHead data={data} />}
+ <RawText>
+ {data?.content || error}
+ </RawText>
+ </>
}
export default Raw \ No newline at end of file