summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2026-01-24 10:34:49 +0100
committerRoman Smrž <roman.smrz@seznam.cz>2026-01-24 10:34:49 +0100
commitf2eec293b397a9cf444106a06bc3edbbc0eb72d6 (patch)
tree08e6d4c7cea6cb3ca3e5d621c4ff371408c992eb
parent49687be2f33c6bef15ead4de5cb3f7f439363887 (diff)
Copy invite to clipboardHEADmaster
-rw-r--r--src/Main.hs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/Main.hs b/src/Main.hs
index 3c6f96d..66c8126 100644
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -109,6 +109,7 @@ setup = do
H.button ! A.type_ "submit" $ "create invite"
H.div ! A.id "invite_generated" $ do
H.span ! A.id "invite_generated_url" $ return ()
+ H.button ! A.id "invite_clipboard" $ "copy to clipboard"
H.hr
H.div $ do
H.h2 $ do
@@ -190,6 +191,7 @@ setup = do
inviteGenerateInput <- JS.getElementById "invite_name"
inviteGenerateForm <- JS.getElementById "invite_generate"
inviteGeneratedUrl <- JS.getElementById "invite_generated_url"
+ inviteClipboard <- JS.getElementById "invite_clipboard"
JS.addEventListener inviteGenerateForm "submit" $ \_ -> do
name <- T.pack . fromJSString <$> js_get_value inviteGenerateInput
js_set_value inviteGenerateInput $ toJSString ""
@@ -205,6 +207,8 @@ setup = do
case res of
Right inviteText -> js_set_textContent inviteGeneratedUrl $ toJSString inviteText
Left err -> JS.consoleLog $ "Failed to send message: " <> showErebosError err
+ JS.addEventListener inviteClipboard "click" $ \_ -> do
+ js_navigator_clipboard_writeText =<< js_get_textContent inviteGeneratedUrl
peerAddInput <- JS.getElementById "peer_add_input"
peerAddForm <- JS.getElementById "peer_add_form"
@@ -410,6 +414,9 @@ foreign import javascript unsafe "$1.innerHTML = $2"
foreign import javascript unsafe "$1.textContent = $2"
js_set_textContent :: JSVal -> JSString -> IO ()
+foreign import javascript unsafe "$1.textContent"
+ js_get_textContent :: JSVal -> IO JSString
+
foreign import javascript unsafe "$1.firstChild"
js_get_firstChild :: JSVal -> IO JSVal
@@ -442,3 +449,6 @@ foreign import javascript unsafe "window.location.href"
foreign import javascript unsafe "history.pushState(null, '', $1)"
js_history_pushState :: JSString -> IO ()
+
+foreign import javascript unsafe "navigator.clipboard.writeText($1)"
+ js_navigator_clipboard_writeText :: JSString -> IO ()