fix(Signatures): Fix paste signatures

This commit is contained in:
Dmitry Popov
2024-11-28 00:41:01 +01:00
parent 87e115e40d
commit 100f0be86a
3 changed files with 14 additions and 9 deletions

View File

@@ -11,6 +11,7 @@ import useRefState from 'react-usestateref';
import { Setting } from '../SystemSignatureSettingsDialog';
import { useHotkey } from '@/hooks/Mapper/hooks';
import useMaxWidth from '@/hooks/Mapper/hooks/useMaxWidth.ts';
import { useClipboard } from '@/hooks/Mapper/hooks/useClipboard';
import classes from './SystemSignaturesContent.module.scss';
import clsx from 'clsx';
@@ -83,6 +84,8 @@ export const SystemSignaturesContent = ({
const tooltipRef = useRef<WdTooltipHandlers>(null);
const { clipboardContent } = useClipboard();
const lazyDeleteValue = useMemo(() => {
return settings.find(setting => setting.key === LAZY_DELETE_SIGNATURES_SETTING)?.value ?? false;
}, [settings]);
@@ -202,16 +205,19 @@ export const SystemSignaturesContent = ({
[onSelect, selectable],
);
const handlePaste = async () => {
const clipboardContent = await navigator.clipboard.readText();
useEffect(() => {
if (refData.current.selectable) {
return;
}
if (!clipboardContent) {
if (!clipboardContent?.text) {
return;
}
handlePaste(clipboardContent.text);
}, [clipboardContent, selectable, lazyDeleteValue]);
const handlePaste = async (clipboardContent: string) => {
const newSignatures = parseSignatures(
clipboardContent,
settings.map(x => x.key),
@@ -221,8 +227,6 @@ export const SystemSignaturesContent = ({
};
useHotkey(true, ['a'], handleSelectAll);
useHotkey(true, ['v'], handlePaste);
useHotkey(false, ['Delete'], handleDeleteSelected);
useEffect(() => {

View File

@@ -1,13 +1,13 @@
import { useState, useEffect, useCallback } from 'react';
export const useClipboard = () => {
const [clipboardContent, setClipboardContent] = useState<string | null>(null);
const [clipboardContent, setClipboardContent] = useState<{ text: string } | null>(null);
const [error, setError] = useState<string | null>(null);
const getClipboardContent = useCallback(async () => {
try {
const text = await navigator.clipboard.readText();
setClipboardContent(text);
setClipboardContent({ text });
setError(null);
} catch (err) {
setError('Failed to read clipboard content.');
@@ -18,7 +18,7 @@ export const useClipboard = () => {
const handlePaste = (event: ClipboardEvent) => {
const text = event.clipboardData?.getData('text');
if (text) {
setClipboardContent(text);
setClipboardContent({ text });
setError(null);
}
};

View File

@@ -55,7 +55,8 @@ defmodule WandererApp.Api.MapSystemSignature do
:description,
:kind,
:group,
:type
:type,
:custom_info
]
argument :system_id, :uuid, allow_nil?: false