diff --git a/src/js/darkwire.js b/src/js/darkwire.js index 2da5b18..b35ac59 100644 --- a/src/js/darkwire.js +++ b/src/js/darkwire.js @@ -216,7 +216,8 @@ export default class Darkwire { if (bool) { resolve({ username: username, - message: decryptedMessage + message: decryptedMessage, + messageType: data.messageType }); } }); diff --git a/src/js/fileHandler.js b/src/js/fileHandler.js index 4936edc..e00c9bb 100644 --- a/src/js/fileHandler.js +++ b/src/js/fileHandler.js @@ -1,6 +1,6 @@ export default class FileHandler { constructor(darkwire, socket) { - if (window.File && window.FileReader && window.FileList && window.Blob && window.btoa) { + if (window.File && window.FileReader && window.FileList && window.Blob && window.btoa && window.atob) { this._isSupported = true; this.darkwire = darkwire; this.socket = socket; @@ -47,6 +47,10 @@ export default class FileHandler { return false; } + decodeFile(base64) { + return window.atob(base64); + } + listen() { // browser API document.getElementById('fileInput').addEventListener('change', jQuery.proxy(this.encodeFile, this), false); diff --git a/src/js/main.js b/src/js/main.js index a1028aa..6a63fae 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -120,10 +120,19 @@ $(function() { let $usernameDiv = $('') .text(data.username) .css('color', getUsernameColor(data.username)); - let $messageBodyDiv = $('') - .html(data.message); + let $messageBodyDiv = $(''); + + if (options.file) { + let image = new Image(); + image.src = `data:image/png;base64,${data.message}`; + $messageBodyDiv.html(image); + } else { + $messageBodyDiv.html(data.message); + } let typingClass = data.typing ? 'typing' : ''; + + let $messageDiv = $('
  • ') .data('username', data.username) .addClass(typingClass) @@ -293,7 +302,16 @@ $(function() { windowHandler.notifyFavicon(); darkwire.audio.play(); } - addChatMessage(data); + if (data.messageType === 'file') { + // let file = windowHandler.fileHandler.decodeFile(data.message); + // let chatMessage = { + // username: data.username, + // message: file + // } + addChatMessage(data, {file: true}) + } else { + addChatMessage(data); + } }); });