diff options
author | Joe Robinson <joe@grabyo.com> | 2016-08-17 15:13:29 +0100 |
---|---|---|
committer | Joe Robinson <joe@grabyo.com> | 2016-08-17 15:13:29 +0100 |
commit | 90533882ae77f811f01cc842fce9cab68df877ba (patch) | |
tree | 36079eb6002e8240d426bddf8f74fde738cd4732 /handlers.js | |
parent | f3d0c81c7b004218665ab1123fb6c8915b190ce0 (diff) |
Fixed receiving messages
Diffstat (limited to 'handlers.js')
-rw-r--r-- | handlers.js | 107 |
1 files changed, 105 insertions, 2 deletions
diff --git a/handlers.js b/handlers.js index 88259c7..b2437bc 100644 --- a/handlers.js +++ b/handlers.js @@ -1,9 +1,30 @@ -module.exports.handleCommands = function(client) { +var linkify = require("linkifyjs"); +var linkifyHtml = require('linkifyjs/html'); +var util = require("./util.js") +var numChans = 1; +var channels; +var buffers = []; +var client; +module.exports.setChannels = function(myChannels) { + console.log("setting channels: " + myChannels); + channels = myChannels; +} +module.exports.handleCommands = function(myClient) { + client = myClient; client.on('registered', function(event) { console.log(event); + console.log("channels: " + channels); + channels.forEach(function(channelStr) { + console.log(channelStr); + joinChannel(channelStr, true); + }); }); - + client.on('message', function(event) { + console.log("messsagee + " + event.message) + console.log(event); + receiveMsg(event.target, event.nick, event.message) + }) client.on('userlist', function(event) { console.log(event); channel = event.channel.replace("#","") @@ -19,4 +40,86 @@ module.exports.handleCommands = function(client) { } } }); + +} + +function joinChannel(channel, sendJoin) { + console.log("here"); + if (sendJoin) { + var channelObj = client.channel(channel); + buffers.push(channelObj); + channelObj.join(); + channelObj.say("beep"); + } + channel = channel.replace("#",""); + chanId = $(".active.chat").attr("data-id") + + $(".active").removeClass("active"); + + $(".ui.menu").append("<a class='active item' data-id='"+numChans+"' data-tab='chan-"+channel+"'>#"+channel+"</a>"); + $("#chan-container").append("<div class='ui active tab' data-id='"+numChans+"' data-tab='chan-"+channel+"'></div>"); + + var chanTab = $("[data-tab=chan-"+ channel +"].tab"); + + chanTab.append("<div class='ui selection list users' data-id='"+numChans+"' data-tab='chan-"+channel+"'></div>"); + chanTab.append("<div class='ui segment chat' data-id='"+numChans+"' data-tab='chan-"+channel+"'></div>"); + chanTab.append("<div class='ui topic' data-id='"+numChans+"' data-tab='chan-"+channel+"'></div>"); + + $('.menu .item').tab({history:false}); + + channelObj.updateUserList(function() { + channel = event.channel.replace("#","") + console.log(channel); + if($(".ui.tab[data-tab=chan-"+channel+"]").length == 0) { + console.log("there"); + } + for(nick in channelObj.users) { + if($(".ui.users[data-tab=chan-"+channel+"] [data-nick="+nick+"]").length == 0) { + $(".ui.users[data-tab=chan-"+channel+"]").append("<div class=item data-nick="+nick+">"+nick+"</div>") + } + } + }) + numChans++; +} + +function receiveMsg(channel, from, message) { + // message = message.autoLink( { + // callback: function(url) { + // return /\.(gif|png|jpe?g)$/i.test(url) ? '<img src="' + url + '">' : null; + // }, + // target: "_blank" + // }); + // console.log(message.autoLink()); + channel = channel.replace("#","") + console.log(from + ' => #'+ channel +': ' + message); + console.log($("[data-tab=chan-"+ channel +"].chat")); + var chatTab = $("[data-tab=chan-"+ channel +"].chat"); + console.log(chatTab); + message = linkifyHtml(message); + console.log(from + ' => #'+ channel +': ' + message); + + chatTab.append("<p class='chat-line'><" + from + "> " + message +"</p>"); + var imgMatch = message.match(/[a-z0-9\-]+[\.:]\S+\.(gif|png|jpe?g|bmp)/); + var vidMatch = message.match(/[a-z0-9\-]+[\.:]\S+\.(webm|mp4)/); + var audioMatch = message.match(/[a-z0-9\-]+[\.:]\S+\.(mp3|wav|ogg)/); + var youtubeMatch = message.match(/(https?\:\/\/)?(www\.)?(youtube\.com|youtu\.be)\/(watch\?v=)?[a-z0-9A-Z_\-]+/); + if (imgMatch != null && imgMatch.length > 0) { + var image = util.imagify(imgMatch[0],channel); + chatTab.append("<p class=chat-line>"+image+"</p>"); + } + if (vidMatch != null && vidMatch.length > 0) { + chatTab.append("<p class=chat-line><video controls><source src="+vidMatch[0]+"></video></p>"); + } + if (audioMatch != null && audioMatch.length > 0) { + chatTab.append("<p class=chat-line><audio controls><source src="+audioMatch[0]+"></audio></p>"); + } + if (youtubeMatch != null && youtubeMatch.length > 0) { + console.log(youtubeMatch) + youtubeParts = youtubeMatch[0].split("/"); + youtubeId = youtubeParts[youtubeParts.length-1]; + youtubeId = youtubeId.replace("watch?v=",""); + chatTab.append("<p class=chat-line><iframe width='480' height='270' src='https://www.youtube.com/embed/"+youtubeId+"' frameborder='0' allowfullscreen></iframe></p>"); + } + + chatTab.scrollTop(chatTab.prop("scrollHeight")); } |