fix corner cases in lightning address autosuggestions

This commit is contained in:
keyan 2023-10-12 15:29:22 -05:00
parent 6516ce9c9e
commit 8f034f0e0a
2 changed files with 18 additions and 13 deletions

View File

@ -439,7 +439,8 @@ export function UserSuggest ({
useEffect(() => {
if (query !== undefined) {
const q = query?.replace(/^[@ ]+|[ ]+$/g, '')
// remove both the leading @ and any @domain after nym
const q = query?.replace(/^[@ ]+|[ ]+$/g, '').replace(/@[^\s]*$/, '')
if (q === '') {
getUsers({ variables: { by: 'stacked', when: 'week', limit: 5 } })
} else {
@ -516,7 +517,10 @@ export function UserSuggest ({
)
}
export function InputUserSuggest ({ label, groupClassName, transformUser, filterUsers, selectWithTab, ...props }) {
export function InputUserSuggest ({
label, groupClassName, transformUser, filterUsers,
selectWithTab, onChange, transformQuery, ...props
}) {
const [ovalue, setOValue] = useState()
const [query, setQuery] = useState()
return (
@ -525,20 +529,25 @@ export function InputUserSuggest ({ label, groupClassName, transformUser, filter
transformUser={transformUser}
filterUsers={filterUsers}
selectWithTab={selectWithTab}
onSelect={setOValue}
onSelect={(v) => {
// HACK ... ovalue does not trigger onChange
onChange && onChange(undefined, { target: { value: v } })
setOValue(v)
}}
query={query}
>
{({ onKeyDown, resetSuggestions }) => (
<InputInner
{...props}
autoComplete='off'
onChange={(_, e) => {
onChange={(formik, e) => {
onChange && onChange(formik, e)
setOValue(e.target.value)
setQuery(e.target.value.replace(/^[@ ]+|[ ]+$/g, ''))
}}
overrideValue={ovalue}
onKeyDown={onKeyDown}
onBlur={resetSuggestions}
onBlur={() => setTimeout(resetSuggestions, 100)}
/>
)}
</UserSuggest>

View File

@ -311,14 +311,13 @@ export function LnAddrWithdrawal () {
let options
try {
options = await lnAddrOptions(e.target.value)
setAddrOptions(options)
setFormSchema(lnAddrSchema(options))
} catch (e) {
console.log(e)
setAddrOptions(defaultOptions)
return
setFormSchema(lnAddrSchema())
}
setAddrOptions(options)
setFormSchema(lnAddrSchema(options))
}, 500, [setAddrOptions, setFormSchema])
return (
@ -358,11 +357,8 @@ export function LnAddrWithdrawal () {
transformUser={user => ({ ...user, name: `${user.name}@stacker.news` })}
selectWithTab={false}
filterUsers={(query) => {
if (!query.includes('@')) {
return true
}
const [, domain] = query.split('@')
return 'stacker.news'.startsWith(domain)
return !domain || 'stacker.news'.startsWith(domain)
}}
/>
<Input