Skip to content

Commit

Permalink
add ot-helper library from opentok js code
Browse files Browse the repository at this point in the history
  • Loading branch information
Song Zheng committed May 27, 2014
1 parent 23dfe29 commit 545ba55
Show file tree
Hide file tree
Showing 7 changed files with 5,299 additions and 308 deletions.
14 changes: 12 additions & 2 deletions Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ module.exports = function(grunt) {
watch:{
scripts: {
files:['**/*.coffee'],
tasks:["coffee", "uglify"],
tasks:["coffee", "concat"],
options:{
spawn: true,
}
Expand All @@ -22,6 +22,15 @@ module.exports = function(grunt) {
}
}
},
concat:{
options:{
separator: ';'
},
dist:{
src:["./www/opentok.js", "./src/js/lib/OT-common-js-helpers.js"],
dest:"./www/opentok.js"
}
},
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
Expand All @@ -37,7 +46,8 @@ module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-coffee');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-concat');

// Default task(s).
grunt.registerTask('default', ["coffee"]);
grunt.registerTask('default', ["coffee", "concat"]);
};
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"devDependencies": {
"grunt": "^0.4.5",
"grunt-contrib-coffee": "^0.10.1",
"grunt-contrib-concat": "^0.4.0",
"grunt-contrib-jshint": "~0.10.0",
"grunt-contrib-nodeunit": "~0.3.3",
"grunt-contrib-uglify": "~0.4.0",
Expand Down
9 changes: 8 additions & 1 deletion src/js/OT.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,14 @@ window.OT =
TBUpdateObjects()

# helpers

getHelper: ->
if(typeof(jasmine)=="undefined" || !jasmine || !jasmine['getEnv'])
window.jasmine = {
getEnv: ->
return
}
this.OTHelper = this.OTHelper || OTHelpers.noConflict()
return this.OTHelper

# deprecating
showError: (a) ->
Expand Down
46 changes: 3 additions & 43 deletions src/js/OTPublisher.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ class TBPublisher
height = DefaultHeight
replaceWithVideoStream(@domId, PublisherStreamId, {width:width, height:height})
position = getPosition(@domId)
@userHandlers = {}
TBUpdateObjects()
OT.getHelper().eventing(@)
Cordova.exec(TBSuccess, TBError, OTPlugin, "initPublisher", [name, position.top, position.left, width, height, zIndex, publishAudio, publishVideo, cameraName] )
Cordova.exec(@eventReceived, TBSuccess, OTPlugin, "addEvent", ["publisherEvents"] )
setSession: (session) =>
Expand All @@ -54,19 +54,12 @@ class TBPublisher
pdebug "publisher streamCreatedHandler", @session.sessionConnection
@stream = new TBStream( event.stream, @session.sessionConnection )
streamEvent = new TBEvent( {stream: @stream } )
pdebug "publisher userHandlers", @userHandlers
pdebug "publisher userHandlers", @userHandlers['streamCreated']
if @userHandlers["streamCreated"]
for e in @userHandlers["streamCreated"]
e( streamEvent )
pdebug "omg done", streamEvent
@trigger("streamCreated", streamEvent)
return @
streamDestroyed: (event) =>
pdebug "publisher streamDestroyed event", event
streamEvent = new TBEvent( {stream: @stream, reason: "clientDisconnected" } )
if @userHandlers["streamDestroyed"]
for e in @userHandlers["streamDestroyed"]
e( streamEvent )
@trigger("streamDestroyed", streamEvent)
# remove stream DOM?
return @

Expand All @@ -76,25 +69,6 @@ class TBPublisher
return ""
getStyle: ->
return {}
off: ( event, handler ) ->
pdebug "removing event #{event}", @userHandlers
if @userHandlers[event]?
@userHandlers[event] = @userHandlers[event].filter ( item, index ) ->
return item != handler
pdebug "removed handlers, resulting handlers:", @userHandlers
#todo
return @
on: (one, two, three) =>
# Set Handlers based on Events
pdebug "adding event handlers", @userHandlers
if typeof( one ) == "object"
for k,v of one
@addEventHandlers( k, v )
return
if typeof( one ) == "string"
for e in one.split( ' ' )
@addEventHandlers( e, two )
return
publishAudio: (state) ->
@publishMedia( "publishAudio", state )
return @
Expand All @@ -108,12 +82,6 @@ class TBPublisher
setStyle: (style, value ) ->
return @

addEventHandlers: (event, handler) =>
pdebug "adding Event", event
if @userHandlers[event]?
@userHandlers[event].push( handler )
else
@userHandlers[event] = [handler]
publishMedia: (media, state) ->
if media not in ["publishAudio", "publishVideo"] then return
publishState = "true"
Expand Down Expand Up @@ -161,11 +129,3 @@ class TBPublisher
else
@domId = TBGenerateDomHelper()
@domId = if( @domId and document.getElementById( @domId ) ) then @domId else TBGenerateDomHelper()

# deprecating
removeEventListener: ( event, handler ) ->
@off( event, handler )
return @



74 changes: 11 additions & 63 deletions src/js/OTSession.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class TBSession
if( typeof(connectCompletionCallback) != "function" and connectCompletionCallback? )
TB.showError( "Session.connect() takes a token and an optional completionHandler" )
return
if( connectCompletionCallback? ) then @addEventHandlers( "sessionConnected", connectCompletionCallback )
if( connectCompletionCallback? ) then @on('sessionConnected', connectCompletionCallback)
Cordova.exec(@eventReceived, TBError, OTPlugin, "addEvent", ["sessionEvents"] )
Cordova.exec(TBSuccess, TBError, OTPlugin, "connect", [@token] )
return
Expand All @@ -36,26 +36,6 @@ class TBSession
return @
getSubscribersForStream: (stream) ->
return @
off: (one, two, three) ->
if typeof( one ) == "object"
for k,v of one
@removeEventHandler( k, v )
return
if typeof( one ) == "string"
for e in one.split( ' ' )
@removeEventHandler( e, two )
on: (one, two, three) =>
# Set Handlers based on Events
pdebug "adding event handlers", @userHandlers
if typeof( one ) == "object"
for k,v of one
@addEventHandlers( k, v )
return
if typeof( one ) == "string"
for e in one.split( ' ' )
@addEventHandlers( e, two )
return
# todo - other events: connectionCreated, connectionDestroyed, signal?, streamPropertyChanged, signal:type?
publish: (divName, properties) =>
if( @alreadyPublishing )
pdebug("Session is already publishing", {})
Expand Down Expand Up @@ -124,10 +104,10 @@ class TBSession
return Cordova.exec(TBSuccess, TBError, OTPlugin, "unsubscribe", [subscriber.streamId] )

constructor: (@apiKey, @sessionId) ->
@userHandlers = {}
@connections = {}
@streams = {}
@alreadyPublishing = false
OT.getHelper().eventing(@)
Cordova.exec(TBSuccess, TBSuccess, OTPlugin, "initSession", [@apiKey, @sessionId] )
cleanUpDom: ->
objects = document.getElementsByClassName('OT_root')
Expand All @@ -136,78 +116,50 @@ class TBSession
if e and e.parentNode and e.parentNode.removeChild
e.parentNode.removeChild(e)
objects = document.getElementsByClassName('OT_root')
addEventHandlers: (event, handler) =>
pdebug "adding Event", event
if @userHandlers[event]?
@userHandlers[event].push( handler )
else
@userHandlers[event] = [handler]
removeEventHandler: (event, handler) =>
pdebug "removing event #{event}", @userHandlers
if not handler?
delete @userHandlers[event]
else
if @userHandlers[event]?
@userHandlers[event] = @userHandlers[event].filter ( item, index ) ->
return item != handler
return @


# event listeners
# todo - other events: connectionCreated, connectionDestroyed, signal?, streamPropertyChanged, signal:type?
eventReceived: (response) =>
pdebug "session event received", response
@[response.eventType](response.data)
connectionCreated: (event) =>
connection = new TBConnection( event.connection )
connectionEvent = new TBEvent( {connection: connection } )
@connections[connection.connectionId] = connection
if @userHandlers["connectionCreated"]
for e in @userHandlers["connectionCreated"]
e( connectionEvent )
@trigger("connectionCreated", connectionEvent)
return @
connectionDestroyed: (event) =>
pdebug "connectionDestroyedHandler", event
connection = @connections[ event.connection.connectionId ]
connectionEvent = new TBEvent( {connection: connection, reason: "clientDisconnected" } )
if @userHandlers["connectionDestroyed"]
for e in @userHandlers["connectionDestroyed"]
e( connectionEvent )
@trigger("connectionDestroyed", connectionEvent)
delete( @connections[ connection.connectionId] )
return @
sessionConnected: (event) =>
pdebug "sessionConnectedHandler", event
pdebug "what is userHandlers", @userHandlers
@trigger("sessionConnected")
@sessionConnection = event.connection
event = null
if @userHandlers["sessionConnected"]
for e in @userHandlers["sessionConnected"]
e(event)
return @
sessionDisconnected: (event) =>
pdebug "sessionDisconnected event", event
@alreadyPublishing = false
sessionDisconnectedEvent = new TBEvent( { reason: event.reason } )
if @userHandlers["sessionDisconnected"]
for e in @userHandlers["sessionDisconnected"]
e( sessionDisconnectedEvent )
@trigger("sessionDisconnected", sessionDisconnectedEvent)
@cleanUpDom()
return @
streamCreated: (event) =>
pdebug "streamCreatedHandler", event
stream = new TBStream( event.stream, @connections[event.stream.connectionId] )
@streams[ stream.streamId ] = stream
streamEvent = new TBEvent( {stream: stream } )
if @userHandlers["streamCreated"]
for e in @userHandlers["streamCreated"]
e( streamEvent )
@trigger("streamCreated", streamEvent)
return @
streamDestroyed: (event) =>
pdebug "streamDestroyed event", event
stream = @streams[event.stream.streamId]
streamEvent = new TBEvent( {stream: stream, reason: "clientDisconnected" } )
if @userHandlers["streamDestroyed"]
for e in @userHandlers["streamDestroyed"]
e( streamEvent )
@trigger("streamDestroyed", streamEvent)
# remove stream DOM
element = streamElements[ stream.streamId ]
if(element)
Expand All @@ -219,12 +171,8 @@ class TBSession
signalReceived: (event) =>
pdebug "signalReceived event", event
streamEvent = new TBEvent( {type: event.type, data: event.data, from: @connections[event.connectionId] } )
if @userHandlers["signal"]
for e in @userHandlers["signal"]
e( streamEvent )
if event.type? and event.type.length > 0 and @userHandlers["signal:#{event.type}"]
for e in @userHandlers["signal:#{event.type}"]
e( streamEvent )
@trigger("signal", streamEvent)
@trigger("signal:#{event.type}", streamEvent)

# deprecating
addEventListener: (event, handler) -> # deprecating soon
Expand Down
Loading

0 comments on commit 545ba55

Please sign in to comment.