|
@ -32,24 +32,28 @@ export class ChatView implements Observer { |
|
|
this._messageContainer = deps.messageContainer; |
|
|
this._messageContainer = deps.messageContainer; |
|
|
this._chatModel = deps.chatModel; |
|
|
this._chatModel = deps.chatModel; |
|
|
this._messageSendTemplate = deps.messageSendTemplate; |
|
|
this._messageSendTemplate = deps.messageSendTemplate; |
|
|
this._messageReceiveTemplate = deps.messageReceiveTemplate; |
|
|
|
|
|
this._markdownService = deps.markdownService; |
|
|
|
|
|
this._encryptionService = deps.encryptionService; |
|
|
|
|
|
|
|
|
this._messageReceiveTemplate = deps.messageReceiveTemplate; |
|
|
|
|
|
this._markdownService = deps.markdownService; |
|
|
|
|
|
this._encryptionService = deps.encryptionService; |
|
|
this.addEventListeners(); |
|
|
this.addEventListeners(); |
|
|
|
|
|
|
|
|
$(document).ready(function() { |
|
|
|
|
|
$('#action_menu_btn').click(function() { |
|
|
|
|
|
|
|
|
$(document).ready(function () { |
|
|
|
|
|
$('#action_menu_btn').click(function () { |
|
|
$('.action_menu').toggle(); |
|
|
$('.action_menu').toggle(); |
|
|
}); |
|
|
}); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
this.chatMessagePageLoadAjax(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
update(data: ChatMessageViewModel[]): void { |
|
|
update(data: ChatMessageViewModel[]): void { |
|
|
log.info('ChatView: updating view'); |
|
|
log.info('ChatView: updating view'); |
|
|
// let html: string = "";
|
|
|
// let html: string = "";
|
|
|
this._messageContainer.innerHTML = ""; |
|
|
this._messageContainer.innerHTML = ""; |
|
|
|
|
|
const rev: ChatMessageViewModel[] = Object.create(data) |
|
|
|
|
|
rev.reverse(); |
|
|
data.forEach((vm: ChatMessageViewModel) => { |
|
|
data.forEach((vm: ChatMessageViewModel) => { |
|
|
const vmTemp = vm; |
|
|
|
|
|
|
|
|
const vmTemp: ChatMessageViewModel = {...vm}; |
|
|
vmTemp.message = this._markdownService.render(vm.message); |
|
|
vmTemp.message = this._markdownService.render(vm.message); |
|
|
/** Very Important!!! |
|
|
/** Very Important!!! |
|
|
* Sanitizing HTML before displaying on webpage to prevent XSS attacks!! |
|
|
* Sanitizing HTML before displaying on webpage to prevent XSS attacks!! |
|
@ -63,7 +67,8 @@ export class ChatView implements Observer { |
|
|
rendered = DOMPurify.sanitize(this._messageReceiveTemplate(vmTemp)); |
|
|
rendered = DOMPurify.sanitize(this._messageReceiveTemplate(vmTemp)); |
|
|
} |
|
|
} |
|
|
$(this._messageContainer).append(rendered); |
|
|
$(this._messageContainer).append(rendered); |
|
|
log.debug() |
|
|
|
|
|
|
|
|
// log.debug(vm)
|
|
|
|
|
|
// log.debug(vmTemp)
|
|
|
// html += this._messageSendTemplate(vm);
|
|
|
// html += this._messageSendTemplate(vm);
|
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
@ -94,8 +99,7 @@ export class ChatView implements Observer { |
|
|
|
|
|
|
|
|
let contactName = JsonAPI.contactName; |
|
|
let contactName = JsonAPI.contactName; |
|
|
|
|
|
|
|
|
if(contactName == null) |
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
if (contactName == null) { |
|
|
log.error("Contact name is null"); |
|
|
log.error("Contact name is null"); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
@ -162,4 +166,29 @@ export class ChatView implements Observer { |
|
|
.then(response => fetchHandler(response)); |
|
|
.then(response => fetchHandler(response)); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
chatMessagePageLoadAjax() { |
|
|
|
|
|
this._messageContainer.addEventListener('scroll', (e) => { |
|
|
|
|
|
if ($(this._messageContainer).scrollTop() == 0) { |
|
|
|
|
|
log.debug('Reached top') |
|
|
|
|
|
// @ts-ignore
|
|
|
|
|
|
let passphrase: string; |
|
|
|
|
|
let passphraseInput = document.getElementById('passphrase') as HTMLInputElement; |
|
|
|
|
|
|
|
|
|
|
|
if (passphraseInput == null) { |
|
|
|
|
|
log.error('passphraseInput element reference is null'); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
passphrase = passphraseInput.value |
|
|
|
|
|
if (passphrase == '' || passphrase == null) { |
|
|
|
|
|
// alert('Please input passphrase')
|
|
|
|
|
|
// alertify.error('Please enter a passphrase');
|
|
|
|
|
|
log.error('passphrase is empty or null'); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
if(JsonAPI.contactName != null) |
|
|
|
|
|
this._chatModel.getMessages(JsonAPI.contactName , passphrase, null); |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
} |
|
|
} |