From 96d1f74f1423f2aed97772cef97d1eb2d4a77cf2 Mon Sep 17 00:00:00 2001 From: Luke Date: Sun, 17 Apr 2022 18:22:19 +0200 Subject: [PATCH] feat(client/web): Set clipboard export --- resource/main.lua | 7 +++++++ web/src/App.tsx | 6 ++++++ web/src/utils/setClipboard.ts | 9 +++++++++ 3 files changed, 22 insertions(+) create mode 100644 web/src/utils/setClipboard.ts diff --git a/resource/main.lua b/resource/main.lua index 4872acc..afe0650 100644 --- a/resource/main.lua +++ b/resource/main.lua @@ -8,3 +8,10 @@ lib = setmetatable({}, { rawset(self, name, fn) end }) + +function lib.setClipboard(value) + SendNUIMessage({ + action = 'setClipboard', + data = value + }) +end \ No newline at end of file diff --git a/web/src/App.tsx b/web/src/App.tsx index dd9b2e0..c963b48 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -4,8 +4,14 @@ import Progressbar from "./features/progress/Progressbar"; import TextUI from "./features/textui/TextUI"; import InputDialog from "./features/dialog/InputDialog"; import ContextMenu from "./features/menu/ContextMenu"; +import { useNuiEvent } from "./hooks/useNuiEvent"; +import { setClipboard } from "./utils/setClipboard"; const App: React.FC = () => { + useNuiEvent("setClipboard", (data: string) => { + setClipboard(data); + }); + return ( <> diff --git a/web/src/utils/setClipboard.ts b/web/src/utils/setClipboard.ts new file mode 100644 index 0000000..c046bf0 --- /dev/null +++ b/web/src/utils/setClipboard.ts @@ -0,0 +1,9 @@ +// yoinked from https://github.com/project-error/npwd/blob/d8dc5b7f47faf5fc581ffee30f31ff61d184cfe7/phone/src/os/phone/hooks/useClipboard.ts#L1 +export const setClipboard = (value: string) => { + const clipElem = document.createElement('input'); + clipElem.value = value; + document.body.appendChild(clipElem); + clipElem.select(); + document.execCommand('copy'); + document.body.removeChild(clipElem); +}; \ No newline at end of file