Removes the need to start user searches with @ in the user fields across the app.

This commit is contained in:
Vitor Pamplona
2026-03-08 12:43:59 -04:00
parent 785ef8f2f3
commit 693931ed15
10 changed files with 36 additions and 36 deletions
@@ -275,8 +275,10 @@ open class EditPostViewModel : ViewModel() {
if (it.selection.collapsed) {
val lastWord = message.currentWord()
userSuggestionsMainMessage = UserSuggestionAnchor.MAIN_MESSAGE
userSuggestions?.processCurrentWord(lastWord)
if (lastWord.startsWith("@")) {
userSuggestionsMainMessage = UserSuggestionAnchor.MAIN_MESSAGE
userSuggestions?.processCurrentWord(lastWord)
}
}
}
@@ -41,7 +41,6 @@ import kotlinx.coroutines.flow.update
@Stable
class UserSuggestionState(
val account: Account,
val requireAtSymbol: Boolean = true,
) {
val invalidations = MutableStateFlow(0)
val currentWord = MutableStateFlow("")
@@ -81,18 +80,10 @@ class UserSuggestionState(
}
fun userSearchTermOrNull(currentWord: String): String? =
if (requireAtSymbol) {
if (currentWord.startsWith("@") && currentWord.length > 2) {
currentWord.removePrefix("@")
} else {
null
}
if (currentWord.length > 2) {
currentWord.removePrefix("@")
} else {
if (currentWord.length > 1) {
currentWord
} else {
null
}
null
}
fun updateDataSource(searchTerm: String?) {
@@ -585,9 +585,10 @@ open class CommentPostViewModel :
if (message.selection.collapsed) {
val lastWord = message.currentWord()
userSuggestionsMainMessage = UserSuggestionAnchor.MAIN_MESSAGE
userSuggestions?.processCurrentWord(lastWord)
if (lastWord.startsWith("@")) {
userSuggestionsMainMessage = UserSuggestionAnchor.MAIN_MESSAGE
userSuggestions?.processCurrentWord(lastWord)
}
emojiSuggestions?.processCurrentWord(lastWord)
}
@@ -565,10 +565,11 @@ class ChatNewMessageViewModel :
urlPreviews.update(newMessage)
if (message.selection.collapsed) {
userSuggestionsMainMessage = UserSuggestionAnchor.MAIN_MESSAGE
val lastWord = message.currentWord()
userSuggestions?.processCurrentWord(lastWord)
val lastWord = newMessage.currentWord()
if (lastWord.startsWith("@")) {
userSuggestionsMainMessage = UserSuggestionAnchor.MAIN_MESSAGE
userSuggestions?.processCurrentWord(lastWord)
}
emojiSuggestions?.processCurrentWord(lastWord)
}
@@ -529,9 +529,10 @@ open class ChannelNewMessageViewModel :
if (newMessage.selection.collapsed) {
val lastWord = newMessage.currentWord()
userSuggestionsMainMessage = UserSuggestionAnchor.MAIN_MESSAGE
userSuggestions?.processCurrentWord(lastWord)
if (lastWord.startsWith("@")) {
userSuggestionsMainMessage = UserSuggestionAnchor.MAIN_MESSAGE
userSuggestions?.processCurrentWord(lastWord)
}
emojiSuggestions?.processCurrentWord(lastWord)
}
@@ -485,9 +485,10 @@ open class NewProductViewModel :
if (message.selection.collapsed) {
val lastWord = message.currentWord()
userSuggestionsMainMessage = UserSuggestionAnchor.MAIN_MESSAGE
userSuggestions?.processCurrentWord(lastWord)
if (lastWord.startsWith("@")) {
userSuggestionsMainMessage = UserSuggestionAnchor.MAIN_MESSAGE
userSuggestions?.processCurrentWord(lastWord)
}
emojiSuggestions?.processCurrentWord(lastWord)
}
@@ -930,10 +930,11 @@ open class ShortNotePostViewModel :
urlPreviews.update(message)
if (message.selection.collapsed) {
val lastWord = message.currentWord()
userSuggestionsMainMessage = UserSuggestionAnchor.MAIN_MESSAGE
userSuggestions?.processCurrentWord(lastWord)
val lastWord = newMessage.currentWord()
if (lastWord.startsWith("@")) {
userSuggestionsMainMessage = UserSuggestionAnchor.MAIN_MESSAGE
userSuggestions?.processCurrentWord(lastWord)
}
emojiSuggestions?.processCurrentWord(lastWord)
}
@@ -71,7 +71,7 @@ class PeopleListViewModel : ViewModel() {
) {
if (!this::account.isInitialized || this.account != account) {
this.account = account
this.userSuggestions = UserSuggestionState(account, false)
this.userSuggestions = UserSuggestionState(account)
}
this.selectedDTag.tryEmit(selectedDTag)
@@ -71,7 +71,7 @@ class FollowPackViewModel : ViewModel() {
) {
if (!this::account.isInitialized || this.account != account) {
this.account = account
this.userSuggestions = UserSuggestionState(account, false)
this.userSuggestions = UserSuggestionState(account)
}
this.selectedDTag.tryEmit(selectedDTag)
@@ -522,10 +522,12 @@ class NewPublicMessageViewModel :
urlPreviews.update(newMessage)
if (message.selection.collapsed) {
userSuggestionsMainMessage = UserSuggestionAnchor.MAIN_MESSAGE
val lastWord = newMessage.currentWord()
if (lastWord.startsWith("@")) {
userSuggestionsMainMessage = UserSuggestionAnchor.MAIN_MESSAGE
userSuggestions?.processCurrentWord(lastWord)
}
val lastWord = message.currentWord()
userSuggestions?.processCurrentWord(lastWord)
emojiSuggestions?.processCurrentWord(lastWord)
}