Merge remote-tracking branch 'origin/bugfix_web' into bugfix_web

This commit is contained in:
Халимов Рустам
2026-04-17 00:47:47 +03:00
@@ -76,6 +76,7 @@ export default function GroupSettings({ chat, onClose, onGoToMessage }: GroupSet
const fileInputRef = useRef<HTMLInputElement>(null); const fileInputRef = useRef<HTMLInputElement>(null);
const searchInputRef = useRef<HTMLInputElement>(null); const searchInputRef = useRef<HTMLInputElement>(null);
const getSearchedUserId = (u: UserPresence & { userId?: string }) => u.id || u.userId || '';
// Keep local state in sync with chat prop // Keep local state in sync with chat prop
useEffect(() => { useEffect(() => {
@@ -95,7 +96,10 @@ export default function GroupSettings({ chat, onClose, onGoToMessage }: GroupSet
const results = await UserApi.searchUsers(searchQuery); const results = await UserApi.searchUsers(searchQuery);
// Filter out users already in the group // Filter out users already in the group
const memberIds = new Set(chat.members.map((m) => m.user.id)); const memberIds = new Set(chat.members.map((m) => m.user.id));
setSearchResults(results.filter((u) => !memberIds.has(u.id))); setSearchResults(results.filter((u) => {
const candidateId = getSearchedUserId(u as UserPresence & { userId?: string });
return !!candidateId && !memberIds.has(candidateId);
}));
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} finally { } finally {
@@ -565,10 +569,13 @@ export default function GroupSettings({ chat, onClose, onGoToMessage }: GroupSet
<Loader2 size={16} className="text-zinc-500 animate-spin" /> <Loader2 size={16} className="text-zinc-500 animate-spin" />
</div> </div>
)} )}
{searchResults.map((u) => ( {searchResults.map((u) => {
const candidateId = getSearchedUserId(u as UserPresence & { userId?: string });
if (!candidateId) return null;
return (
<button <button
key={u.id} key={candidateId}
onClick={() => handleAddMember(u.id)} onClick={() => handleAddMember(candidateId)}
className="flex items-center gap-3 w-full px-3 py-2 rounded-xl hover:bg-surface-hover transition-colors" className="flex items-center gap-3 w-full px-3 py-2 rounded-xl hover:bg-surface-hover transition-colors"
> >
<Avatar <Avatar
@@ -583,7 +590,8 @@ export default function GroupSettings({ chat, onClose, onGoToMessage }: GroupSet
</div> </div>
<UserPlus size={14} className="text-knot-400 flex-shrink-0" /> <UserPlus size={14} className="text-knot-400 flex-shrink-0" />
</button> </button>
))} );
})}
{searchQuery.trim() && !isSearching && searchResults.length === 0 && ( {searchQuery.trim() && !isSearching && searchResults.length === 0 && (
<p className="text-xs text-zinc-500 text-center py-2">{t('usersNotFound')}</p> <p className="text-xs text-zinc-500 text-center py-2">{t('usersNotFound')}</p>
)} )}