From e907b408456478364baf941e095588922656dcb5 Mon Sep 17 00:00:00 2001 From: Satoshi Nakamoto Date: Tue, 10 Oct 2023 19:15:10 -0400 Subject: [PATCH] * Hide suggestions if the user is typing a ln addr that is not on stacker.news * Don't select suggestion with tab in this particular instance of InputUseSuggest --- components/form.js | 26 ++++++++++++++++++++++---- pages/wallet.js | 8 ++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/components/form.js b/components/form.js index 4a7e15f9..3ef15358 100644 --- a/components/form.js +++ b/components/form.js @@ -394,15 +394,28 @@ function InputInner ({ ) } -export function UserSuggest ({ query, onSelect, dropdownStyle, children, transformUser = user => user }) { +export function UserSuggest ({ + query, onSelect, dropdownStyle, children, + transformUser = user => user, selectWithTab = true, filterUsers = () => true +}) { const [getUsers] = useLazyQuery(TOP_USERS, { onCompleted: data => { - setSuggestions({ array: data.topUsers.users.map(transformUser), index: 0 }) + setSuggestions({ + array: data.topUsers.users + .filter((...args) => filterUsers(query, ...args)) + .map(transformUser), + index: 0 + }) } }) const [getSuggestions] = useLazyQuery(USER_SEARCH, { onCompleted: data => { - setSuggestions({ array: data.searchUsers.map(transformUser), index: 0 }) + setSuggestions({ + array: data.searchUsers + .filter((...args) => filterUsers(query, ...args)) + .map(transformUser), + index: 0 + }) } }) @@ -449,6 +462,9 @@ export function UserSuggest ({ query, onSelect, dropdownStyle, children, transfo break case 'Tab': case 'Enter': + if (e.code === 'Tab' && !selectWithTab) { + break + } if (suggestions.array?.length === 0) { break } @@ -486,13 +502,15 @@ export function UserSuggest ({ query, onSelect, dropdownStyle, children, transfo ) } -export function InputUserSuggest ({ label, groupClassName, transformUser, ...props }) { +export function InputUserSuggest ({ label, groupClassName, transformUser, filterUsers, selectWithTab, ...props }) { const [ovalue, setOValue] = useState() const [query, setQuery] = useState() return ( diff --git a/pages/wallet.js b/pages/wallet.js index eb12625d..301cf805 100644 --- a/pages/wallet.js +++ b/pages/wallet.js @@ -356,6 +356,14 @@ export function LnAddrWithdrawal () { autoFocus onChange={onAddrChange} 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) + }} />