فهرست منبع

Error if no project returned from joinProject

socket.io seems to choke on the unicode project name and just return
undefined when it fails to parse the JSON. I've improved the escaping
of the user data on HTML load, but reporting an error is the best we
can easily do on joinProject via websockets.
James Allen 9 سال پیش
والد
کامیت
f6bd949f01
2فایلهای تغییر یافته به همراه10 افزوده شده و 4 حذف شده
  1. 8 2
      services/web/app/views/project/editor.pug
  2. 2 2
      services/web/public/coffee/ide/connection/ConnectionManager.coffee

+ 8 - 2
services/web/app/views/project/editor.pug

@@ -105,10 +105,16 @@ block requirejs
 
 
 	//- We need to do .replace(/\//g, '\\/') do that '</script>' -> '<\/script>'
 	//- We need to do .replace(/\//g, '\\/') do that '</script>' -> '<\/script>'
 	//- and doesn't prematurely end the script tag.
 	//- and doesn't prematurely end the script tag.
+	script#data(type="application/json").
+		!{JSON.stringify({userSettings: userSettings, user: user}).replace(/\//g, '\\/')}
+
+	script(type="text/javascript").
+		window.data = JSON.parse($("#data").text());
 	script(type='text/javascript').
 	script(type='text/javascript').
 		window.project_id = "!{project_id}";
 		window.project_id = "!{project_id}";
-		window.userSettings = !{JSON.stringify(userSettings).replace(/\//g, '\\/')};
-		window.user = !{JSON.stringify(user).replace(/\//g, '\\/')};
+		var data = JSON.parse($("#data").text());
+		window.userSettings = data.userSettings;
+		window.user = data.user;
 		window.csrfToken = "!{csrfToken}";
 		window.csrfToken = "!{csrfToken}";
 		window.anonymous = #{anonymous};
 		window.anonymous = #{anonymous};
 		window.maxDocLength = #{maxDocLength};
 		window.maxDocLength = #{maxDocLength};

+ 2 - 2
services/web/public/coffee/ide/connection/ConnectionManager.coffee

@@ -146,7 +146,7 @@ define [], () ->
 			else
 			else
 				@ide.socket.disconnect()
 				@ide.socket.disconnect()
 				@ide.showGenericMessageModal("Something went wrong connecting", """
 				@ide.showGenericMessageModal("Something went wrong connecting", """
-					Something went wrong connecting to your project. Please refresh is this continues to happen.
+					Something went wrong connecting to your project. Please refresh if this continues to happen.
 				""")
 				""")
 
 
 		joinProject: () ->
 		joinProject: () ->
@@ -157,7 +157,7 @@ define [], () ->
 			@ide.socket.emit 'joinProject', {
 			@ide.socket.emit 'joinProject', {
 				project_id: @ide.project_id
 				project_id: @ide.project_id
 			}, (err, project, permissionsLevel, protocolVersion) =>
 			}, (err, project, permissionsLevel, protocolVersion) =>
-				if err?
+				if err? or !project?
 					return @reportConnectionError(err)
 					return @reportConnectionError(err)
 
 
 				if @$scope.protocolVersion? and @$scope.protocolVersion != protocolVersion
 				if @$scope.protocolVersion? and @$scope.protocolVersion != protocolVersion