diff options
Diffstat (limited to 'frontend/src/components/ViewPaste.js')
| -rw-r--r-- | frontend/src/components/ViewPaste.js | 137 |
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 |