Browse Source

refactor subscribe resolution

Brian Gough 7 years ago
parent
commit
273af3f3aa

+ 1 - 4
services/real-time/app/coffee/DocumentUpdaterController.coffee

@@ -36,10 +36,7 @@ module.exports = DocumentUpdaterController =
 		roomEvents.on 'doc-active', (doc_id) ->
 			subscribePromises = for rclient in rclientSubList
 				ChannelManager.subscribe rclient, "applied-ops", doc_id
-			subscribeResult = Promise.all(subscribePromises)
-			emitResult = (err) => this.emit("doc-subscribed-#{doc_id}", err)
-			subscribeResult.then () -> emitResult()
-			subscribeResult.catch (err) -> emitResult(err)
+			RoomManager.emitOnCompletion(subscribePromises, "doc-subscribed-#{doc_id}")
 		roomEvents.on 'doc-empty', (doc_id) ->
 			for rclient in rclientSubList
 				ChannelManager.unsubscribe rclient, "applied-ops", doc_id

+ 5 - 0
services/real-time/app/coffee/RoomManager.coffee

@@ -35,6 +35,11 @@ module.exports = RoomManager =
             entity = IdMap.get(id)
             @leaveEntity client, entity, id
 
+    emitOnCompletion: (promiseList, eventName) ->
+        result = Promise.all(promiseList)
+        result.then () -> RoomEvents.emit(eventName)
+        result.catch (err) -> RoomEvents.emit(eventName, err)
+
     eventSource: () ->
         return RoomEvents
 

+ 1 - 4
services/real-time/app/coffee/WebsocketLoadBalancer.coffee

@@ -42,10 +42,7 @@ module.exports = WebsocketLoadBalancer =
 		roomEvents.on 'project-active', (project_id) ->
 			subscribePromises = for rclient in rclientSubList
 				ChannelManager.subscribe rclient, "editor-events", project_id
-			subscribeResult = Promise.all(subscribePromises)
-			emitResult = (err) => this.emit("project-subscribed-#{project_id}", err)
-			subscribeResult.then () -> emitResult()
-			subscribeResult.catch (err) -> emitResult(err)
+			RoomManager.emitOnCompletion(subscribePromises, "project-subscribed-#{project_id}")
 		roomEvents.on 'project-empty', (project_id) ->
 			for rclient in rclientSubList
 				ChannelManager.unsubscribe rclient, "editor-events", project_id