show different message when search returned no contacts
This commit is contained in:
+2
-2
@@ -69,8 +69,8 @@ export const MAX_IMAGE_DIM = 768;
|
||||
// hidden under "+X more"
|
||||
export const MAX_ONLINE_IN_TOPIC = 4;
|
||||
|
||||
// Maximum length of topic title (and Private comment) or user name.
|
||||
export const MAX_TITLE_LENGTH = 40;
|
||||
// Maximum length of user name, topic title, and private comment.
|
||||
export const MAX_TITLE_LENGTH = 60;
|
||||
|
||||
// Link for "Contact Us".
|
||||
export const LINK_CONTACT_US = 'email:info@tinode.co';
|
||||
|
||||
+2
-1
@@ -61,10 +61,11 @@
|
||||
"messages_not_readable": "no access to messages",
|
||||
"peers_messaging_disabled": "Peer's messaging is disabled.",
|
||||
"enable_peers_messaging": "Enable",
|
||||
"search_for_contacts": "Use search to find contacts",
|
||||
"search_no_results": "Search returned no results",
|
||||
"tabtitle_find_user": "find",
|
||||
"tabtitle_new_group": "new group",
|
||||
"tabtitle_group_by_id": "by id",
|
||||
"search_for_contacts": "Use search to find contacts",
|
||||
"new_password_placeholder": "Enter new password",
|
||||
"label_reset_password": "Send a password reset email:",
|
||||
"credential_email_prompt": "Your registration email",
|
||||
|
||||
+3
-2
@@ -147,6 +147,7 @@
|
||||
"report_chat_warning": "Вы действительно хотите сообщить о нарушении и заблокировать этот чат?",
|
||||
"action_clear_messages": "Удалить сообщения",
|
||||
"clear_messages_warning": "Вы действительно хотите удалить все сообщения в чате? Их будет невозможно восстановить.",
|
||||
"topic_delete_warning": ":!![MISSING]!!:Are you sure you want to delete this conversation?",
|
||||
"topic_block_warning": ":!![MISSING]!!:Are you sure you want to block this conversation?"
|
||||
"topic_delete_warning": "Вы действительно хотите удалить этот чат?",
|
||||
"topic_block_warning": "Вы действительно хотите заблокировать этот чат?",
|
||||
"search_no_results": "Ничего не найдено"
|
||||
}
|
||||
|
||||
+3
-2
@@ -140,7 +140,7 @@
|
||||
"link_privacy_policy": "隐私政策",
|
||||
"action_delete_messages": "删除所有帖子",
|
||||
"action_block_contact": "屏蔽联系人",
|
||||
"delete_messages_warning": ":!![MISSING]!!:Are you sure you want to delete all mesages? It cannot be undone.",
|
||||
"delete_messages_warning": ":!![MISSING]!!:Are you sure you want to delete all messages? It cannot be undone.",
|
||||
"leave_chat_warning": ":!![MISSING]!!:Are you sure you want to leave this conversation.",
|
||||
"block_contact_warning": ":!![MISSING]!!:Are you sure you want to block this contact?",
|
||||
"action_report_chat": "检举垃圾邮件",
|
||||
@@ -148,5 +148,6 @@
|
||||
"action_clear_messages": ":!![MISSING]!!:Clear Messages",
|
||||
"clear_messages_warning": ":!![MISSING]!!:Are you sure you want to clear all messages? It cannot be undone.",
|
||||
"topic_delete_warning": ":!![MISSING]!!:Are you sure you want to delete this conversation?",
|
||||
"topic_block_warning": ":!![MISSING]!!:Are you sure you want to block this conversation?"
|
||||
"topic_block_warning": ":!![MISSING]!!:Are you sure you want to block this conversation?",
|
||||
"search_no_results": ":!![MISSING]!!:Search returned no results"
|
||||
}
|
||||
|
||||
+6
-2
@@ -62,10 +62,11 @@
|
||||
"messages_not_readable": "no access to messages",
|
||||
"peers_messaging_disabled": "Peer's messaging is disabled.",
|
||||
"enable_peers_messaging": "Enable",
|
||||
"search_for_contacts": "Use search to find contacts",
|
||||
"search_no_results": "Search returned no results",
|
||||
"tabtitle_find_user": "find",
|
||||
"tabtitle_new_group": "new group",
|
||||
"tabtitle_group_by_id": "by id",
|
||||
"search_for_contacts": "Use search to find contacts",
|
||||
"new_password_placeholder": "Enter new password",
|
||||
"label_reset_password": "Send a password reset email:",
|
||||
"credential_email_prompt": "Your registration email",
|
||||
@@ -299,7 +300,10 @@
|
||||
"block_contact_warning": "Вы действительно заблокировать этот контакт?",
|
||||
"report_chat_warning": "Вы действительно хотите сообщить о нарушении и заблокировать этот чат?",
|
||||
"action_clear_messages": "Удалить сообщения",
|
||||
"clear_messages_warning": "Вы действительно хотите удалить все сообщения в чате? Их будет невозможно восстановить."
|
||||
"clear_messages_warning": "Вы действительно хотите удалить все сообщения в чате? Их будет невозможно восстановить.",
|
||||
"topic_delete_warning": "Вы действительно хотите удалить этот чат?",
|
||||
"topic_block_warning": "Вы действительно хотите заблокировать этот чат?",
|
||||
"search_no_results": "Ничего не найдено"
|
||||
},
|
||||
"zh": {
|
||||
"archived_contacts": "已归档联系人 ({count})",
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
// Create new topic and invite users or send an invite.
|
||||
import React from 'react';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import { FormattedMessage, defineMessages, injectIntl } from 'react-intl';
|
||||
|
||||
import Tinode from 'tinode-sdk';
|
||||
|
||||
import ContactList from '../widgets/contact-list.jsx';
|
||||
import NewTopicById from '../widgets/new-topic-by-id.jsx';
|
||||
@@ -10,15 +12,30 @@ import SearchContacts from '../widgets/search-contacts.jsx';
|
||||
import HashNavigation from '../lib/navigation.js';
|
||||
import { vcard } from '../lib/utils.js';
|
||||
|
||||
export default class NewTopicView extends React.Component {
|
||||
const messages = defineMessages({
|
||||
search_for_contacts: {
|
||||
id: "search_for_contacts",
|
||||
defaultMessage: "Use search to find contacts",
|
||||
description: "Text shown in contacts view when user entered no search query."
|
||||
},
|
||||
search_no_results: {
|
||||
id: "search_no_results",
|
||||
defaultMessage: "Search returned no results",
|
||||
description: "Text shown in contacts view when query returned no results."
|
||||
}
|
||||
});
|
||||
|
||||
class NewTopicView extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
tabSelected: 'p2p'
|
||||
tabSelected: 'p2p',
|
||||
searchQuery: null
|
||||
};
|
||||
|
||||
this.handleTabClick = this.handleTabClick.bind(this);
|
||||
this.handleSearchContacts = this.handleSearchContacts.bind(this);
|
||||
this.handleContactSelected = this.handleContactSelected.bind(this);
|
||||
this.handleNewGroupSubmit = this.handleNewGroupSubmit.bind(this);
|
||||
this.handleGroupByID = this.handleGroupByID.bind(this);
|
||||
@@ -34,6 +51,11 @@ export default class NewTopicView extends React.Component {
|
||||
this.setState({tabSelected: e.currentTarget.dataset.id});
|
||||
}
|
||||
|
||||
handleSearchContacts(query) {
|
||||
this.props.onSearchContacts(query);
|
||||
this.setState({searchQuery: Tinode.isNullValue(query) ? null : query});
|
||||
}
|
||||
|
||||
handleContactSelected(sel) {
|
||||
if (this.state.tabSelected === 'p2p') {
|
||||
HashNavigation.navigateTo(HashNavigation.removeUrlParam(window.location.hash, 'tab'));
|
||||
@@ -52,6 +74,9 @@ export default class NewTopicView extends React.Component {
|
||||
}
|
||||
|
||||
render() {
|
||||
const {formatMessage} = this.props.intl;
|
||||
const no_contacts_placeholder = formatMessage(this.state.searchQuery ?
|
||||
messages.search_no_results : messages.search_for_contacts);
|
||||
return (
|
||||
<div className="flex-column">
|
||||
<ul className="tabbar">
|
||||
@@ -81,21 +106,21 @@ export default class NewTopicView extends React.Component {
|
||||
onSubmit={this.handleGroupByID}
|
||||
onError={this.props.onError} /> :
|
||||
<div className="flex-column">
|
||||
<SearchContacts type="p2p"
|
||||
onSearchContacts={this.props.onSearchContacts} />
|
||||
<FormattedMessage id="search_for_contacts" defaultMessage="Use search to find contacts"
|
||||
description="Prompt in search field.">{
|
||||
(search_for_contacts) => <ContactList
|
||||
contacts={this.props.searchResults}
|
||||
myUserId={this.props.myUserId}
|
||||
emptyListMessage={search_for_contacts}
|
||||
showOnline={false}
|
||||
showUnread={false}
|
||||
showContextMenu={false}
|
||||
onTopicSelected={this.handleContactSelected} />
|
||||
}</FormattedMessage>
|
||||
<SearchContacts
|
||||
type="p2p"
|
||||
onSearchContacts={this.handleSearchContacts} />
|
||||
<ContactList
|
||||
contacts={this.props.searchResults}
|
||||
myUserId={this.props.myUserId}
|
||||
emptyListMessage={no_contacts_placeholder}
|
||||
showOnline={false}
|
||||
showUnread={false}
|
||||
showContextMenu={false}
|
||||
onTopicSelected={this.handleContactSelected} />
|
||||
</div>}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
export default injectIntl(NewTopicView);
|
||||
|
||||
+53
-35
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+28
-15
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user