Эх сурвалжийг харах

Wrap calls to localStorage in an exception handler

James Allen 11 жил өмнө
parent
commit
7dd1ab84d5

+ 2 - 0
services/web/public/coffee/base.coffee

@@ -2,6 +2,7 @@ define [
 	"libs"
 	"modules/recursionHelper"
 	"modules/errorCatcher"
+	"modules/localStorage"
 	"utils/underscore"
 ], () ->
 	App = angular.module("SharelatexApp", [
@@ -13,6 +14,7 @@ define [
 		"ngSanitize"
 		"ipCookie"
 		"ErrorCatcher"
+		"localStorage"
 	])
 
 	return App

+ 3 - 1
services/web/public/coffee/ide.coffee

@@ -38,7 +38,7 @@ define [
 	BinaryFilesManager
 ) ->
 
-	App.controller "IdeController", ($scope, $timeout, ide) ->
+	App.controller "IdeController", ($scope, $timeout, ide, localStorage) ->
 		# Don't freak out if we're already in an apply callback
 		$scope.$originalApply = $scope.$apply
 		$scope.$apply = (fn = () ->) ->
@@ -104,4 +104,6 @@ define [
 			else
 				$scope.darkTheme = false
 
+		ide.localStorage = localStorage
+
 	angular.bootstrap(document.body, ["SharelatexApp"])

+ 3 - 3
services/web/public/coffee/ide/directives/layout.coffee

@@ -2,7 +2,7 @@ define [
 	"base"
 	"libs/jquery-layout"
 ], (App) ->
-	App.directive "layout", ["$parse", ($parse) ->
+	App.directive "layout", ["$parse", "ide", ($parse, ide) ->
 		return {
 			compile: () ->
 				pre: (scope, element, attrs) ->
@@ -36,7 +36,7 @@ define [
 							initClosed: scope.$eval(attrs.initClosedWest)
 
 					# Restore previously recorded state
-					if (state = $.localStorage("layout.#{name}"))?
+					if (state = ide.localStorage("layout.#{name}"))?
 						options.west = state.west
 						options.east = state.east
 
@@ -88,7 +88,7 @@ define [
 
 					# Save state when exiting
 					$(window).unload () ->
-						$.localStorage("layout.#{name}", element.layout().readState())
+						ide.localStorage("layout.#{name}", element.layout().readState())
 
 
 

+ 2 - 2
services/web/public/coffee/ide/editor/EditorManager.coffee

@@ -30,7 +30,7 @@ define [
 
 		autoOpenDoc: () ->
 			open_doc_id = 
-				$.localStorage("doc.open_id.#{@$scope.project_id}") or
+				@ide.localStorage("doc.open_id.#{@$scope.project_id}") or
 				@$scope.project.rootDoc_id
 			return if !open_doc_id?
 			doc = @ide.fileTreeManager.findEntityById(open_doc_id)
@@ -51,7 +51,7 @@ define [
 
 			@$scope.editor.open_doc_id = doc.id
 
-			$.localStorage "doc.open_id.#{@$scope.project_id}", doc.id
+			@ide.localStorage "doc.open_id.#{@$scope.project_id}", doc.id
 			@ide.fileTreeManager.selectEntity(doc)
 
 			@$scope.editor.opening = true

+ 2 - 2
services/web/public/coffee/ide/editor/directives/aceEditor.coffee

@@ -18,7 +18,7 @@ define [
 			url = ace.config._moduleUrl(args...) + "?fingerprint=#{window.aceFingerprint}"
 			return url
 
-	App.directive "aceEditor", ($timeout, $compile, $rootScope, event_tracking) ->
+	App.directive "aceEditor", ($timeout, $compile, $rootScope, event_tracking, localStorage) ->
 		monkeyPatchSearch($rootScope, $compile)
 
 		return  {
@@ -57,7 +57,7 @@ define [
 				spellCheckManager     = new SpellCheckManager(scope, editor, element)
 				undoManager           = new UndoManager(scope, editor, element)
 				highlightsManager     = new HighlightsManager(scope, editor, element)
-				cursorPositionManager = new CursorPositionManager(scope, editor, element)
+				cursorPositionManager = new CursorPositionManager(scope, editor, element, localStorage)
 
 				# Prevert Ctrl|Cmd-S from triggering save dialog
 				editor.commands.addCommand

+ 6 - 6
services/web/public/coffee/ide/editor/directives/aceEditor/cursor-position/CursorPositionManager.coffee

@@ -1,6 +1,6 @@
 define [], () ->
 	class CursorPositionManager
-		constructor: (@$scope, @editor, @element) ->
+		constructor: (@$scope, @editor, @element, @localStorage) ->
 
 			onChangeCursor = (e) =>
 				@emitCursorUpdateEvent(e)
@@ -31,15 +31,15 @@ define [], () ->
 
 		storeScrollTopPosition: (session) ->
 			if @doc_id?
-				docPosition = $.localStorage("doc.position.#{@doc_id}") || {}
+				docPosition = @localStorage("doc.position.#{@doc_id}") || {}
 				docPosition.scrollTop = session.getScrollTop()
-				$.localStorage("doc.position.#{@doc_id}", docPosition)
+				@localStorage("doc.position.#{@doc_id}", docPosition)
 
 		storeCursorPosition: (session) ->
 			if @doc_id?
-				docPosition = $.localStorage("doc.position.#{@doc_id}") || {}
+				docPosition = @localStorage("doc.position.#{@doc_id}") || {}
 				docPosition.cursorPosition = session.selection.getCursor()
-				$.localStorage("doc.position.#{@doc_id}", docPosition)
+				@localStorage("doc.position.#{@doc_id}", docPosition)
 			
 		emitCursorUpdateEvent: () ->
 			cursor = @editor.getCursorPosition()
@@ -47,7 +47,7 @@ define [], () ->
 
 		gotoStoredPosition: () ->
 			return if !@doc_id?
-			pos = $.localStorage("doc.position.#{@doc_id}") || {}
+			pos = @localStorage("doc.position.#{@doc_id}") || {}
 			@ignoreCursorPositionChanges = true
 			@editor.moveCursorToPosition(pos.cursorPosition or {row: 0, column: 0})
 			@editor.getSession().setScrollTop(pos.scrollTop or 0)

+ 3 - 4
services/web/public/coffee/ide/file-tree/controllers/FileTreeFolderController.coffee

@@ -1,12 +1,12 @@
 define [
 	"base"
 ], (App) ->
-	App.controller "FileTreeFolderController", ["$scope", "ide", "$modal", ($scope, ide, $modal) ->
-		$scope.expanded = $.localStorage("folder.#{$scope.entity.id}.expanded") or false
+	App.controller "FileTreeFolderController", ($scope, ide, $modal, localStorage) ->
+		$scope.expanded = localStorage("folder.#{$scope.entity.id}.expanded") or false
 
 		$scope.toggleExpanded = () ->
 			$scope.expanded = !$scope.expanded
-			$.localStorage("folder.#{$scope.entity.id}.expanded", $scope.expanded)
+			localStorage("folder.#{$scope.entity.id}.expanded", $scope.expanded)
 
 		$scope.onDrop = (events, ui) ->
 			source = $(ui.draggable).scope().entity
@@ -48,4 +48,3 @@ define [
 					parent_folder: () -> $scope.entity
 				}
 			)
-	]

+ 4 - 4
services/web/public/coffee/ide/pdf/controllers/PdfController.coffee

@@ -2,7 +2,7 @@ define [
 	"base"
 	"libs/latex-log-parser"
 ], (App, LogParser) ->
-	App.controller "PdfController", ($scope, $http, ide, $modal, synctex, event_tracking) ->
+	App.controller "PdfController", ($scope, $http, ide, $modal, synctex, event_tracking, localStorage) ->
 		autoCompile = true
 		$scope.$on "project:joined", () ->
 			return if !autoCompile
@@ -170,14 +170,14 @@ define [
 		$scope.switchToFlatLayout = () ->
 			$scope.ui.pdfLayout = 'flat'
 			$scope.ui.view = 'pdf'
-			$.localStorage "pdf.layout", "flat"
+			ide.localStorage "pdf.layout", "flat"
 			
 		$scope.switchToSideBySideLayout = () ->
 			$scope.ui.pdfLayout = 'sideBySide'
 			$scope.ui.view = 'editor'
-			$.localStorage "pdf.layout", "split"
+			localStorage "pdf.layout", "split"
 			
-		if pdfLayout = $.localStorage("pdf.layout")
+		if pdfLayout = localStorage("pdf.layout")
 			$scope.switchToSideBySideLayout() if pdfLayout == "split"
 			$scope.switchToFlatLayout() if pdfLayout == "flat"
 		else

+ 5 - 5
services/web/public/coffee/ide/pdf/directives/pdfJs.coffee

@@ -24,7 +24,7 @@ define [
 	style.text(textLayerCss + "\n" + annotationsLayerCss + "\n" + highlightsLayerCss)
 	$("body").append(style)
 
-	App.directive "pdfjs", ["$timeout", ($timeout) ->
+	App.directive "pdfjs", ["$timeout", "localStorage", ($timeout, localStorage) ->
 		return {
 			scope: {
 				"pdfSrc": "="
@@ -53,22 +53,22 @@ define [
 					return if initializedPosition
 					initializedPosition = true
 
-					if (scale = $.localStorage("pdf.scale"))?
+					if (scale = localStorage("pdf.scale"))?
 						pdfListView.setScaleMode(scale.scaleMode, scale.scale)
 					else
 						pdfListView.setToFitWidth()
 
-					if (position = $.localStorage("pdf.position.#{attrs.key}"))
+					if (position = localStorage("pdf.position.#{attrs.key}"))
 						pdfListView.setPdfPosition(position)
 
 					scope.position = pdfListView.getPdfPosition(true)
 
 					$(window).unload () =>
-						$.localStorage "pdf.scale", {
+						localStorage "pdf.scale", {
 							scaleMode: pdfListView.getScaleMode()
 							scale: pdfListView.getScale()
 						}
-						$.localStorage "pdf.position.#{attrs.key}", pdfListView.getPdfPosition()
+						localStorage "pdf.position.#{attrs.key}", pdfListView.getPdfPosition()
 
 				flashControls = () ->
 					scope.flashControls = true

+ 7 - 7
services/web/public/coffee/ide/pdfng/directives/pdfJs.coffee

@@ -18,7 +18,7 @@ define [
 	style.text(textLayerCss + "\n" + annotationsLayerCss + "\n" + highlightsLayerCss)
 	$("body").append(style)
 
-	App.directive "pdfng", ["$timeout", ($timeout) ->
+	App.directive "pdfng", ["$timeout", "localStorage", ($timeout, localStorage) ->
 		return {
 			scope: {
 					"pdfSrc": "="
@@ -44,23 +44,23 @@ define [
 					return if initializedPosition
 					initializedPosition = true
 
-					if (scale = $.localStorage("pdf.scale"))?
+					if (scale = localStorage("pdf.scale"))?
 						scope.scale = { scaleMode: scale.scaleMode, scale: +scale.scale}
 					else
 						scope.scale = { scaleMode: 'scale_mode_fit_width' }
 
-					if (position = $.localStorage("pdf.position.#{attrs.key}"))
+					if (position = localStorage("pdf.position.#{attrs.key}"))
 						scope.position = { page: +position.page, offset: { "top": +position.offset.top, "left": +position.offset.left } }
 
 					#scope.position = pdfListView.getPdfPosition(true)
 
 					scope.$on "$destroy", () =>
-						$.localStorage "pdf.scale", scope.scale
-						$.localStorage "pdf.position.#{attrs.key}", scope.position
+						localStorage "pdf.scale", scope.scale
+						localStorage "pdf.position.#{attrs.key}", scope.position
 
 					$(window).unload () =>
-						$.localStorage "pdf.scale", scope.scale
-						$.localStorage "pdf.position.#{attrs.key}", scope.position
+						localStorage "pdf.scale", scope.scale
+						localStorage "pdf.position.#{attrs.key}", scope.position
 
 				flashControls = () ->
 					scope.$evalAsync () ->