diff --git a/src/views/acc-general-view.jsx b/src/views/acc-general-view.jsx index 268d238c..302aafc6 100644 --- a/src/views/acc-general-view.jsx +++ b/src/views/acc-general-view.jsx @@ -135,8 +135,10 @@ export default class AccGeneralView extends React.Component {
- -
{ + +
{ (full_name_placeholder) =>
- + {APP_NAME}
@@ -35,7 +36,8 @@ export default class AccSupportView extends React.PureComponent { {Tinode.getLibrary()}
- + {this.props.serverVersion}
diff --git a/src/views/create-account-view.jsx b/src/views/create-account-view.jsx index 1acaf49f..9b2164ee 100644 --- a/src/views/create-account-view.jsx +++ b/src/views/create-account-view.jsx @@ -79,11 +79,13 @@ export default class CreateAccountView extends React.PureComponent {
- { + { (login_prompt) => } - { + { (password_prompt) => @@ -110,7 +112,8 @@ export default class CreateAccountView extends React.PureComponent {
- { + { (stay_logged_in) => }
diff --git a/src/views/edit-account-view.jsx b/src/views/edit-account-view.jsx index 6b49ef04..d3aeaa99 100644 --- a/src/views/edit-account-view.jsx +++ b/src/views/edit-account-view.jsx @@ -48,13 +48,16 @@ export default class EditAccountView extends React.Component { diff --git a/src/views/info-view.jsx b/src/views/info-view.jsx index 91ce42fd..eb117501 100644 --- a/src/views/info-view.jsx +++ b/src/views/info-view.jsx @@ -615,7 +615,8 @@ class InfoView extends React.Component { {this.state.moreInfoExpanded ?
- + {this.state.address}
{this.state.groupTopic ? @@ -692,7 +693,8 @@ class InfoView extends React.Component {
{this.state.owner ? <> - { + { (tags) => + description="Placeholer for username/login"> { (login_prompt) => + description="Placeholder/prompt for entering password"> { (password_prompt) =>

Tinode Web

-

{version}

-

{this.props.serverVersion} ({this.props.serverAddress})

+

{version}

+

{this.props.serverVersion} ({this.props.serverAddress})

); diff --git a/src/views/messages-view.jsx b/src/views/messages-view.jsx index 620f3a2c..8ea95bc7 100644 --- a/src/views/messages-view.jsx +++ b/src/views/messages-view.jsx @@ -45,6 +45,11 @@ const messages = defineMessages({ id: 'channel', defaultMessage: 'channel', description: 'Subtitle shown for channels in MessagesView instead of last seen' + }, + 'file_attachment_too_large': { + id: 'file_attachment_too_large', + defaultMessage: 'The file size {size} exceeds the {limit} limit.', + description: 'Error message when attachment is too large' } }); @@ -669,8 +674,8 @@ class MessagesView extends React.Component { if (file.size > maxExternAttachmentSize) { // Too large. - this.props.onError(this.props.intl.formatMessage({id: 'file_attachment_too_large'}, - {size: bytesToHumanSize(file.size), limit: bytesToHumanSize(maxExternAttachmentSize)}), 'err'); + this.props.onError(this.props.intl.formatMessage(messages.file_attachment_too_large, + {size: bytesToHumanSize(file.size), limit: bytesToHumanSize(maxExternAttachmentSize)}), 'err'); } else { this.setState({ docPreview: { file: file, diff --git a/src/views/tinode-web.jsx b/src/views/tinode-web.jsx index a976a50d..8a4f6e82 100644 --- a/src/views/tinode-web.jsx +++ b/src/views/tinode-web.jsx @@ -57,6 +57,11 @@ const messages = defineMessages({ id: 'code_doesnot_match', defaultMessage: 'Code does not match', description: 'Error message when the credential validation code is incorrect.' + }, + menu_item_info: { + id: 'menu_item_info', + defaultMessage: 'Info', + description: 'Show extended topic information' } }); @@ -1262,7 +1267,7 @@ class TinodeWeb extends React.Component { return [ subscribed ? { - title: this.props.intl.formatMessage({id: 'menu_item_info'}), + title: this.props.intl.formatMessage(messages.menu_item_info), handler: this.handleShowInfoView } : null, subscribed ? 'messages_clear' : null, diff --git a/src/views/validation-view.jsx b/src/views/validation-view.jsx index 04769821..c73e34d2 100644 --- a/src/views/validation-view.jsx +++ b/src/views/validation-view.jsx @@ -82,7 +82,7 @@ class ValidationView extends React.PureComponent {
diff --git a/src/widgets/alert.jsx b/src/widgets/alert.jsx index 23678a65..f5152ebf 100644 --- a/src/widgets/alert.jsx +++ b/src/widgets/alert.jsx @@ -11,13 +11,13 @@ export default class Alert extends React.PureComponent {
{this.props.onReject ? : null }
diff --git a/src/widgets/contact.jsx b/src/widgets/contact.jsx index 68b60ff0..43e3774e 100644 --- a/src/widgets/contact.jsx +++ b/src/widgets/contact.jsx @@ -32,7 +32,8 @@ export default class Contact extends React.Component { render() { let title = this.props.title; if (!title) { - title = ; + title = ; } else if (title.length > 30) { // FIXME: this is probably wrong for RTL languages. title = title.substring(0, 28) + '...'; diff --git a/src/widgets/context-menu.jsx b/src/widgets/context-menu.jsx index 909f4cd4..085beddd 100644 --- a/src/widgets/context-menu.jsx +++ b/src/widgets/context-menu.jsx @@ -57,6 +57,11 @@ const messages = defineMessages({ defaultMessage: 'Are you sure you want to delete this conversation?', description: 'Alert warning when deleting entire topic' }, + delete_messages_warning: { + id: 'delete_messages_warning', + defaultMessage: 'Are you sure you want to delete all messages for everyone? It cannot be undone.', + description: 'Alert dialog warning when hard-deleting all messages.' + }, unblock: { id: 'menu_item_unblock', defaultMessage: 'Unblock', @@ -82,7 +87,17 @@ const messages = defineMessages({ id: 'menu_item_archive_topic', defaultMessage: 'Archive', description: 'Move topic from the list of active chats to archive' - } + }, + edit_permissions: { + id: 'menu_item_edit_permissions', + defaultMessage: 'Edit permissions', + description: 'Menu item [Edit permissions]' + }, + clear_messages_warning: { + id: 'clear_messages_warning', + defaultMessage: 'Are you sure you want to clear all messages? It cannot be undone.', + description: 'Alert dialog warning when deleting all messages.' + }, }); class ContextMenu extends React.Component { @@ -108,7 +123,7 @@ class ContextMenu extends React.Component { handler: (params, errorHandler) => { return props.onShowAlert( formatMessage(messages.menu_item_clear_messages), // title - formatMessage({id: 'clear_messages_warning'}), // content + formatMessage(messages.clear_messages_warning), // content (() => { this.deleteMessages(true, false, params, errorHandler); }), // onConfirm null, // "OK" true, // Show Reject button @@ -122,7 +137,7 @@ class ContextMenu extends React.Component { handler: (params, errorHandler) => { return props.onShowAlert( formatMessage(messages.menu_item_clear_messages_for_all), // title - formatMessage({id: 'delete_messages_warning'}), // content + formatMessage(message.delete_messages_warning), // content (() => { return this.deleteMessages(true, true, params, errorHandler); }), null, // "OK" true, // Show Reject button @@ -229,7 +244,7 @@ class ContextMenu extends React.Component { // menu_item_edit_permissions is defined elsewhere. 'permissions': { id: 'permissions', - title: formatMessage({id: 'menu_item_edit_permissions'}), + title: formatMessage(messages.menu_item_edit_permissions), handler: null }, 'member_delete': { diff --git a/src/widgets/doc-preview.jsx b/src/widgets/doc-preview.jsx index ac212190..ca9a3af7 100644 --- a/src/widgets/doc-preview.jsx +++ b/src/widgets/doc-preview.jsx @@ -37,8 +37,10 @@ export default class DocPreview extends React.PureComponent {
{iconFromMime(this.props.content.type)} -
{this.props.content.type || 'application/octet-stream'}
-
{bytesToHumanSize(this.props.content.size)}
+
{this.props.content.type || 'application/octet-stream'}
+
{bytesToHumanSize(this.props.content.size)}
{ @@ -76,9 +77,11 @@ export default class NewTopicGroup extends React.PureComponent { }
- { + { (placeholder) => } @@ -93,7 +96,8 @@ export default class NewTopicGroup extends React.PureComponent { defaultMessage="This is a channel" description="Checkbox label when creating a channel" />
- { + { (title) =>
diff --git a/src/widgets/tag-manager.jsx b/src/widgets/tag-manager.jsx index 4eb33462..dd7266cf 100644 --- a/src/widgets/tag-manager.jsx +++ b/src/widgets/tag-manager.jsx @@ -128,10 +128,10 @@ export default class TagManager extends React.Component { {this.props.onSubmit || this.props.onCancel ?
: null}