diff --git a/components/form.js b/components/form.js index 1b2df92f..74ad74e0 100644 --- a/components/form.js +++ b/components/form.js @@ -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 }) => ( { + 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)} /> )} diff --git a/pages/wallet.js b/pages/wallet.js index 301cf805..1e4fc443 100644 --- a/pages/wallet.js +++ b/pages/wallet.js @@ -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) }} />