diff --git a/src/web/binaryUpload.coffee b/src/web/binaryUpload.coffee index 1788339..1e206ca 100644 --- a/src/web/binaryUpload.coffee +++ b/src/web/binaryUpload.coffee @@ -7,7 +7,6 @@ import * as crypto from "../crypto" import * as util from "../util" export default BinaryUpload = -> - [openDialog, renderDialog] = hooks.useDialog() [encrypt, toggleEncrypt] = hooks.useToggle false [encrypting, setEncrypting] = useState false [file, setFile] = useState null @@ -15,8 +14,7 @@ export default BinaryUpload = -> # Paste hook and event clearFile = (status) -> setFile null if status == 200 - [doPaste, pasting, progress] = hooks.usePaste openDialog, - useCallback clearFile, [] + [doPaste, pasting, progress] = hooks.usePaste useCallback clearFile, [] # Dropzone hook and event onDrop = (files) -> @@ -38,7 +36,6 @@ export default BinaryUpload = -> doUpload = useCallback doUpload, [file, encrypt, doPaste]
- {renderDialog()}
@@ -54,7 +51,7 @@ export default BinaryUpload = ->
- + - -export default HelpButton \ No newline at end of file + \ No newline at end of file diff --git a/src/web/home.coffee b/src/web/home.coffee index e39dbbd..a147697 100644 --- a/src/web/home.coffee +++ b/src/web/home.coffee @@ -2,6 +2,7 @@ import React, { useState } from "react" import { BrowserRouter as Router, Route, Switch, Redirect } from "react-router-dom" import { AnimatedSwitch, spring } from 'react-router-transition' import * as hooks from "./hooks" +import DialogContext from "./dialogContext" import Pastebin from "./pastebin" import BinaryUpload from "./binaryUpload" import FileViewerDispatcher from "./fileViewerDispatcher" @@ -32,33 +33,35 @@ export default Home = ->
- - - - { - # Use `render` instead of `component` to prevent re-rendering the child - # when parent is re-rendered (however this prevents passing match props) - } - } - /> - } - /> - - - + + + + + { + # Use `render` instead of `component` to prevent re-rendering the child + # when parent is re-rendered (however this prevents passing match props) + } + } + /> + } + /> + + + +
{renderDialog()}
\ No newline at end of file diff --git a/src/web/hooks.coffee b/src/web/hooks.coffee index 60d723f..e1a36d0 100644 --- a/src/web/hooks.coffee +++ b/src/web/hooks.coffee @@ -1,5 +1,6 @@ -import React, { useState, useCallback, useEffect } from "react" +import React, { useState, useCallback, useEffect, useContext } from "react" import ReactModal from "react-modal" +import DialogContext from "./dialogContext" # Simple abstraction for a toggling state export useToggle = (defVal) -> @@ -73,7 +74,8 @@ export useXhrProgress = -> ] # Handles shared file-uploading logic between text / binary pasting -export usePaste = (openDialog, callback) -> +export usePaste = (callback) -> + openDialog = useContext DialogContext [pasting, setPasting] = useState false [progress, _, beginXHR] = useXhrProgress() diff --git a/src/web/pastebin.coffee b/src/web/pastebin.coffee index b5ce279..73f5f31 100644 --- a/src/web/pastebin.coffee +++ b/src/web/pastebin.coffee @@ -1,19 +1,17 @@ -import React, { useState, useCallback } from "react" +import React, { useState, useCallback, useContext } from "react" import * as hooks from "./hooks" import HelpButton from "./helpButton" import LinkButton from "./util/linkButton" import ContentEditable from "./util/contentEditable" export default Pastebin = -> - [openDialog, renderDialog] = hooks.useDialog() [highlight, toggleHighlight] = hooks.useToggle false [text, setText] = useState "" # Paste hook and events clearText = (status) -> setText "" if status == 200 - [doPaste, pasting, _] = hooks.usePaste openDialog, - useCallback clearText, [] + [doPaste, pasting, _] = hooks.usePaste useCallback clearText, [] onEditTextUpdate = (ev) -> setText ev.target.value @@ -28,7 +26,6 @@ export default Pastebin = -> paste = useCallback paste, [text, doPaste]
- {renderDialog()} plainText />
- +