feat: sync and update with all changes from fork (#720)

* feat: sync and update with all changes from fork
* refactor: extract clipboard copy logic into custom hook
* fix: correct spelling of DEFAULT_REFRESH_FREQUENCY_MS in Stamps and WalletBalance providers
* refactor(ui-tests): replace fixed sleeps with condition-based waits
* fix: handle null values for size and granteeCount in infoGroups
* fix(lint): add newline at end of file in useClipboardCopy hook
* fix(ui-tests): page.goto URL
* refactor: update import paths for useClipboardCopy

---------

Co-authored-by: Ferenc Sárai <sarai.ferenc@gmail.com>
This commit is contained in:
Bálint Ujvári
2026-03-02 11:34:39 +01:00
committed by GitHub
parent b0f00a624a
commit 519c411db0
303 changed files with 16609 additions and 29415 deletions
+33
View File
@@ -0,0 +1,33 @@
import { IconButton } from '@mui/material'
import { closeSnackbar, useSnackbar } from 'notistack'
import { useState } from 'react'
import CloseLineIcon from 'remixicon-react/CloseLineIcon'
export function useClipboardCopy(value: string) {
const { enqueueSnackbar } = useSnackbar()
const [copied, setCopied] = useState(false)
const handleCopy = async () => {
try {
await navigator.clipboard.writeText(value)
setCopied(true)
} catch {
enqueueSnackbar(`Failed to copy text`, {
variant: 'error',
action: key => (
<IconButton onClick={() => closeSnackbar(key)} size="small" color="inherit">
<CloseLineIcon fontSize="small" />
</IconButton>
),
})
}
}
const tooltipCloseHandler = () => setCopied(false)
return {
copied,
handleCopy,
tooltipCloseHandler,
}
}