From 4734fb3f72ac94655d171894bd4cdd5f79be694e Mon Sep 17 00:00:00 2001 From: jackyzha0 Date: Sun, 7 Mar 2021 07:57:10 -0800 Subject: refactor to use useFetchPaste hook --- frontend/src/components/ViewPaste.js | 137 ----------------------------------- 1 file changed, 137 deletions(-) delete mode 100644 frontend/src/components/ViewPaste.js (limited to 'frontend/src/components/ViewPaste.js') 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 ? : - } - - return ( -
- setEnteredPass(e.target.value)} - validateCallback={validatePass} /> - - {getDisplay()} - setIsRenderMode(!isRenderMode)} - isRenderMode={isRenderMode} - onChange={(e) => setTheme(e.target.value)} - err={} - /> -
- ); -} - -export default ViewPaste \ No newline at end of file -- cgit v1.2.3