fix for issues/17
This commit is contained in:
+32
-11
@@ -1080,7 +1080,7 @@ class ChipInput extends React.Component {
|
|||||||
this.state.sortedChips.map((item) => {
|
this.state.sortedChips.map((item) => {
|
||||||
chips.push(
|
chips.push(
|
||||||
<Chip
|
<Chip
|
||||||
onCancel={instance.handleChipCancel}
|
onCancel={this.handleChipCancel}
|
||||||
avatar={makeImageUrl(item.public ? item.public.photo : null)}
|
avatar={makeImageUrl(item.public ? item.public.photo : null)}
|
||||||
title={item.public ? item.public.fn : undefined}
|
title={item.public ? item.public.fn : undefined}
|
||||||
noAvatar={this.props.avatarDisabled}
|
noAvatar={this.props.avatarDisabled}
|
||||||
@@ -4667,6 +4667,35 @@ class TinodeWeb extends React.Component {
|
|||||||
this.resetContactList();
|
this.resetContactList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Merge search results and contact list to create a single flat
|
||||||
|
// list of kown contacts for GroupManager to use.
|
||||||
|
static prepareSearchableContacts(chatList, foundContacts) {
|
||||||
|
let merged = {};
|
||||||
|
|
||||||
|
// For chatList topics merge only p2p topics and convert them to the
|
||||||
|
// same format as foundContacts.
|
||||||
|
for (const c of chatList) {
|
||||||
|
if (Tinode.topicType(c.topic) == "p2p") {
|
||||||
|
merged[c.topic] = {
|
||||||
|
user: c.topic,
|
||||||
|
updated: c.updated,
|
||||||
|
public: c.public,
|
||||||
|
private: c.private,
|
||||||
|
acs: c.acs
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add all foundCountacts if they have not been added already.
|
||||||
|
for (const c of foundContacts) {
|
||||||
|
if (!merged[c.user]) {
|
||||||
|
merged[c.user] = c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Object.values(merged);
|
||||||
|
}
|
||||||
|
|
||||||
resetContactList() {
|
resetContactList() {
|
||||||
let newState = {
|
let newState = {
|
||||||
chatList: []
|
chatList: []
|
||||||
@@ -4679,11 +4708,7 @@ class TinodeWeb extends React.Component {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
// Merge search results and chat list.
|
// Merge search results and chat list.
|
||||||
let merged = {};
|
newState.searchableContacts = TinodeWeb.prepareSearchableContacts(newState.chatList, this.state.searchResults);
|
||||||
for (const c of newState.chatList.concat(this.state.searchResults)) {
|
|
||||||
merged[c.topic] = c;
|
|
||||||
}
|
|
||||||
newState.searchableContacts = Object.values(merged);
|
|
||||||
this.setState(newState);
|
this.setState(newState);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4719,13 +4744,9 @@ class TinodeWeb extends React.Component {
|
|||||||
this.state.tinode.getFndTopic().contacts((s) => {
|
this.state.tinode.getFndTopic().contacts((s) => {
|
||||||
foundContacts.push(s);
|
foundContacts.push(s);
|
||||||
});
|
});
|
||||||
let merged = {};
|
|
||||||
for (const c of foundContacts.concat(this.state.chatList)) {
|
|
||||||
merged[c.topic] = c;
|
|
||||||
}
|
|
||||||
this.setState({
|
this.setState({
|
||||||
searchResults: foundContacts,
|
searchResults: foundContacts,
|
||||||
searchableContacts: Object.values(merged)
|
searchableContacts: TinodeWeb.prepareSearchableContacts(this.state.chatList, foundContacts)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user