650 lines
24 KiB
CoffeeScript
650 lines
24 KiB
CoffeeScript
$ = jQuery
|
|
context = window
|
|
logger = context.JK.logger
|
|
|
|
@JamBlasterStore = Reflux.createStore(
|
|
{
|
|
listenables: @JamBlasterActions
|
|
|
|
userJamBlasters: []
|
|
localJamBlasters: []
|
|
allJamBlasters: []
|
|
waitingOnTracks: false
|
|
|
|
init: () ->
|
|
# Register with the app store to get @app
|
|
this.listenTo(context.AppStore, this.onAppInit)
|
|
|
|
onAppInit: (@app) ->
|
|
|
|
postSimpleChange: (result, msg) ->
|
|
if result
|
|
setTimeout(()=>
|
|
@lastClientTrackState = null
|
|
console.log("GETLOCALCLIENTS: PostSimpleChange")
|
|
@getLocalClients(@userJamBlasters)
|
|
, 1000)
|
|
|
|
else
|
|
context.JK.Banner.showAlert('unable to update the JamBlaster', msg)
|
|
|
|
# onUpdateAudio: (name, value) ->
|
|
# # input1_linemode
|
|
# # input2_linemode
|
|
# # input1_48V
|
|
# # input2_48V
|
|
# # has_chat
|
|
# # track1 = {left, right, inst, stereo)
|
|
# # track1 = {left, right, inst, stereo)
|
|
|
|
# if @pairedJamBlaster? && @pairedJamBlaster.tracks?
|
|
# logger.debug("onUpdateAudio name=#{name} value=#{value}", @pairedJamBlaster.tracks)
|
|
|
|
# if name == 'inputTypeTrack1'
|
|
# result = context.jamClient.set48vAndLineInstState({input1_linemode: value})
|
|
# @postSimpleChange(result, 'Unable to set the line mode for Track 1')
|
|
# return
|
|
|
|
# else if name == 'inputTypeTrack2'
|
|
# result = context.jamClient.set48vAndLineInstState({input2_linemode: value})
|
|
# @postSimpleChange(result, 'Unable to set the line mode for Track 2')
|
|
# return
|
|
|
|
# else if name == 'track1Phantom'
|
|
# result = context.jamClient.set48vAndLineInstState({input1_48V: value})
|
|
# @postSimpleChange(result, 'Unable to set the phantom power for Track 1')
|
|
# return
|
|
|
|
# else if name == 'track2Phantom'
|
|
# result = context.jamClient.set48vAndLineInstState({input2_48V: value})
|
|
# @postSimpleChange(result, 'Unable to set the phantom power for Track 2')
|
|
# return
|
|
|
|
# #else if name == 'track1Instrument'
|
|
# # result = context.jamClient.set48vAndLineInstState({input2_48V: value})
|
|
# # @postSimpleChange(result, 'Unable to set the phantom power for Track 2')
|
|
# # return
|
|
|
|
# #else if name == 'track1Instrument'
|
|
# # result = context.jamClient.set48vAndLineInstState({input2_48V: value})
|
|
# # @postSimpleChange(result, 'Unable to set the phantom power for Track 2')
|
|
# # return
|
|
|
|
|
|
# audio = $.extend({}, @pairedJamBlaster.tracks)
|
|
# if name == 'inputTypeTrack1'
|
|
# audio.input1_linemode = value
|
|
# else if name == 'inputTypeTrack2'
|
|
# audio.input2_linemode = value
|
|
# else if name == 'track1Phantom'
|
|
# audio.input1_48V = value
|
|
# else if name == 'track2Phantom'
|
|
# audio.input2_48V = value
|
|
# else if name == 'micActive'
|
|
# audio.has_chat = value
|
|
|
|
|
|
# #track1Active = @pairedJamBlaster.tracks.track1Active
|
|
# #if name == 'track1Active'
|
|
# # track1Active = value
|
|
|
|
# #track2Active = @pairedJamBlaster.tracks.track2Active
|
|
# #if name == 'track2Active'
|
|
# # track2Active = value
|
|
|
|
# track1Active = true
|
|
# track2Active = true
|
|
# has_chat = true
|
|
|
|
|
|
# audio.has_chat = true
|
|
|
|
# combined = @pairedJamBlaster.tracks.combined
|
|
# if name == 'combined'
|
|
# combined = value
|
|
|
|
# track1Instrument = @pairedJamBlaster.tracks.track1Instrument
|
|
# track2Instrument = @pairedJamBlaster.tracks.track2Instrument
|
|
# if name == 'track1Instrument'
|
|
# track1Instrument = @convertToClientInstrument(value)
|
|
# if name == 'track2Instrument'
|
|
# track2Instrument = @convertToClientInstrument(value)
|
|
|
|
# if !track1Instrument
|
|
# track1Instrument = context.JK.server_to_client_instrument_map.Other.client_id
|
|
# if !track2Instrument
|
|
# track2Instrument = context.JK.server_to_client_instrument_map.Other.client_id
|
|
|
|
|
|
# if combined
|
|
# # user has chosen to combine both inputs into one track. stereo=true is the key flag her
|
|
|
|
# audio.track1 = {stereo: true, left: true, inst: track1Instrument}
|
|
# delete audio.track2 # backend will treat null as present
|
|
|
|
# else
|
|
|
|
# if track1Active && track2Active
|
|
|
|
# audio.track1 = {stereo: false, left: true, inst: track1Instrument}
|
|
# audio.track2 = {stereo: false, right: true, inst: track2Instrument}
|
|
|
|
# else if track1Active #(means track)
|
|
|
|
# audio.track1 = {stereo: false, left: true, inst: track1Instrument}
|
|
# delete audio.track2 # backend will treat null as present
|
|
|
|
# else # input2Active
|
|
|
|
# audio.track2 = {stereo: false, right: true, inst: track2Instrument}
|
|
# delete audio.track1 # backend will treat null as present
|
|
|
|
# logger.debug("updating JamBlaster track state", audio)
|
|
# context.jamClient.setJbTrackState(audio);
|
|
# @waitOnTracks()
|
|
# else
|
|
# context.JK.Banner.showAlert('no paired JamBlaster', 'it seems your JamBlaster has become disconnected. Please ensure it is powered on and connected via an ethernet cable.')
|
|
|
|
onUpdateAudio: `async function(name, value) {
|
|
// input1_linemode
|
|
// input2_linemode
|
|
// input1_48V
|
|
// input2_48V
|
|
// has_chat
|
|
// track1 = {left, right, inst, stereo)
|
|
// track1 = {left, right, inst, stereo)
|
|
|
|
if ((this.pairedJamBlaster != null) && (this.pairedJamBlaster.tracks != null)) {
|
|
let result;
|
|
logger.debug('onUpdateAudio name='+name+' value='+value, this.pairedJamBlaster.tracks);
|
|
|
|
if (name === 'inputTypeTrack1') {
|
|
result = await context.jamClient.set48vAndLineInstState({input1_linemode: value});
|
|
this.postSimpleChange(result, 'Unable to set the line mode for Track 1');
|
|
return;
|
|
|
|
} else if (name === 'inputTypeTrack2') {
|
|
result = await context.jamClient.set48vAndLineInstState({input2_linemode: value});
|
|
this.postSimpleChange(result, 'Unable to set the line mode for Track 2');
|
|
return;
|
|
|
|
} else if (name === 'track1Phantom') {
|
|
result = await context.jamClient.set48vAndLineInstState({input1_48V: value});
|
|
this.postSimpleChange(result, 'Unable to set the phantom power for Track 1');
|
|
return;
|
|
|
|
} else if (name === 'track2Phantom') {
|
|
result = await context.jamClient.set48vAndLineInstState({input2_48V: value});
|
|
this.postSimpleChange(result, 'Unable to set the phantom power for Track 2');
|
|
return;
|
|
}
|
|
|
|
//else if name == 'track1Instrument'
|
|
// result = context.jamClient.set48vAndLineInstState({input2_48V: value})
|
|
// @postSimpleChange(result, 'Unable to set the phantom power for Track 2')
|
|
// return
|
|
|
|
//else if name == 'track1Instrument'
|
|
// result = context.jamClient.set48vAndLineInstState({input2_48V: value})
|
|
// @postSimpleChange(result, 'Unable to set the phantom power for Track 2')
|
|
// return
|
|
|
|
|
|
const audio = $.extend({}, this.pairedJamBlaster.tracks);
|
|
if (name === 'inputTypeTrack1') {
|
|
audio.input1_linemode = value;
|
|
} else if (name === 'inputTypeTrack2') {
|
|
audio.input2_linemode = value;
|
|
} else if (name === 'track1Phantom') {
|
|
audio.input1_48V = value;
|
|
} else if (name === 'track2Phantom') {
|
|
audio.input2_48V = value;
|
|
} else if (name === 'micActive') {
|
|
audio.has_chat = value;
|
|
}
|
|
|
|
|
|
//track1Active = @pairedJamBlaster.tracks.track1Active
|
|
//if name == 'track1Active'
|
|
// track1Active = value
|
|
|
|
//track2Active = @pairedJamBlaster.tracks.track2Active
|
|
//if name == 'track2Active'
|
|
// track2Active = value
|
|
|
|
const track1Active = true;
|
|
const track2Active = true;
|
|
const has_chat = true;
|
|
|
|
|
|
audio.has_chat = true;
|
|
|
|
let {
|
|
combined
|
|
} = this.pairedJamBlaster.tracks;
|
|
if (name === 'combined') {
|
|
combined = value;
|
|
}
|
|
|
|
let {
|
|
track1Instrument
|
|
} = this.pairedJamBlaster.tracks;
|
|
let {
|
|
track2Instrument
|
|
} = this.pairedJamBlaster.tracks;
|
|
if (name === 'track1Instrument') {
|
|
track1Instrument = this.convertToClientInstrument(value);
|
|
}
|
|
if (name === 'track2Instrument') {
|
|
track2Instrument = this.convertToClientInstrument(value);
|
|
}
|
|
|
|
if (!track1Instrument) {
|
|
track1Instrument = context.JK.server_to_client_instrument_map.Other.client_id;
|
|
}
|
|
if (!track2Instrument) {
|
|
track2Instrument = context.JK.server_to_client_instrument_map.Other.client_id;
|
|
}
|
|
|
|
|
|
if (combined) {
|
|
// user has chosen to combine both inputs into one track. stereo=true is the key flag her
|
|
|
|
audio.track1 = {stereo: true, left: true, inst: track1Instrument};
|
|
delete audio.track2; // backend will treat null as present
|
|
|
|
} else {
|
|
|
|
if (track1Active && track2Active) {
|
|
|
|
audio.track1 = {stereo: false, left: true, inst: track1Instrument};
|
|
audio.track2 = {stereo: false, right: true, inst: track2Instrument};
|
|
|
|
} else if (track1Active) { //(means track)
|
|
|
|
audio.track1 = {stereo: false, left: true, inst: track1Instrument};
|
|
delete audio.track2; // backend will treat null as present
|
|
|
|
} else { // input2Active
|
|
|
|
audio.track2 = {stereo: false, right: true, inst: track2Instrument};
|
|
delete audio.track1; // backend will treat null as present
|
|
}
|
|
}
|
|
|
|
logger.debug("updating JamBlaster track state", audio);
|
|
await context.jamClient.setJbTrackState(audio);
|
|
return this.waitOnTracks();
|
|
} else {
|
|
context.JK.Banner.showAlert('no paired JamBlaster', 'it seems your JamBlaster has become disconnected. Please ensure it is powered on and connected via an ethernet cable.');
|
|
}
|
|
}`
|
|
|
|
waitOnTracks: () ->
|
|
@lastClientTrackState = null
|
|
@waitingOnTracks = true
|
|
if @waitingOnTracksTimeout
|
|
clearTimeout(@waitingOnTracksTimeout)
|
|
@changed()
|
|
@waitingOnTracksTimeout = setTimeout(() =>
|
|
@waitingOnTracksTimeout = null
|
|
if @waitingOnTracks
|
|
@waitingOnTracks = false
|
|
@changed()
|
|
context.JK.Banner.showAlert('something went wrong', 'A notice that the changes were finally applied has not been sent. Leave the session, restart the JamBlaster, and get into a session again.')
|
|
, 10000)
|
|
|
|
# called from backend after track thrashing
|
|
jamblasterTracksUpdated: () ->
|
|
if @waitingOnTracksTimeout
|
|
clearTimeout(@waitingOnTracksTimeout)
|
|
@waitingOnTracksTimeout = null
|
|
@waitingOnTracks = false
|
|
console.log("GETLOCALCLIENTS: jamblasterTracksUpdated")
|
|
@getLocalClients(@userJamBlasters)
|
|
@changed()
|
|
|
|
convertToClientInstrument: (instrumentId) ->
|
|
clientInstrumentId = null
|
|
if instrumentId != null && instrumentId != ''
|
|
clientInstrumentId = context.JK.instrument_id_to_instrument[instrumentId].client_id
|
|
else
|
|
clientInstrumentId = 10
|
|
clientInstrumentId
|
|
|
|
# onSetAutoPair: (autopair) ->
|
|
|
|
|
|
# if !autopair
|
|
# context.jamClient.setJBAutoPair(autopair)
|
|
# @lastClientAutoPair = null
|
|
# JamBlasterActions.resyncBonjour()
|
|
# setTimeout((() => context.JK.Banner.showNotice("autoconnect removed",
|
|
# "To use the JamBlaster in the future, you will need to come to this screen and click the connect link.")), 1)
|
|
# else
|
|
# context.JK.Banner.showYesNo({
|
|
# title: "enable auto-connect",
|
|
# html: "If you would like to automatically connect to your JamBlaster whenever you start this app, click the AUTO CONNECT button below.",
|
|
# yes_text: 'AUTO CONNECT',
|
|
# yes: =>
|
|
# context.jamClient.setJBAutoPair(autopair)
|
|
# @lastClientAutoPair = null
|
|
# JamBlasterActions.resyncBonjour()
|
|
# setTimeout((() => context.JK.Banner.showNotice("autoconnect enabled",
|
|
# "Your desktop JamKazam application will automatically reconnect to the JamBlaster .")), 1)
|
|
|
|
# })
|
|
|
|
onSetAutoPair: `async function(autopair) {
|
|
if (!autopair) {
|
|
await context.jamClient.setJBAutoPair(autopair);
|
|
this.lastClientAutoPair = null;
|
|
JamBlasterActions.resyncBonjour();
|
|
return setTimeout((() => context.JK.Banner.showNotice("autoconnect removed",
|
|
"To use the JamBlaster in the future, you will need to come to this screen and click the connect link.")), 1);
|
|
} else {
|
|
context.JK.Banner.showYesNo({
|
|
title: "enable auto-connect",
|
|
html: "If you would like to automatically connect to your JamBlaster whenever you start this app, click the AUTO CONNECT button below.",
|
|
yes_text: 'AUTO CONNECT',
|
|
yes: async () => {
|
|
await context.jamClient.setJBAutoPair(autopair);
|
|
this.lastClientAutoPair = null;
|
|
JamBlasterActions.resyncBonjour();
|
|
return setTimeout((() => context.JK.Banner.showNotice("autoconnect enabled",
|
|
"Your desktop JamKazam application will automatically reconnect to the JamBlaster .")), 1);
|
|
}
|
|
|
|
});
|
|
}
|
|
}`
|
|
|
|
onPairState: (state) ->
|
|
if state.client_pair_state == 10
|
|
# fully paired
|
|
logger.debug("backend indicates we are paired with a client")
|
|
@onResyncBonjour()
|
|
|
|
# onSaveNetworkSettings: (settings) ->
|
|
# logger.debug("onSaveNetworkSettings", settings)
|
|
|
|
# result = context.jamClient.setJbNetworkState(settings)
|
|
# if !result
|
|
# context.JK.Banner.showAlert('unable to save network settings', 'Please double-check that your JamBlaster is online and paired.')
|
|
# return
|
|
# else
|
|
# context.JK.Banner.showAlert('network settings updated', 'Please reboot the JamBlaster.')
|
|
# # it will be refreshed by backend
|
|
# setTimeout(()=>
|
|
# @onClearNetworkState()
|
|
# @onResyncBonjour()
|
|
# , 1000)
|
|
|
|
onSaveNetworkSettings: `async function(settings) {
|
|
logger.debug("onSaveNetworkSettings", settings);
|
|
|
|
const result = await context.jamClient.setJbNetworkState(settings);
|
|
if (!result) {
|
|
context.JK.Banner.showAlert('unable to save network settings', 'Please double-check that your JamBlaster is online and paired.');
|
|
} else {
|
|
context.JK.Banner.showAlert('network settings updated', 'Please reboot the JamBlaster.');
|
|
// it will be refreshed by backend
|
|
setTimeout(()=> {
|
|
this.onClearNetworkState();
|
|
this.onResyncBonjour();
|
|
}
|
|
, 1000);
|
|
}
|
|
}`
|
|
|
|
|
|
onResyncBonjour: () ->
|
|
|
|
if @refreshingBonjour
|
|
logger.debug("already refreshing bonjour")
|
|
return
|
|
|
|
@refreshingBonjour = true
|
|
@changed()
|
|
rest.getUserJamBlasters({client_id: @app.clientId}).done((response) => @getUserJamBlastersDone(response)).fail((response) => @getUserJamBlastersFail(response))
|
|
|
|
getUserJamBlastersDone: (response) ->
|
|
@userJamBlasters = response
|
|
|
|
@changed()
|
|
|
|
console.log("GETLOCALCLIENTS: getUserJamBlastersDone")
|
|
@getLocalClients(response)
|
|
|
|
|
|
findJamBlaster: (oldClient) ->
|
|
found = null
|
|
if @clients?
|
|
for client in @clients
|
|
if oldClient.server_id? && client.server_id == oldClient.server_id
|
|
found = client
|
|
break
|
|
if oldClient.ipv6_addr? && client.ipv6_addr == oldClient.ipv6_addr
|
|
found = client
|
|
break
|
|
|
|
found
|
|
|
|
getUserJamBlastersFail: (jqXHR) ->
|
|
@refreshingBonjour = false
|
|
@changed()
|
|
@app.layout.ajaxError(jqXHR)
|
|
|
|
getAutoPair: () ->
|
|
if @lastClientAutoPair?
|
|
return @lastClientAutoPair
|
|
else
|
|
return @getJbAutoPair()
|
|
|
|
getNetworkState: (client) ->
|
|
if @lastClientNetworkState? && @lastClientNetworkState.ipv6_addr == client.ipv6_addr
|
|
return @lastClientNetworkState
|
|
else
|
|
return @getJbNetworkState(client)
|
|
|
|
getPortState: (client) ->
|
|
if @lastClientPortState? && @lastClientPortState.ipv6_addr == client.ipv6_addr
|
|
return @lastClientPortState
|
|
else
|
|
return @getJbPortBindState(client)
|
|
|
|
# getJbPortBindState:(client) ->
|
|
# @lastClientPortState = context.jamClient.getJbPortBindState()
|
|
# console.log("context.jamClient.getJbPortBindState()", @lastClientPortState)
|
|
# @lastClientPortState.ipv6_addr = client.ipv6_addr
|
|
# return @lastClientPortState
|
|
|
|
getJbPortBindState: `async function(client) {
|
|
this.lastClientPortState = await context.jamClient.getJbPortBindState();
|
|
console.log("context.jamClient.getJbPortBindState()", this.lastClientPortState);
|
|
this.lastClientPortState.ipv6_addr = client.ipv6_addr;
|
|
return this.lastClientPortState;
|
|
}`
|
|
|
|
# getJbNetworkState:(client) ->
|
|
# @lastClientNetworkState = context.jamClient.getJbNetworkState()
|
|
# console.log("context.jamClient.getJbNetworkState()", @lastClientNetworkState)
|
|
# @lastClientNetworkState.ipv6_addr = client.ipv6_addr
|
|
# return @lastClientNetworkState
|
|
|
|
getJbNetworkState: `async function(client) {
|
|
this.lastClientNetworkState = await context.jamClient.getJbNetworkState();
|
|
console.log("context.jamClient.getJbNetworkState()", this.lastClientNetworkState);
|
|
this.lastClientNetworkState.ipv6_addr = client.ipv6_addr;
|
|
return this.lastClientNetworkState;
|
|
}`
|
|
|
|
# getJbAutoPair:() ->
|
|
# @lastClientAutoPair = context.jamClient.getJBAutoPair()
|
|
# console.log("context.jamClient.getJBAutoPair()", @lastClientAutoPair)
|
|
# return @lastClientAutoPair
|
|
|
|
getJbAutoPair: `async function() {
|
|
this.lastClientAutoPair = await context.jamClient.getJBAutoPair();
|
|
console.log("context.jamClient.getJBAutoPair()", this.lastClientAutoPair);
|
|
return this.lastClientAutoPair;
|
|
}`
|
|
|
|
# getJbTrackState:(client) ->
|
|
# @lastClientTrackState = context.jamClient.getJbTrackState()
|
|
# console.log("context.jamClient.getJbTrackState()", @lastClientTrackState)
|
|
# @lastClientTrackState.ipv6_addr = client.ipv6_addr
|
|
# return @lastClientTrackState
|
|
|
|
getJbTrackState: `async function(client) {
|
|
this.lastClientTrackState = await context.jamClient.getJbTrackState();
|
|
console.log("context.jamClient.getJbTrackState()", this.lastClientTrackState);
|
|
this.lastClientTrackState.ipv6_addr = client.ipv6_addr;
|
|
return this.lastClientTrackState;
|
|
}`
|
|
|
|
onClearPortBindState: () ->
|
|
@lastClientPortState = null
|
|
|
|
onClearNetworkState: () ->
|
|
@lastClientNetworkState = null
|
|
|
|
mergeBonjourClients: (localClients, userJamBlasters) ->
|
|
console.log("@state.localClients", localClients)
|
|
console.log("@state.userJamBlasters", userJamBlasters)
|
|
|
|
# for localClient in @state.localClients
|
|
|
|
autoconnect = @getAutoPair()
|
|
|
|
foundPaired = null
|
|
clients = []
|
|
for localClient in localClients
|
|
if localClient.connect_url.indexOf(':30330') > -1 && localClient.is_jb
|
|
client = {}
|
|
client.ipv6_addr = localClient.ipv6_addr
|
|
client.isConnected = localClient.isPaired
|
|
client.name = localClient.name
|
|
client.has_local = true
|
|
client.has_server = false
|
|
client.id = client.ipv6_addr
|
|
client.connect_url = localClient.connect_url
|
|
client.isPaired = localClient.pstate? && localClient.pstate == 10 # ePairingState.Paired
|
|
client.autoconnect = autoconnect
|
|
|
|
if client.isPaired
|
|
client.portState = @getPortState(client)
|
|
client.network = @getNetworkState(client)
|
|
client.tracks = @getJbTrackState(client)
|
|
client.isDynamicPorts = client.portState?.use_static_port
|
|
foundPaired = client
|
|
|
|
|
|
if client.tracks?
|
|
client.tracks.inputTypeTrack1 = client.tracks.input1_linemode
|
|
client.tracks.inputTypeTrack2 = client.tracks.input2_linemode
|
|
client.tracks.track1Phantom = client.tracks.input1_48V
|
|
client.tracks.track2Phantom = client.tracks.input2_48V
|
|
client.tracks.micActive = client.tracks.has_chat
|
|
|
|
# combined
|
|
track1 = client.tracks.track1
|
|
track2 = client.tracks.track2
|
|
if track1?
|
|
|
|
client.tracks.combined = track1.stereo
|
|
if track1.stereo
|
|
client.tracks.track1Active = true
|
|
client.tracks.track2Active = true
|
|
client.tracks.track1Active = track1.left
|
|
client.tracks.track2Active = track1.right
|
|
client.tracks.track1Instrument = track1.inst
|
|
|
|
if track2?
|
|
client.tracks.track2Instrument = track2.inst
|
|
client.tracks.track1Active = track2.left
|
|
client.tracks.track2Active = track2.right
|
|
# map["adaptiveframe"] = jbcfg.adaptiveframe();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for serverClient in userJamBlasters
|
|
# see if we can join on ipv6
|
|
if ipv6_addr == serverClient.ipv6_link_local
|
|
# ok, matched! augment with server data
|
|
client.serial_no = serverClient.serial_no
|
|
client.user_id = serverClient.user_id
|
|
client.id = serverClient.id
|
|
client.server_id = serverClient.id
|
|
client.client_id = serverClient.client_id
|
|
client.ipv4_link_local = serverClient.ipv4_link_local
|
|
client.display_name = serverClient.display_name
|
|
client.has_server = true
|
|
break
|
|
clients.push(client)
|
|
|
|
for serverClient in userJamBlasters
|
|
|
|
foundLocal = false
|
|
for localClient in localClients
|
|
if ipv6_addr == serverClient.ipv6_link_local
|
|
foundLocal = true
|
|
break
|
|
if !foundLocal
|
|
# this server version of the client has not been spoken for in the earlier loop above
|
|
# so we need to add it in to the client list
|
|
|
|
client = {}
|
|
client.serial_no = serverClient.serial_no
|
|
client.user_id = serverClient.user_id
|
|
client.id = serverClient.id
|
|
client.client_id = serverClient.client_id
|
|
client.ipv4_link_local = serverClient.ipv4_link_local
|
|
client.display_name = serverClient.display_name
|
|
client.has_local = false
|
|
client.has_server = true
|
|
client.autoconnect = autoconnect
|
|
clients.push(client)
|
|
|
|
@pairedJamBlaster = foundPaired
|
|
|
|
console.log("all client", clients)
|
|
|
|
@clients = clients
|
|
@changed()
|
|
|
|
# getLocalClients: (userJamBlasters) ->
|
|
# @localClients = context.jamClient.getLocalClients()
|
|
|
|
# @mergeBonjourClients(@localClients, userJamBlasters)
|
|
|
|
# @refreshingBonjour = false
|
|
# @changed()
|
|
|
|
getLocalClients: `async function(userJamBlasters) {
|
|
this.localClients = await context.jamClient.getLocalClients();
|
|
|
|
this.mergeBonjourClients(this.localClients, userJamBlasters);
|
|
|
|
this.refreshingBonjour = false;
|
|
return this.changed();
|
|
}`
|
|
|
|
# get48vAndLineState: () ->
|
|
# @phantomAndLineState = context.jamClient.get48vAndLineInstState()
|
|
# console.log("get48vAndLineInstState", @phantomAndLineState)
|
|
|
|
get48vAndLineState: `async function() {
|
|
this.phantomAndLineState = await context.jamClient.get48vAndLineInstState();
|
|
console.log("get48vAndLineInstState", this.phantomAndLineState);
|
|
}`
|
|
|
|
|
|
changed: () ->
|
|
@trigger({userJamBlasters: @userJamBlasters, allJamBlasters: @clients, localJamBlasters: @localClients, refreshingBonjour: @refreshingBonjour, pairedJamBlaster: @pairedJamBlaster, waitingOnTracks: @waitingOnTracks})
|
|
}
|
|
)
|