Skip to content

Commit

Permalink
Fixed various issues around archived/inactive buffers.
Browse files Browse the repository at this point in the history
  • Loading branch information
codebutler committed Sep 4, 2013
1 parent 3e9d09a commit 5132c4f
Show file tree
Hide file tree
Showing 7 changed files with 86 additions and 55 deletions.
4 changes: 4 additions & 0 deletions lib/tapchat/buffer.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions lib/tapchat/channel_buffer.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

78 changes: 41 additions & 37 deletions lib/tapchat/connection.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions src/tapchat/buffer.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,7 @@ class Buffer extends EventEmitter
@lastSeenEid = eid
callback()

getIsActive: () ->
(!@isArchived)

module.exports = Buffer
3 changes: 3 additions & 0 deletions src/tapchat/channel_buffer.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -75,4 +75,7 @@ class ChannelBuffer extends ChatBuffer
return callback() if this instanceof ChannelBuffer and @isJoined
super(callback)

getIsActive: () ->
super && @isJoined

module.exports = ChannelBuffer
37 changes: 19 additions & 18 deletions src/tapchat/connection.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ class Connection extends EventEmitter
addEventToAllBuffers: (event, callback) ->
queue = new WorkingQueue(1)
queue.onceDone callback
for buffer in @buffers
for buffer in @buffers when buffer.getIsActive()
do (buffer) =>
queue.perform (over) =>
buffer.addEvent event, over
Expand Down Expand Up @@ -345,17 +345,18 @@ class Connection extends EventEmitter

queue = new WorkingQueue(1)

for buffer in @buffers when buffer instanceof ChannelBuffer
do (buffer) =>
queue.perform (bufferOver) =>
buffer.setJoined(false, bufferOver)
queue.perform (queueOver) =>
@addEventToAllBuffers
type: 'socket_closed',
queueOver

queue.onceDone over
queue.doneAddingJobs()
queue.onceDone =>
for buffer in @buffers when buffer instanceof ChannelBuffer
# Don't use setJoined here so DB isn't modified.
buffer.isJoined = false
over()

@addEventToAllBuffers
type: 'socket_closed',
over
queue.doneAddingJobs()

abort: (retryCount, over) ->
@addEventToAllBuffers
Expand Down Expand Up @@ -483,7 +484,6 @@ class Connection extends EventEmitter

selfPart: (channel, reason, over) ->
if buffer = @getBuffer(channel)
# FIXME: Set autoJoin to false!
buffer.setJoined false, =>
buffer.addEvent
type: 'you_parted_channel',
Expand All @@ -507,16 +507,17 @@ class Connection extends EventEmitter
selfQuit: (reason, over) ->
queue = new WorkingQueue(1)

for buffer in @buffers when buffer instanceof ChannelBuffer
do (buffer) =>
queue.perform (bufferOver) =>
buffer.setJoined(false, bufferOver)

queue.onceDone =>
queue.perform (queueOver) =>
@addEventToAllBuffers
type: 'quit_server'
msg: reason,
over
queueOver

queue.onceDone =>
for buffer in @buffers when buffer instanceof ChannelBuffer
# Don't use setJoined here so DB isn't modified.
buffer.isJoined = false
over()

queue.doneAddingJobs()

Expand Down
12 changes: 12 additions & 0 deletions web/js/channel_buffer.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ class ChannelBuffer extends Buffer
constructor: (connection, attrs) ->
super(connection, attrs)
@members = new MemberList()
@members.on 'reset', (col, opts) ->
_.each opts.previousModels, (model) ->
model.trigger 'destroy'

join: ->
@connection.join(@get('name'))
Expand All @@ -20,10 +23,15 @@ class ChannelBuffer extends Buffer
super
@set('joined', attrs.joined)

clientDisconnected: ->
super
@set('joined', false)

messageHandlers:
channel_init: (message) ->
if message.topic?
@set('topic', message.topic)
@members.reset()
for memberAttrs in message.members
@members.add(new Member(this, memberAttrs))
@set('joined', true)
Expand Down Expand Up @@ -57,4 +65,8 @@ class ChannelBuffer extends Buffer
you_nickchange: (message) ->
@members.updateNick(message)

socket_closed: (message) ->
@members.reset();
@set('joined', false)

window.ChannelBuffer = ChannelBuffer

0 comments on commit 5132c4f

Please sign in to comment.