Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Memory bug fix, updated models, package.json dependencies updated, backlog scrolling works #141

Merged
merged 1 commit into from

2 participants

@ericbarch
Collaborator

No description provided.

@ericbarch
Collaborator

Been testing this all under node 0.8.x, FYI. Everything appears to be working properly.

@thedjpetersen thedjpetersen merged commit 91c9663 into thedjpetersen:master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Jul 9, 2012
  1. @ericbarch
This page is out of date. Refresh to see the latest.
View
14 assets/js/client.js
@@ -98,9 +98,9 @@ $(function() {
$.each(value.users, function(user, role) {
channel.userList.add({nick: user, role: role, idle:0, user_status: 'idle', activity: ''});
});
- irc.socket.emit('getOldMessages',{channelName: chanName, skip:-50, amount: 50});
+ irc.socket.emit('getOldMessages',{channelName: chanName, skip:0, amount: 50});
} else {
- irc.socket.emit('getOldMessages',{channelName: chanName, skip:-50, amount: 50});
+ irc.socket.emit('getOldMessages',{channelName: chanName, skip:0, amount: 50});
channel.stream.add(new Message({sender:'', raw:''}));
}
});
@@ -143,7 +143,7 @@ $(function() {
if (typeof chatWindow === 'undefined') {
irc.chatWindows.add({name: data.nick, type: 'pm'})
.trigger('forMe', 'newPm');
- irc.socket.emit('getOldMessages',{channelName: data.nick, skip:-50, amount: 50});
+ irc.socket.emit('getOldMessages',{channelName: data.nick, skip:0, amount: 50});
chatWindow = irc.chatWindows.getByName(data.nick);
}
chatWindow.stream.add({sender: data.nick, raw: data.text, type: 'pm'});
@@ -154,7 +154,7 @@ $(function() {
console.log('Join event received for ' + chanName + ' - ' + data.nick);
if (data.nick === irc.me.get('nick')) {
irc.chatWindows.add({name: chanName});
- irc.socket.emit('getOldMessages',{channelName: chanName, skip:-50, amount: 50});
+ irc.socket.emit('getOldMessages',{channelName: chanName, skip:0, amount: 50});
} else {
var channel = irc.chatWindows.getByName(chanName);
if (typeof channel === 'undefined') {
@@ -252,11 +252,11 @@ $(function() {
var output = '';
channel = irc.chatWindows.getByName(data.name);
- $.each(data.messages, function(index, message){
+ $.each(data.messages.reverse(), function(index, message){
if($('#' + message._id).length) {
return true; //continue to next iteration
}
-
+
var type = '';
var message_html;
if (message.message.substr(1, 6) === 'ACTION') {
@@ -337,7 +337,7 @@ $(function() {
if (typeof irc.chatWindows.getByName(target) === 'undefined') {
irc.chatWindows.add({name: target, type: 'pm'});
}
- irc.socket.emit('getOldMessages',{channelName: target, skip:-50, amount: 50});
+ irc.socket.emit('getOldMessages',{channelName: target, skip:0, amount: 50});
irc.socket.emit('say', {
target: target,
message: commandText.splice(2).join(" ")
View
4 assets/js/views/chat.js
@@ -182,7 +182,7 @@ var ChatView = Backbone.View.extend({
handleScroll: function() {
$('#chat-contents').scroll(function(){
if ($('#chat-contents').scrollTop() < 150) {
- var skip = (-50)-$('#chat-contents').children().length;
+ var skip = $('#chat-contents').children().length;
var windowName = irc.chatWindows.getActive().get('name');
var target;
if(windowName[0] == '#'){
@@ -191,7 +191,7 @@ var ChatView = Backbone.View.extend({
var userName = irc.me.get('nick');
target = (userName < windowName) ? userName + windowName : windowName + userName;
}
- irc.socket.emit('getOldMessages',{channelName: target, skip:skip, amount: 10});
+ irc.socket.emit('getOldMessages',{channelName: target, skip:skip, amount: 50});
}
});
},
View
15 lib/irclink.js
@@ -4,7 +4,6 @@ var irc = require('irc'),
// establish models
var User = mongoose.model('User');
var Connection = mongoose.model('Connection');
-var Channel = mongoose.model('Channel');
var Message = mongoose.model('Message');
// Constructor
@@ -89,7 +88,7 @@ var IRCLink = function(hostname, port, ssl, selfSigned, nick, realName, password
target = args.to.toLowerCase();
// log this message
- instance.logMessage(target, {user: args.from, message: args.text});
+ instance.logMessage(target, args.from, args.text);
if(instance.sockets.length == 0){
instance.client.chans[target].unread_messages++;
@@ -157,16 +156,10 @@ IRCLink.prototype = {
if (this.sockets.length == 0)
this.client.send('AWAY', this.away);
},
- logMessage: function(target, msg) {
+ logMessage: function(target, from, msg) {
if (this.username) {
- var instance = this;
- Channel.findOne({name: target.toLowerCase(), server: this.server, user: this.username}, function(err, channel) {
- if(!channel){
- var channel = new Channel({name: target.toLowerCase(), server: instance.server, user: instance.username});
- }
- channel.messages.push(msg);
- channel.save();
- });
+ var message = new Message({channel: target.toLowerCase(), server: this.server.toLowerCase(), linkedto: this.username, user: from, message: msg});
+ message.save();
}
}
};
View
11 lib/models.js
@@ -24,20 +24,15 @@ module.exports = function() {
});
var Messages = new Schema({
+ linkedto: String,
+ channel: String,
+ server: String,
user: String,
message: String,
date: { type: Date, default: Date.now }
});
- var Channels = new Schema({
- user: String,
- name: String,
- server: String,
- messages: [Messages]
- });
-
mongoose.model('User', Users);
mongoose.model('Connection', Connections);
- mongoose.model('Channel', Channels);
mongoose.model('Message', Messages);
};
View
3  lib/restore.js
@@ -2,10 +2,7 @@ var mongoose = require('mongoose'),
IRCLink = require('./irclink');
// establish models
-var User = mongoose.model('User');
var Connection = mongoose.model('Connection');
-var Channel = mongoose.model('Channel');
-var Message = mongoose.model('Message');
module.exports = function (connections) {
// restore connections
View
25 lib/socket.js
@@ -5,7 +5,6 @@ var bcrypt = require('bcrypt'),
// establish models
var User = mongoose.model('User');
var Connection = mongoose.model('Connection');
-var Channel = mongoose.model('Channel');
var Message = mongoose.model('Message');
module.exports = function(socket, connections) {
@@ -117,7 +116,7 @@ module.exports = function(socket, connections) {
connection.client.say(data.target, data.message);
socket.emit('message', {to:data.target.toLowerCase(), from: connection.client.nick, text:data.message});
if(current_user){
- connection.logMessage(data.target, {user: connection.client.nick, message: data.message});
+ connection.logMessage(data.target, connection.client.nick, data.message);
}
});
@@ -157,15 +156,21 @@ module.exports = function(socket, connections) {
socket.on('getOldMessages', function(data){
if (current_user) {
- Channel.find({name: data.channelName.toLowerCase(), server: connection.client.opt.server.toLowerCase(), user: current_user.username},
- {messages: {$slice: [data.skip, data.amount]}},
- function(err, results) {
- if(results){
- if(results[0]){
- results[0]['name'] = data.channelName.toLowerCase();
- }
- socket.emit('oldMessages', results[0]);
+ var query = Message.find({channel: data.channelName.toLowerCase(), server: connection.server.toLowerCase(), linkedto: current_user.username});
+
+ query.limit(data.amount);
+ query.sort('date', -1);
+ query.skip(data.skip);
+
+ query.exec(function (err, results) {
+ if(results){
+ var returnData = {};
+ if(results && results.length > 0){
+ returnData['name'] = data.channelName.toLowerCase();
+ returnData['messages'] = results;
}
+ socket.emit('oldMessages', returnData);
+ }
});
}
});
View
12 package.json
@@ -14,13 +14,13 @@
"node": ">=0.6.1"
},
"dependencies": {
- "express": "=2.5.2",
- "jade": "=0.19.0",
- "connect-assets": "=2.1.6",
+ "express": ">=2.5.2",
+ "jade": ">=0.19.0",
+ "connect-assets": ">=2.1.6",
"irc": "git://github.com/martynsmith/node-irc.git",
- "socket.io": "0.9.x-1",
- "mongoose": "=2.5.7",
- "bcrypt": "=0.5.0"
+ "socket.io": ">=0.9.x",
+ "mongoose": ">=2.5.7",
+ "bcrypt": ">=0.5.0"
},
"noAnalyze": true,
"subdomain": "subway",
Something went wrong with that request. Please try again.