68 lines
1.9 KiB
JavaScript
68 lines
1.9 KiB
JavaScript
/* global Whisper: false */
|
|
/* global textsecure: false */
|
|
|
|
// eslint-disable-next-line func-names
|
|
(function() {
|
|
'use strict';
|
|
|
|
window.Whisper = window.Whisper || {};
|
|
|
|
Whisper.ContactListView = Whisper.ListView.extend({
|
|
tagName: 'div',
|
|
itemView: Whisper.View.extend({
|
|
tagName: 'div',
|
|
className: 'contact',
|
|
templateName: 'contact',
|
|
initialize(options) {
|
|
this.ourNumber = textsecure.storage.user.getNumber();
|
|
this.listenBack = options.listenBack;
|
|
this.loading = false;
|
|
|
|
this.listenTo(this.model, 'change', this.render);
|
|
},
|
|
render() {
|
|
if (this.contactView) {
|
|
this.contactView.remove();
|
|
this.contactView = null;
|
|
}
|
|
|
|
const isMe = this.ourNumber === this.model.id;
|
|
|
|
this.contactView = new Whisper.ReactWrapperView({
|
|
className: 'contact-wrapper',
|
|
Component: window.Signal.Components.ContactListItem,
|
|
props: {
|
|
isMe,
|
|
color: this.model.getColor(),
|
|
avatarPath: this.model.getAvatarPath(),
|
|
phoneNumber: this.model.getNumber(),
|
|
name: this.model.getName(),
|
|
profileName: this.model.getProfileName(),
|
|
verified: this.model.isVerified(),
|
|
onClick: this.showIdentity.bind(this),
|
|
disabled: this.loading,
|
|
},
|
|
});
|
|
this.$el.append(this.contactView.el);
|
|
return this;
|
|
},
|
|
showIdentity() {
|
|
if (this.model.id === this.ourNumber || this.loading) {
|
|
return;
|
|
}
|
|
|
|
this.loading = true;
|
|
this.render();
|
|
|
|
this.panelView = new Whisper.KeyVerificationPanelView({
|
|
model: this.model,
|
|
onLoad: view => {
|
|
this.loading = false;
|
|
this.listenBack(view);
|
|
this.render();
|
|
},
|
|
});
|
|
},
|
|
}),
|
|
});
|
|
})();
|