Skip to content

Commit c2aba45

Browse files
author
panther711
committed
refactoring due to facebook/react/pull/15047
1 parent 5040b76 commit c2aba45

23 files changed

+192
-161
lines changed

src/views/edit-account-view.jsx

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ export default class EditAccountView extends React.Component {
3939
this.handlePasswordUpdate = this.handlePasswordUpdate.bind(this);
4040
this.handleImageChanged = this.handleImageChanged.bind(this);
4141
this.handleCheckboxClick = this.handleCheckboxClick.bind(this);
42-
this.handleStartAddCred = this.handleStartAddCred.bind(this);
4342
this.handleCredChange = this.handleCredChange.bind(this);
4443
this.handleCredKeyDown = this.handleCredKeyDown.bind(this);
4544
this.handleCredEntered = this.handleCredEntered.bind(this);
@@ -92,10 +91,6 @@ export default class EditAccountView extends React.Component {
9291
}
9392
}
9493

95-
handleStartAddCred() {
96-
this.setState({addCredActive: true});
97-
}
98-
9994
handleCredChange(e) {
10095
this.setState({newCred: e.target.value, addCredInvalid: false});
10196
}
@@ -169,12 +164,11 @@ export default class EditAccountView extends React.Component {
169164
this.state.credentials.map((cred) => {
170165
credentials.push(<div key={cred.meth + ":" + cred.val + ":" + cred.done}>{cred.meth}: <tt>{cred.val}</tt>
171166
<span > {!cred.done ?
172-
<a href="javascript:;"
173-
onClick={this.props.onCredConfirm.bind(this, cred.meth, cred.val)}>
167+
<a href="#" onClick={(e) => {e.preventDefault(); this.props.onCredConfirm(cred.meth, cred.val);}}>
174168
<FormattedMessage id="validate_credential_action" defaultMessage="confirm"
175169
description="Validate credentail call to action" />
176170
</a>
177-
: null} <a href="javascript:;" onClick={this.props.onCredDelete.bind(this, cred.meth, cred.val)}><i
171+
: null} <a href="#" onClick={(e) => {e.preventDefault(); this.props.onCredDelete(cred.meth, cred.val);}}><i
178172
className="material-icons gray">delete_outline</i></a></span></div>);
179173
});
180174

@@ -270,7 +264,7 @@ export default class EditAccountView extends React.Component {
270264
placeholder="Phone number or email" required="required" autoFocus
271265
onChange={this.handleCredChange} onKeyDown={this.handleCredKeyDown} onBlur={this.handleCredEntered} />
272266
: null}
273-
<div><a href="javascript:;" onClick={this.handleStartAddCred}>+ Add another</a></div>
267+
<div><a href="#" onClick={(e) => {e.preventDefault(); this.setState({addCredActive: true});}}>+ Add another</a></div>
274268
</div>
275269
</div>
276270
<div className="hr" />
@@ -295,7 +289,7 @@ export default class EditAccountView extends React.Component {
295289
</div>
296290
<div className="hr" />
297291
<div className="panel-form-column">
298-
<a href="javascript:;" className="red flat-button" onClick={this.props.onLogout}>
292+
<a href="#" className="red flat-button" onClick={(e) => {e.preventDefault(); this.props.onLogout();}}>
299293
<i className="material-icons">exit_to_app</i> <FormattedMessage id="button_logout"
300294
defaultMessage="Logout" description="Button [Logout]" />
301295
</a>

src/views/info-view.jsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,8 @@ class InfoView extends React.Component {
339339
this.setState({showPermissionEditorFor: undefined});
340340
}
341341

342-
handleShowAddMembers() {
342+
handleShowAddMembers(e) {
343+
e.preventDefault();
343344
this.props.onInitFind();
344345
this.setState({showMemberPanel: true});
345346
}
@@ -354,6 +355,7 @@ class InfoView extends React.Component {
354355
}
355356

356357
handleLeave() {
358+
e.preventDefault();
357359
this.props.onLeaveTopic(this.props.topic);
358360
}
359361

@@ -594,13 +596,13 @@ class InfoView extends React.Component {
594596
</div>
595597
<div className="panel-form-row">
596598
{this.state.sharer ?
597-
<a href="javascript:;" className="flat-button" onClick={this.handleShowAddMembers}>
599+
<a href="#" className="flat-button" onClick={this.handleShowAddMembers}>
598600
<i className="material-icons">person_add</i> <FormattedMessage id="button_add_members"
599601
defaultMessage="Add members" description="Flat button [Add members] (to topic)" />
600602
</a>
601603
: null}
602604
{!this.state.owner ?
603-
<a href="javascript:;" className="red flat-button" onClick={this.handleLeave}>
605+
<a href="#" className="red flat-button" onClick={this.handleLeave}>
604606
<i className="material-icons">exit_to_app</i> <FormattedMessage id="button_leave"
605607
defaultMessage="Leave" description="Flat button [Leave] (topic)" />
606608
</a>
@@ -624,7 +626,7 @@ class InfoView extends React.Component {
624626
</div>
625627
:
626628
<div className="panel-form-row">
627-
<a href="javascript:;" className="red flat-button" onClick={this.handleLeave}>
629+
<a href="#" className="red flat-button" onClick={this.handleLeave}>
628630
<i className="material-icons">exit_to_app</i> <FormattedMessage id="action_leave_chat"
629631
defaultMessage="Leave" description="Action [Leave] chat" />
630632
</a>

src/views/messages-view.jsx

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ class MessagesView extends React.Component {
7373
this.handleFormResponse = this.handleFormResponse.bind(this);
7474
this.handleContextClick = this.handleContextClick.bind(this);
7575
this.handleShowContextMenuMessage = this.handleShowContextMenuMessage.bind(this);
76-
this.handleBackNavigation = this.handleBackNavigation.bind(this);
7776
this.handleNewChatAcceptance = this.handleNewChatAcceptance.bind(this);
7877
this.handleEnablePeer = this.handleEnablePeer.bind(this);
7978
}
@@ -486,15 +485,12 @@ class MessagesView extends React.Component {
486485
this.props.showContextMenu(params, menuItems);
487486
}
488487

489-
handleBackNavigation() {
490-
this.props.onHideMessagesView();
491-
}
492-
493488
handleNewChatAcceptance(action) {
494489
this.props.onNewChat(this.state.topic, action);
495490
}
496491

497-
handleEnablePeer() {
492+
handleEnablePeer(e) {
493+
e.preventDefault();
498494
this.props.onChangePermissions(this.state.topic, DEFAULT_ACCESS_MODE, this.state.topic);
499495
}
500496

@@ -579,7 +575,7 @@ class MessagesView extends React.Component {
579575
<div id="topic-view" className={this.props.hideSelf ? 'nodisplay' : null}>
580576
<div id="topic-caption-panel" className="caption-panel">
581577
{this.props.displayMobile ?
582-
<a href="javascript:;" id="hide-message-view" onClick={this.handleBackNavigation}>
578+
<a href="#" id="hide-message-view" onClick={(e) => {e.preventDefault(); this.props.onHideMessagesView();}}>
583579
<i className="material-icons">arrow_back</i>
584580
</a>
585581
:
@@ -605,7 +601,7 @@ class MessagesView extends React.Component {
605601
<div id="topic-users" />
606602
}
607603
<div>
608-
<a href="javascript:;" onClick={this.handleContextClick}>
604+
<a href="#" onClick={this.handleContextClick}>
609605
<i className="material-icons">more_vert</i>
610606
</a>
611607
</div>
@@ -638,7 +634,7 @@ class MessagesView extends React.Component {
638634
<div id="peer-messaging-disabled-note">
639635
<i className="material-icons secondary">block</i> <FormattedMessage
640636
id="peers_messaging_disabled" defaultMessage="Peer's messaging is disabled."
641-
description="Shown when the p2p peer's messaging is disabled" /> <a href="javascript:;"
637+
description="Shown when the p2p peer's messaging is disabled" /> <a href="#"
642638
onClick={this.handleEnablePeer}><FormattedMessage id="enable_peers_messaging"
643639
defaultMessage="Enable" description="Call to action to enable peer's messaging" /></a>.
644640
</div> : null}

src/views/new-topic-view.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,19 @@ export default class NewTopicView extends React.Component {
5656
<div className="flex-column">
5757
<ul className="tabbar">
5858
<li className={this.state.tabSelected === "p2p" ? "active" : null}>
59-
<a href="javascript:;" data-id="p2p" onClick={this.handleTabClick}>
59+
<a href="#" data-id="p2p" onClick={this.handleTabClick}>
6060
<FormattedMessage id="tabtitle_find_user" defaultMessage="find"
6161
description="Tab title Find" />
6262
</a>
6363
</li>
6464
<li className={this.state.tabSelected === "grp" ? "active" : null}>
65-
<a href="javascript:;" data-id="grp" onClick={this.handleTabClick}>
65+
<a href="#" data-id="grp" onClick={this.handleTabClick}>
6666
<FormattedMessage id="tabtitle_new_group" defaultMessage="new group"
6767
description="Tab title New Group" />
6868
</a>
6969
</li>
7070
<li className={this.state.tabSelected === "byid" ? "active" : null}>
71-
<a href="javascript:;" data-id="byid" onClick={this.handleTabClick}>
71+
<a href="#" data-id="byid" onClick={this.handleTabClick}>
7272
<FormattedMessage id="tabtitle_group_by_id" defaultMessage="by id"
7373
description="Tab title Find topic by ID" />
7474
</a>

src/widgets/attachment.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@ export default class Attachment extends React.Component {
5656
if (!this.props.uploader && !this.state.downloader &&
5757
!(/^(?:(?:[a-z]+:)?\/\/)/i.test(this.props.downloadUrl))) {
5858
// Relative URL. Use download helper.
59-
url = "javascript:;";
59+
url = '#';
6060
helperFunc = (e) => {
61+
e.preventDefault();
6162
this.downloadFile(this.props.downloadUrl, this.props.filename, this.props.mimetype);
6263
};
6364
} else {

src/widgets/avatar-upload.jsx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ export default class AvatarUpload extends React.Component {
1414
};
1515

1616
this.handleFileUpload = this.handleFileUpload.bind(this);
17-
this.handleClear = this.handleClear.bind(this);
1817
}
1918

2019
componentDidUpdate(prevProps) {
@@ -39,10 +38,6 @@ export default class AvatarUpload extends React.Component {
3938
e.target.value = '';
4039
}
4140

42-
handleClear() {
43-
this.props.onImageChanged(null);
44-
}
45-
4641
render() {
4742
// Randomize id value in case more than one AvatarUpload is shown
4843
// at the same time.
@@ -51,7 +46,7 @@ export default class AvatarUpload extends React.Component {
5146
<div className="avatar-upload">
5247
{this.props.readOnly || !this.state.dataUrl ?
5348
null :
54-
<a href="javascript:;" className="clear-avatar" onClick={this.handleClear}>
49+
<a href="#" className="clear-avatar" onClick={(e) => {e.preventDefault(); this.props.onImageChanged(null);}}>
5550
<i className="material-icons">clear</i>
5651
</a>}
5752
{this.state.dataUrl ?

src/widgets/chat-message.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ export default class ChatMessage extends React.Component {
125125
received={this.props.received} />
126126
</div>
127127
<span className="menuTrigger">
128-
<a href="javascript:;" onClick={this.handleContextClick}>
128+
<a href="#" onClick={this.handleContextClick}>
129129
<i className="material-icons">expand_more</i>
130130
</a>
131131
</span>

src/widgets/chip-input.jsx

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -39,23 +39,7 @@ export default class ChipInput extends React.Component {
3939
this.setState({input: ''});
4040
}
4141
}
42-
/*
43-
static getDerivedStateFromProps(nextProps, prevState) {
44-
const state = {
45-
placeholder: nextProps.chips ? '' : nextProps.prompt,
46-
sortedChips: ChipInput.sortChips(nextProps.chips, nextProps.required),
47-
chipIndex: ChipInput.indexChips(nextProps.chips),
48-
focused: prevState && prevState.focused
49-
};
50-
51-
if (!prevState || nextProps.chips.length > prevState.sortedChips.length) {
52-
// Chip added: clear input.
53-
state.input = '';
54-
}
5542

56-
return state;
57-
}
58-
*/
5943
// Map chip index to user name
6044
static indexChips(chips) {
6145
const index = {};

src/widgets/chip.jsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ export default class Chip extends React.PureComponent {
99
this.handleCancel = this.handleCancel.bind(this);
1010
}
1111

12-
handleCancel() {
12+
handleCancel(e) {
13+
e.preventDefault();
1314
this.props.onCancel(this.props.topic, this.props.index);
1415
}
1516

@@ -29,7 +30,7 @@ export default class Chip extends React.PureComponent {
2930
}
3031
<span>{title}</span>
3132
{this.props.onCancel && !this.props.required ?
32-
<a href="javascript:;" onClick={this.handleCancel} >&times;</a>
33+
<a href="#" onClick={this.handleCancel} >&times;</a>
3334
: <span className="spacer" />}
3435
</div>
3536
);

src/widgets/contact.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ export default class Contact extends React.Component {
7474
</div>
7575
{this.props.showContextMenu ?
7676
<span className="menuTrigger">
77-
<a href="javascript:;" onClick={this.handleContextClick}>
77+
<a href="#" onClick={this.handleContextClick}>
7878
<i className="material-icons">expand_more</i>
7979
</a>
8080
</span> : null}

src/widgets/error-panel.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export default class ErrorPanel extends React.PureComponent {
3838
<span>
3939
<span dangerouslySetInnerHTML={{__html: this.props.text}} />
4040
{this.props.action ?
41-
<a href="javascript:;" onClick={this.props.action}>
41+
<a href="#" onClick={(e) => {e.preventDefault(); this.props.action();}}>
4242
{this.props.actionText}
4343
</a>
4444
: null}

src/widgets/file-progress.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export default class FileProgress extends React.PureComponent {
88
<div className="uploader">
99
<div><span style={{width: (this.props.progress * 100) + "%"}}></span></div>
1010
{this.props.progress < 0.999 ?
11-
<a href="javascript:;" onClick={this.props.onCancel}>
11+
<a href="#" onClick={(e) => {e.preventDefault(); this.props.onCancel();}}>
1212
<i className="material-icons">close</i> <FormattedMessage id="action_cancel"
1313
defaultMessage="cancel" description="Call to action [cancel]" />
1414
</a>

src/widgets/image-preview.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export default class ImagePreview extends React.PureComponent {
4545
<i className="material-icons">file_download</i> <FormattedMessage
4646
id="download_action" defaultMessage="download" description="Call to action [download]" />
4747
</a>
48-
<a href="javascript:;" onClick={this.props.onClose}><i className="material-icons gray">close</i></a>
48+
<a href="#" onClick={(e) => {e.preventDefault(); this.props.onClose();}}><i className="material-icons gray">close</i></a>
4949
</div>
5050
<div id="image-preview-container" ref={function(ref) {instance.container = ref;}}>
5151
<img src={this.props.content.url} style={size} />

src/widgets/menu-cancel.jsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,9 @@
22
import React from 'react';
33

44
export default class MenuCancel extends React.PureComponent {
5-
constructor(props) {
6-
super(props);
7-
}
8-
95
render() {
106
return (
11-
<a href="javascript:;" onClick={this.props.onCancel}><i className="material-icons">close</i></a>
7+
<a href="#" onClick={(e) => {e.preventDefault(); this.props.onCancel();}}><i className="material-icons">close</i></a>
128
);
139
}
1410
}

src/widgets/menu-contacts.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ export default class MenuContacts extends React.PureComponent {
44
render() {
55
return (
66
<div>
7-
<a href="javascript:;" onClick={this.props.onNewTopic}><i className="material-icons">chat</i></a>
7+
<a href="#" onClick={(e) => {e.preventDefault(); this.props.onNewTopic();}}><i className="material-icons">chat</i></a>
88
&nbsp;
9-
<a href="javascript:;" onClick={this.props.onSettings}><i className="material-icons">settings</i></a>
9+
<a href="#" onClick={(e) => {e.preventDefault(); this.props.onSettings();}}><i className="material-icons">settings</i></a>
1010
</div>
1111
);
1212
}

src/widgets/menu-start.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ export default class MenuStart extends React.PureComponent {
44
render() {
55
return (
66
<div>
7-
<a href="javascript:;" onClick={this.props.onSignUp}><i className="material-icons">person_add</i></a>
7+
<a href="#" onClick={(e) => {e.preventDefault(); this.props.onSignUp();}}><i className="material-icons">person_add</i></a>
88
&nbsp;
9-
<a href="javascript:;" onClick={this.props.onSettings}><i className="material-icons">settings</i></a>
9+
<a href="#" onClick={(e) => {e.preventDefault(); this.props.onSettings();}}><i className="material-icons">settings</i></a>
1010
</div>
1111
);
1212
}

src/widgets/search-contacts.jsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ export default class SearchContacts extends React.PureComponent {
3636
this.props.onSearchContacts(query.length > 0 ? query : Tinode.DEL_CHAR);
3737
}
3838

39-
handleClear() {
39+
handleClear(e) {
40+
e.preventDefault();
4041
if (this.state.edited) {
4142
this.props.onSearchContacts(Tinode.DEL_CHAR);
4243
}
@@ -63,7 +64,7 @@ export default class SearchContacts extends React.PureComponent {
6364
value={this.state.search} onChange={this.handleSearchChange}
6465
onKeyDown={this.handleKeyDown} required autoFocus />
6566
}</FormattedMessage>
66-
<a href="javascript:;" onClick={this.handleClear}>
67+
<a href="#" onClick={this.handleClear}>
6768
<i className="material-icons">close</i>
6869
</a>
6970
</div>

src/widgets/send-message.jsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ class SendMessage extends React.PureComponent {
149149
e.target.value = '';
150150
}
151151

152-
handleSend() {
152+
handleSend(e) {
153+
e.preventDefault();
153154
const message = this.state.message.trim();
154155
if (message) {
155156
this.props.sendMessage(this.state.message.trim());
@@ -193,12 +194,12 @@ class SendMessage extends React.PureComponent {
193194
<div id="send-message-panel">
194195
{this.props.disabled ?
195196
<i className="material-icons disabled">photo</i> :
196-
<a href="javascript:;" onClick={(e) => {this.attachImage.click();}} title="Add image">
197+
<a href="#" onClick={(e) => {e.preventDefault(); this.attachImage.click();}} title="Add image">
197198
<i className="material-icons secondary">photo</i>
198199
</a>}
199200
{this.props.disabled ?
200201
<i className="material-icons disabled">attach_file</i> :
201-
<a href="javascript:;" onClick={(e) => {this.attachFile.click();}} title="Attach file">
202+
<a href="#" onClick={(e) => {e.preventDefault(); this.attachFile.click();}} title="Attach file">
202203
<i className="material-icons secondary">attach_file</i>
203204
</a>}
204205
<textarea id="sendMessage" placeholder={prompt}
@@ -208,7 +209,7 @@ class SendMessage extends React.PureComponent {
208209
autoFocus />
209210
{this.props.disabled ?
210211
<i className="material-icons disabled">send</i> :
211-
<a href="javascript:;" onClick={this.handleSend} title="Send">
212+
<a href="#" onClick={this.handleSend} title="Send">
212213
<i className="material-icons">send</i>
213214
</a>}
214215
<input type="file" ref={(ref) => {this.attachFile = ref;}}

0 commit comments

Comments
 (0)