Skip to content

Commit

Permalink
Better user handling; better initialization callbacks.
Browse files Browse the repository at this point in the history
  • Loading branch information
mjtko committed Mar 16, 2013
1 parent 621fdf6 commit c21ace8
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 19 deletions.
3 changes: 2 additions & 1 deletion app/assets/javascripts/backbone/collections/users.js.coffee
@@ -1 +1,2 @@

class Kandan.Collections.Users extends Backbone.Collection
url: "users"
9 changes: 9 additions & 0 deletions app/assets/javascripts/backbone/helpers/channels.js.coffee
@@ -1,4 +1,13 @@
class Kandan.Helpers.Channels
@all: (options)->
$(document).data("channels")

@getCollection: ->
$(document).data("channelsCollection")

@setCollection: (collection)->
$(document).data("channelsCollection", collection)
$(document).data("channels", collection.toJSON())

@options:
autoScrollThreshold: 0.90
Expand Down
6 changes: 6 additions & 0 deletions app/assets/javascripts/backbone/helpers/users.js.coffee
@@ -1,3 +1,9 @@
class Kandan.Helpers.Users
@all: (options)->
$(document).data("users")

@setFromCollection: (collection)->
$(document).data("users", collection.toJSON())

@currentUser: ()->
$.data(document, 'current-user')
55 changes: 37 additions & 18 deletions app/assets/javascripts/backbone/kandan.js.coffee
Expand Up @@ -108,34 +108,53 @@ window.Kandan =
$(".main-area").append(chatArea.render().el)


onFetchActiveUsers: (channels)=>
return (activeUsers)=>
onFetchUsers: (callback) ->
(users) =>
Kandan.Helpers.Users.setFromCollection(users)
callback()

onFetchActiveUsers: (callback) ->
(activeUsers) =>
if not Kandan.Helpers.ActiveUsers.collectionHasCurrentUser(activeUsers)
activeUsers.add([Kandan.Helpers.Users.currentUser()])

Kandan.Helpers.ActiveUsers.setFromCollection(activeUsers)
callback()

registerUtilityEvents: ()->
window.setInterval(=>
for el in $(".posted_at")
$(el).text (new Date($(el).data("timestamp"))).toRelativeTime(@options().now_threshold)
, @options().timestamp_refresh_interval)

init: ->
initializer = @createCallback 3, =>
Kandan.registerPlugins()
Kandan.Plugins.initAll()
Kandan.initChatArea(channels)
Kandan.initChatArea(Kandan.Helpers.Channels.getCollection())
Kandan.initTabs()
Kandan.Widgets.initAll()
Kandan.Helpers.Channels.scrollToLatestMessage()
Kandan.Plugins.Mentions.initUsersMentions(Kandan.Helpers.ActiveUsers.all())
Kandan.Plugins.Emojis.attachToChatbox()
return

registerUtilityEvents: ()->
window.setInterval(=>
for el in $(".posted_at")
$(el).text (new Date($(el).data("timestamp"))).toRelativeTime(@options().now_threshold)
, @options().timestamp_refresh_interval)

init: ->
channels = new Kandan.Collections.Channels()
channels.fetch({
success: (channelsCollection)=>
@initBroadcasterAndSubscribe()
activeUsers = new Kandan.Collections.ActiveUsers()
activeUsers.fetch({success: @onFetchActiveUsers(channelsCollection)})
})
new Kandan.Collections.Channels().fetch {
success: @onFetchChannels(initializer)
}
new Kandan.Collections.ActiveUsers().fetch {
success: @onFetchActiveUsers(initializer)
}
new Kandan.Collections.Users().fetch {
success: @onFetchUsers(initializer)
}
@registerUtilityEvents()
@initBroadcasterAndSubscribe()

createCallback: (limit, callback)->
finishedCalls = 0
-> callback() if ++finishedCalls == limit

onFetchChannels: (callback) ->
(channels) =>
Kandan.Helpers.Channels.setCollection(channels)
callback()

0 comments on commit c21ace8

Please sign in to comment.