forked from gitea/gitea
		
	 e46dbec294
			
		
	
	
		e46dbec294
		
			
		
	
	
	
	
		
			
			* Move EventSource to SharedWorker (#12095) Backport #12095 Move EventSource to use a SharedWorker. This prevents issues with HTTP/1.1 open browser connections from preventing gitea from opening multiple tabs. Also allow setting EVENT_SOURCE_UPDATE_TIME to disable EventSource updating Fix #11978 Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: techknowlogick <techknowlogick@gitea.io> * Bugfix for shared event source For some reason our eslint configuration is not working correctly and a bug has become apparent when trying to backport this to 1.12. Signed-off-by: Andrew Thornton <art27@cantab.net> * Re-fix #12095 again Unfortunately some of the suggested changes to #12095 introduced bugs which due to caching behaviour of sharedworkers were not caught on simple tests. These are as follows: * Changing from simple for loop to use includes here: ```js register(port) { if (!this.clients.includes(port)) return; this.clients.push(port); port.postMessage({ type: 'status', message: `registered to ${this.url}`, }); } ``` The additional `!` prevents any clients from being added and should read: ```js if (this.clients.includes(port)) return; ``` * Dropping the use of jQuery `$(...)` selection and using DOM `querySelector` here: ```js async function receiveUpdateCount(event) { try { const data = JSON.parse(event.data); const notificationCount = document.querySelector('.notification_count'); if (data.Count > 0) { notificationCount.classList.remove('hidden'); } else { notificationCount.classList.add('hidden'); } notificationCount.text() = `${data.Count}`; await updateNotificationTable(); } catch (error) { console.error(error, event); } } ``` Requires that `notificationCount.text()` be changed to use `textContent` instead. Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
		
			
				
	
	
		
			75 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| root: true
 | |
| 
 | |
| extends:
 | |
|   - eslint-config-airbnb-base
 | |
|   - eslint:recommended
 | |
| 
 | |
| ignorePatterns:
 | |
|   - /web_src/js/vendor
 | |
| 
 | |
| parserOptions:
 | |
|   ecmaVersion: 2020
 | |
| 
 | |
| env:
 | |
|   browser: true
 | |
|   es6: true
 | |
|   jquery: true
 | |
|   node: true
 | |
| 
 | |
| globals:
 | |
|   __webpack_public_path__: true
 | |
|   CodeMirror: false
 | |
|   Dropzone: false
 | |
|   SimpleMDE: false
 | |
|   u2fApi: false
 | |
|   Tribute: false
 | |
| 
 | |
| overrides:
 | |
|   - files: ["web_src/**/*worker.js"]
 | |
|     env:
 | |
|       worker: true
 | |
|     rules:
 | |
|       no-restricted-globals: [0]
 | |
| 
 | |
| rules:
 | |
|   arrow-body-style: [0]
 | |
|   arrow-parens: [2, always]
 | |
|   camelcase: [0]
 | |
|   comma-dangle: [2, only-multiline]
 | |
|   consistent-return: [0]
 | |
|   default-case: [0]
 | |
|   func-names: [0]
 | |
|   import/extensions: [2, always, {ignorePackages: true}]
 | |
|   import/prefer-default-export: [0]
 | |
|   max-len: [0]
 | |
|   multiline-comment-style: [2, separate-lines]
 | |
|   newline-per-chained-call: [0]
 | |
|   no-alert: [0]
 | |
|   no-cond-assign: [2, except-parens]
 | |
|   no-console: [1, {allow: [info, warn, error]}]
 | |
|   no-continue: [0]
 | |
|   no-empty: [2, {allowEmptyCatch: true}]
 | |
|   no-eq-null: [2]
 | |
|   no-mixed-operators: [0]
 | |
|   no-multi-assign: [0]
 | |
|   no-new: [0]
 | |
|   no-param-reassign: [0]
 | |
|   no-plusplus: [0]
 | |
|   no-restricted-syntax: [0]
 | |
|   no-return-await: [0]
 | |
|   no-shadow: [0]
 | |
|   no-underscore-dangle: [0]
 | |
|   no-unused-vars: [2, {args: all, argsIgnorePattern: ^_, varsIgnorePattern: ^_, ignoreRestSiblings: true}]
 | |
|   no-use-before-define: [0]
 | |
|   no-var: [2]
 | |
|   object-curly-newline: [0]
 | |
|   object-curly-spacing: [2, never]
 | |
|   one-var-declaration-per-line: [0]
 | |
|   one-var: [0]
 | |
|   operator-linebreak: [2, after]
 | |
|   prefer-const: [2, {destructuring: all}]
 | |
|   prefer-destructuring: [0]
 | |
|   quotes: [2, single, {avoidEscape: true, allowTemplateLiterals: true}]
 | |
|   radix: [2, as-needed]
 | |
|   semi: [2, always, {omitLastInOneLineBlock: true}]
 |