aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/components/ViewPaste.js
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/components/ViewPaste.js')
-rw-r--r--frontend/src/components/ViewPaste.js137
1 files changed, 0 insertions, 137 deletions
diff --git a/frontend/src/components/ViewPaste.js b/frontend/src/components/ViewPaste.js
deleted file mode 100644
index 9dd281c..0000000
--- a/frontend/src/components/ViewPaste.js
+++ /dev/null
@@ -1,137 +0,0 @@
-import React, { useEffect, useState, useRef } from 'react';
-import Error from './Err';
-import { Text } from './Inputs';
-import CodeRenderer from './renderers/Code'
-import PasteInfo from './PasteInfo';
-import PasswordModal from './modals/PasswordModal'
-import { FetchPaste, FetchPasswordPaste } from '../helpers/httpHelper'
-import { LANGS } from './renderers/Code'
-import RenderDispatch from './renderers/RenderDispatch'
-
-function fmtDateStr(dateString) {
- const d = new Date(dateString)
- const options = { hour: '2-digit', minute: '2-digit', year: 'numeric', month: 'long', day: 'numeric' }
- return d.toLocaleDateString("en-US", options).toLocaleLowerCase()
-}
-
-const ViewPaste = (props) => {
- const [title, setTitle] = useState('fetching paste...');
- const [content, setContent] = useState('');
- const [hasPass, setHasPass] = useState(false);
- const [enteredPass, setEnteredPass] = useState('');
- const [validPass, setValidPass] = useState(false);
- const [expiry, setExpiry] = useState('');
- const [theme, setTheme] = useState('atom');
- const [isRenderMode, setIsRenderMode] = useState(false);
- const [language, setLanguage] = useState(LANGS.detect);
-
- useEffect(() => {
- setIsRenderMode(language === 'latex' || language === 'markdown')
- }, [language])
-
- const ErrorLabelRef = useRef(null);
-
- function validatePass(pass, onErrorCallBack) {
- FetchPasswordPaste(props.hash, pass)
- .then((response) => {
- setValidPass(true)
- setStateFromData(response.data)
- }).catch((error) => {
- const resp = error.response
-
- // 401 unauth (bad pass)
- if (resp.status === 401) {
- onErrorCallBack("incorrect pass")
- return
- }
-
- // otherwise, just log it lmao
- if (resp !== undefined) {
- const errTxt = `${resp.status}: ${resp.data}`
- onErrorCallBack(errTxt)
- } else {
- // some weird err (e.g. network)
- onErrorCallBack(error)
- }
- });
- }
-
- function setStateFromData(data) {
- document.title = data.title
- setTitle(data.title)
- setContent(data.content)
- setLanguage(data.language)
- setExpiry(fmtDateStr(data.expiry))
- }
-
- useEffect(() => {
- FetchPaste(props.hash)
- .then((response) => {
- setStateFromData(response.data)
- }).catch((error) => {
- const resp = error.response
-
- // network err
- if (!resp) {
- ErrorLabelRef.current.showMessage(error)
- return
- }
-
- // catch 401 unauth (password protected)
- if (resp.status === 401) {
- setHasPass(true)
- return
- }
-
- // some weird err
- if (resp !== undefined) {
- const errTxt = `${resp.status}: ${resp.data}`
- ErrorLabelRef.current.showMessage(errTxt, -1)
- return
- }
-
- // some weird err (e.g. network)
- ErrorLabelRef.current.showMessage(error, -1)
- })
- }, [props.hash])
-
- function getDisplay() {
- return isRenderMode ? <RenderDispatch
- language={language}
- content={content}
- /> : <CodeRenderer
- content={content}
- lang={language}
- theme={theme}
- id="pasteInput" />
- }
-
- return (
- <div>
- <PasswordModal
- hasPass={hasPass}
- validPass={validPass}
- value={enteredPass}
- onChange={(e) => setEnteredPass(e.target.value)}
- validateCallback={validatePass} />
- <Text
- label="title"
- value={title}
- id="titleInput"
- readOnly />
- {getDisplay()}
- <PasteInfo
- hash={props.hash}
- lang={language}
- theme={theme}
- expiry={expiry}
- toggleRenderCallback={() => setIsRenderMode(!isRenderMode)}
- isRenderMode={isRenderMode}
- onChange={(e) => setTheme(e.target.value)}
- err={<Error ref={ErrorLabelRef} />}
- />
- </div>
- );
-}
-
-export default ViewPaste \ No newline at end of file