From 826c7c47785ee01d2b9267919132ada696425344 Mon Sep 17 00:00:00 2001 From: Melonai Date: Wed, 20 Jan 2021 23:18:09 +0100 Subject: Remade the client in SvelteKit --- client/src/Components/Button.js | 15 ------- client/src/Components/CopyButton.js | 24 ----------- client/src/Components/Form.js | 39 ----------------- client/src/Components/Form.svelte | 64 ++++++++++++++++++++++++++++ client/src/Components/Loader.js | 13 ------ client/src/Components/Response.js | 55 ------------------------ client/src/Components/Response.svelte | 33 ++++++++++++++ client/src/Components/ResponseContainer.js | 12 ------ client/src/Components/Responses.svelte | 24 +++++++++++ client/src/Components/Title.js | 12 ------ client/src/Components/Title.svelte | 22 ++++++++++ client/src/Components/icons/ArrowIcon.svelte | 10 +++++ client/src/Components/icons/CrossIcon.svelte | 10 +++++ 13 files changed, 163 insertions(+), 170 deletions(-) delete mode 100644 client/src/Components/Button.js delete mode 100644 client/src/Components/CopyButton.js delete mode 100644 client/src/Components/Form.js create mode 100644 client/src/Components/Form.svelte delete mode 100644 client/src/Components/Loader.js delete mode 100644 client/src/Components/Response.js create mode 100644 client/src/Components/Response.svelte delete mode 100644 client/src/Components/ResponseContainer.js create mode 100644 client/src/Components/Responses.svelte delete mode 100644 client/src/Components/Title.js create mode 100644 client/src/Components/Title.svelte create mode 100644 client/src/Components/icons/ArrowIcon.svelte create mode 100644 client/src/Components/icons/CrossIcon.svelte (limited to 'client/src/Components') diff --git a/client/src/Components/Button.js b/client/src/Components/Button.js deleted file mode 100644 index b6ed91b..0000000 --- a/client/src/Components/Button.js +++ /dev/null @@ -1,15 +0,0 @@ -import React from 'react'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import {faArrowRight, faTimes} from '@fortawesome/free-solid-svg-icons'; - -function Button(props) { - return ( -
- -
- ) -} - -export default Button; \ No newline at end of file diff --git a/client/src/Components/CopyButton.js b/client/src/Components/CopyButton.js deleted file mode 100644 index 65c4cb9..0000000 --- a/client/src/Components/CopyButton.js +++ /dev/null @@ -1,24 +0,0 @@ -import React, {useState} from 'react'; -import copy from 'clipboard-copy'; - -function CopyButton(props) { - const [copied, setCopied] = useState(false); - - const handleClick = async () => { - await copy("https://sho.rest/" + props.hash); - setCopied(true); - }; - - let content; - if (copied) { - content = Link Copied!; - } else { - content = Copy Link; - } - - return ( - {content} - ) -} - -export default CopyButton; \ No newline at end of file diff --git a/client/src/Components/Form.js b/client/src/Components/Form.js deleted file mode 100644 index 979d9c9..0000000 --- a/client/src/Components/Form.js +++ /dev/null @@ -1,39 +0,0 @@ -import React, {useState} from 'react'; -import Button from './Button'; -import isURL from "validator/lib/isURL"; - -function Form(props) { - const [state, setState] = useState({value: '', valid: false}); - - const handleSubmit = () => { - if (state.valid) { - props.addRequest(state.value); - } - }; - - const handleChange = e => { - const userInput = e.target.value; - const valid = isURL('https://' + userInput); - setState({value: userInput, valid: valid}); - }; - - const handlePaste = e => { - e.preventDefault(); - const pattern = /^https?:\/\//; - setState({value: e.clipboardData.getData('Text').replace(pattern, ''), valid: false}); - }; - - return ( -
e.preventDefault()}> -
-
- https:// - -
-
-
- ) -} - -export default Form; \ No newline at end of file diff --git a/client/src/Components/Form.svelte b/client/src/Components/Form.svelte new file mode 100644 index 0000000..327d25d --- /dev/null +++ b/client/src/Components/Form.svelte @@ -0,0 +1,64 @@ + + + + +
+ + +
diff --git a/client/src/Components/Loader.js b/client/src/Components/Loader.js deleted file mode 100644 index 3f4c47f..0000000 --- a/client/src/Components/Loader.js +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react'; - -function Loader() { - return ( -
-
-
-
-
- ) -} - -export default Loader; \ No newline at end of file diff --git a/client/src/Components/Response.js b/client/src/Components/Response.js deleted file mode 100644 index f69000a..0000000 --- a/client/src/Components/Response.js +++ /dev/null @@ -1,55 +0,0 @@ -import React, {useEffect, useState} from 'react'; -import axios from "axios"; -import Loader from "./Loader"; -import CopyButton from "./CopyButton"; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { faBomb } from '@fortawesome/free-solid-svg-icons'; - -function Response(props){ - const CancelToken = axios.CancelToken; - const [requestState, setRequestState] = useState({loading: true, cancel: CancelToken.source()}); - - useEffect(() => { - axios.post('/', {url: "https://" + props.url}, {cancelToken: requestState.cancel.token}) - .then((r) => { - setRequestState({loading: false, hash: r.data.hash, cancel: requestState.cancel}); - }).catch((e) => { - if (!axios.isCancel(e)) { - setRequestState({loading: false, error: true, cancel: requestState.cancel}); - } - }); - - return () => { - requestState.cancel.cancel(); - }; - }, [props.url, requestState.cancel]) - - let text; - let rightItem; - if (!requestState.loading) { - if (!requestState.error) { - rightItem = ; - if (props.url.length < 20) { - text = - The short link for {props.url} is
sho.rest/{requestState.hash}
; - } else { - text = - The short link for your URL is
sho.rest/{requestState.hash}
; - } - } else { - rightItem = ; - text = There was an error. - } - } else { - text = - } - - return ( -
-
{text}
- {rightItem} -
- ) -} - -export default Response; \ No newline at end of file diff --git a/client/src/Components/Response.svelte b/client/src/Components/Response.svelte new file mode 100644 index 0000000..215af1b --- /dev/null +++ b/client/src/Components/Response.svelte @@ -0,0 +1,33 @@ + + + + +
+ {info.url} + {#await info.response} + Loading... + {:then { hash }} + sho.rest/{hash} + {:catch { error }} + {error} + {/await} +
\ No newline at end of file diff --git a/client/src/Components/ResponseContainer.js b/client/src/Components/ResponseContainer.js deleted file mode 100644 index 8fad4bd..0000000 --- a/client/src/Components/ResponseContainer.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react'; -import Response from "./Response"; - -function ResponseContainer(props){ - const responseContent = props.requests.map((r) => ); - - return ( - responseContent - ) -} - -export default ResponseContainer; \ No newline at end of file diff --git a/client/src/Components/Responses.svelte b/client/src/Components/Responses.svelte new file mode 100644 index 0000000..7124f1e --- /dev/null +++ b/client/src/Components/Responses.svelte @@ -0,0 +1,24 @@ + + + + +
    + {#each $links as info (info.nonce)} +
  • + +
  • + {/each} +
\ No newline at end of file diff --git a/client/src/Components/Title.js b/client/src/Components/Title.js deleted file mode 100644 index 8ea96a9..0000000 --- a/client/src/Components/Title.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react'; - -function Title() { - return ( -
- sho.rest
- Made with ❤ by Mel -
- ) -} - -export default Title; \ No newline at end of file diff --git a/client/src/Components/Title.svelte b/client/src/Components/Title.svelte new file mode 100644 index 0000000..4266eb1 --- /dev/null +++ b/client/src/Components/Title.svelte @@ -0,0 +1,22 @@ + + +
+ +
+

sho.rest

+

Made with ❤ by Mel

+
+
diff --git a/client/src/Components/icons/ArrowIcon.svelte b/client/src/Components/icons/ArrowIcon.svelte new file mode 100644 index 0000000..52c79ae --- /dev/null +++ b/client/src/Components/icons/ArrowIcon.svelte @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/client/src/Components/icons/CrossIcon.svelte b/client/src/Components/icons/CrossIcon.svelte new file mode 100644 index 0000000..55525d8 --- /dev/null +++ b/client/src/Components/icons/CrossIcon.svelte @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file -- cgit 1.4.1