mirror of
				https://gitlab.nic.cz/turris/reforis/foris-js.git
				synced 2025-11-03 23:00:31 +01:00 
			
		
		
		
	Compare commits
	
		
			12 Commits
		
	
	
		
			v6.1.0
			...
			feature/ws
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					cc1389536e | ||
| 
						 | 
					499be46588 | ||
| 
						 | 
					c86e2c8944 | ||
| 
						 | 
					b96ccde81c | ||
| 
						 | 
					cfa6eade17 | ||
| 
						 | 
					380a388a38 | ||
| 
						 | 
					cc19b4b293 | ||
| 
						 | 
					e7ec494bb2 | ||
| 
						 | 
					ea590e443c | ||
| 
						 | 
					b127bf5edf | ||
| 
						 | 
					40e4a9a4e3 | ||
| 
						 | 
					bcb7c43863 | 
							
								
								
									
										16
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -8,6 +8,19 @@ and this project adheres to
 | 
			
		||||
 | 
			
		||||
## [Unreleased]
 | 
			
		||||
 | 
			
		||||
## [6.1.1] - 2024-08-30
 | 
			
		||||
 | 
			
		||||
### Added
 | 
			
		||||
 | 
			
		||||
-   Added & updated Weblate translations
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
-   Updated icon color classes to use "text-secondary" instead of "text-dark"
 | 
			
		||||
-   Updated Wi-Fi QRCodeModal component to use new styles & added close button
 | 
			
		||||
-   Refactored WiFiGuestForm component to get rid of obsolete div element
 | 
			
		||||
-   NPM audit fix
 | 
			
		||||
 | 
			
		||||
## [6.1.0] - 2024-08-23
 | 
			
		||||
 | 
			
		||||
### Added
 | 
			
		||||
@@ -348,7 +361,8 @@ and this project adheres to
 | 
			
		||||
## [0.0.7] - 2019-09-02
 | 
			
		||||
 | 
			
		||||
[unreleased]:
 | 
			
		||||
    https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.1.0...master
 | 
			
		||||
    https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.1.1...master
 | 
			
		||||
[6.1.1]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.1.0...v6.1.1
 | 
			
		||||
[6.1.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.0.3...v6.1.0
 | 
			
		||||
[6.0.3]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.0.2...v6.0.3
 | 
			
		||||
[6.0.2]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.0.1...v6.0.2
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										197
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										197
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -1,12 +1,12 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "foris",
 | 
			
		||||
    "version": "6.1.0",
 | 
			
		||||
    "version": "6.1.1",
 | 
			
		||||
    "lockfileVersion": 2,
 | 
			
		||||
    "requires": true,
 | 
			
		||||
    "packages": {
 | 
			
		||||
        "": {
 | 
			
		||||
            "name": "foris",
 | 
			
		||||
            "version": "6.1.0",
 | 
			
		||||
            "version": "6.1.1",
 | 
			
		||||
            "license": "GPL-3.0",
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@fortawesome/fontawesome-svg-core": "^6.6.0",
 | 
			
		||||
@@ -18,7 +18,8 @@
 | 
			
		||||
                "moment": "^2.30.1",
 | 
			
		||||
                "qrcode.react": "^3.1.0",
 | 
			
		||||
                "react-datetime": "^3.2.0",
 | 
			
		||||
                "react-uid": "^2.3.3"
 | 
			
		||||
                "react-uid": "^2.3.3",
 | 
			
		||||
                "socket.io-client": "^4.6.1"
 | 
			
		||||
            },
 | 
			
		||||
            "devDependencies": {
 | 
			
		||||
                "@babel/cli": "^7.24.7",
 | 
			
		||||
@@ -3583,6 +3584,12 @@
 | 
			
		||||
                "@sinonjs/commons": "^3.0.0"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@socket.io/component-emitter": {
 | 
			
		||||
            "version": "3.1.2",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
 | 
			
		||||
            "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
 | 
			
		||||
            "license": "MIT"
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@testing-library/dom": {
 | 
			
		||||
            "version": "5.6.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-5.6.1.tgz",
 | 
			
		||||
@@ -3722,21 +3729,13 @@
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz",
 | 
			
		||||
            "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "optional": true,
 | 
			
		||||
            "peer": true,
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@types/estree": "*",
 | 
			
		||||
                "@types/json-schema": "*"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@types/eslint-scope": {
 | 
			
		||||
            "version": "3.7.3",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz",
 | 
			
		||||
            "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@types/eslint": "*",
 | 
			
		||||
                "@types/estree": "*"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@types/estree": {
 | 
			
		||||
            "version": "1.0.5",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
 | 
			
		||||
@@ -6380,7 +6379,6 @@
 | 
			
		||||
            "version": "4.3.5",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
 | 
			
		||||
            "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "ms": "2.1.2"
 | 
			
		||||
            },
 | 
			
		||||
@@ -6730,11 +6728,34 @@
 | 
			
		||||
                "node": ">= 0.8"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/engine.io-client": {
 | 
			
		||||
            "version": "6.5.4",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz",
 | 
			
		||||
            "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==",
 | 
			
		||||
            "license": "MIT",
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@socket.io/component-emitter": "~3.1.0",
 | 
			
		||||
                "debug": "~4.3.1",
 | 
			
		||||
                "engine.io-parser": "~5.2.1",
 | 
			
		||||
                "ws": "~8.17.1",
 | 
			
		||||
                "xmlhttprequest-ssl": "~2.0.0"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/engine.io-parser": {
 | 
			
		||||
            "version": "5.2.3",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
 | 
			
		||||
            "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
 | 
			
		||||
            "license": "MIT",
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=10.0.0"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/enhanced-resolve": {
 | 
			
		||||
            "version": "5.17.0",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz",
 | 
			
		||||
            "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==",
 | 
			
		||||
            "version": "5.17.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
 | 
			
		||||
            "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "MIT",
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "graceful-fs": "^4.2.4",
 | 
			
		||||
                "tapable": "^2.2.0"
 | 
			
		||||
@@ -6748,6 +6769,7 @@
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
 | 
			
		||||
            "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "MIT",
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=6"
 | 
			
		||||
            }
 | 
			
		||||
@@ -13785,10 +13807,11 @@
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/micromatch": {
 | 
			
		||||
            "version": "4.0.7",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
 | 
			
		||||
            "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
 | 
			
		||||
            "version": "4.0.8",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
 | 
			
		||||
            "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "MIT",
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "braces": "^3.0.3",
 | 
			
		||||
                "picomatch": "^2.3.1"
 | 
			
		||||
@@ -13953,8 +13976,7 @@
 | 
			
		||||
        "node_modules/ms": {
 | 
			
		||||
            "version": "2.1.2",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
 | 
			
		||||
            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
 | 
			
		||||
            "dev": true
 | 
			
		||||
            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/multicast-dns": {
 | 
			
		||||
            "version": "7.2.5",
 | 
			
		||||
@@ -16557,6 +16579,34 @@
 | 
			
		||||
            "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
 | 
			
		||||
            "dev": true
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/socket.io-client": {
 | 
			
		||||
            "version": "4.7.5",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz",
 | 
			
		||||
            "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==",
 | 
			
		||||
            "license": "MIT",
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@socket.io/component-emitter": "~3.1.0",
 | 
			
		||||
                "debug": "~4.3.2",
 | 
			
		||||
                "engine.io-client": "~6.5.2",
 | 
			
		||||
                "socket.io-parser": "~4.2.4"
 | 
			
		||||
            },
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=10.0.0"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/socket.io-parser": {
 | 
			
		||||
            "version": "4.2.4",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
 | 
			
		||||
            "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
 | 
			
		||||
            "license": "MIT",
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@socket.io/component-emitter": "~3.1.0",
 | 
			
		||||
                "debug": "~4.3.1"
 | 
			
		||||
            },
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=10.0.0"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/sockjs": {
 | 
			
		||||
            "version": "0.3.24",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
 | 
			
		||||
@@ -17822,13 +17872,12 @@
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/webpack": {
 | 
			
		||||
            "version": "5.92.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz",
 | 
			
		||||
            "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==",
 | 
			
		||||
            "version": "5.94.0",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
 | 
			
		||||
            "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "MIT",
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@types/eslint-scope": "^3.7.3",
 | 
			
		||||
                "@types/estree": "^1.0.5",
 | 
			
		||||
                "@webassemblyjs/ast": "^1.12.1",
 | 
			
		||||
                "@webassemblyjs/wasm-edit": "^1.12.1",
 | 
			
		||||
@@ -17837,7 +17886,7 @@
 | 
			
		||||
                "acorn-import-attributes": "^1.9.5",
 | 
			
		||||
                "browserslist": "^4.21.10",
 | 
			
		||||
                "chrome-trace-event": "^1.0.2",
 | 
			
		||||
                "enhanced-resolve": "^5.17.0",
 | 
			
		||||
                "enhanced-resolve": "^5.17.1",
 | 
			
		||||
                "es-module-lexer": "^1.2.1",
 | 
			
		||||
                "eslint-scope": "5.1.1",
 | 
			
		||||
                "events": "^3.2.0",
 | 
			
		||||
@@ -18366,7 +18415,6 @@
 | 
			
		||||
            "version": "8.17.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
 | 
			
		||||
            "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "MIT",
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=10.0.0"
 | 
			
		||||
@@ -18399,6 +18447,14 @@
 | 
			
		||||
            "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
 | 
			
		||||
            "dev": true
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/xmlhttprequest-ssl": {
 | 
			
		||||
            "version": "2.0.0",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz",
 | 
			
		||||
            "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==",
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=0.4.0"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/yallist": {
 | 
			
		||||
            "version": "4.0.0",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
 | 
			
		||||
@@ -21059,6 +21115,11 @@
 | 
			
		||||
                "@sinonjs/commons": "^3.0.0"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "@socket.io/component-emitter": {
 | 
			
		||||
            "version": "3.1.2",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
 | 
			
		||||
            "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA=="
 | 
			
		||||
        },
 | 
			
		||||
        "@testing-library/dom": {
 | 
			
		||||
            "version": "5.6.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-5.6.1.tgz",
 | 
			
		||||
@@ -21181,21 +21242,13 @@
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz",
 | 
			
		||||
            "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "optional": true,
 | 
			
		||||
            "peer": true,
 | 
			
		||||
            "requires": {
 | 
			
		||||
                "@types/estree": "*",
 | 
			
		||||
                "@types/json-schema": "*"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "@types/eslint-scope": {
 | 
			
		||||
            "version": "3.7.3",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz",
 | 
			
		||||
            "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "requires": {
 | 
			
		||||
                "@types/eslint": "*",
 | 
			
		||||
                "@types/estree": "*"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "@types/estree": {
 | 
			
		||||
            "version": "1.0.5",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
 | 
			
		||||
@@ -23276,7 +23329,6 @@
 | 
			
		||||
            "version": "4.3.5",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
 | 
			
		||||
            "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "requires": {
 | 
			
		||||
                "ms": "2.1.2"
 | 
			
		||||
            }
 | 
			
		||||
@@ -23536,10 +23588,27 @@
 | 
			
		||||
            "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
 | 
			
		||||
            "dev": true
 | 
			
		||||
        },
 | 
			
		||||
        "engine.io-client": {
 | 
			
		||||
            "version": "6.5.4",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz",
 | 
			
		||||
            "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==",
 | 
			
		||||
            "requires": {
 | 
			
		||||
                "@socket.io/component-emitter": "~3.1.0",
 | 
			
		||||
                "debug": "~4.3.1",
 | 
			
		||||
                "engine.io-parser": "~5.2.1",
 | 
			
		||||
                "ws": "~8.17.1",
 | 
			
		||||
                "xmlhttprequest-ssl": "~2.0.0"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "engine.io-parser": {
 | 
			
		||||
            "version": "5.2.3",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
 | 
			
		||||
            "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q=="
 | 
			
		||||
        },
 | 
			
		||||
        "enhanced-resolve": {
 | 
			
		||||
            "version": "5.17.0",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz",
 | 
			
		||||
            "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==",
 | 
			
		||||
            "version": "5.17.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
 | 
			
		||||
            "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "requires": {
 | 
			
		||||
                "graceful-fs": "^4.2.4",
 | 
			
		||||
@@ -28840,9 +28909,9 @@
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "micromatch": {
 | 
			
		||||
            "version": "4.0.7",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
 | 
			
		||||
            "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
 | 
			
		||||
            "version": "4.0.8",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
 | 
			
		||||
            "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "requires": {
 | 
			
		||||
                "braces": "^3.0.3",
 | 
			
		||||
@@ -28961,8 +29030,7 @@
 | 
			
		||||
        "ms": {
 | 
			
		||||
            "version": "2.1.2",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
 | 
			
		||||
            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
 | 
			
		||||
            "dev": true
 | 
			
		||||
            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
 | 
			
		||||
        },
 | 
			
		||||
        "multicast-dns": {
 | 
			
		||||
            "version": "7.2.5",
 | 
			
		||||
@@ -30891,6 +30959,26 @@
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "socket.io-client": {
 | 
			
		||||
            "version": "4.7.5",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz",
 | 
			
		||||
            "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==",
 | 
			
		||||
            "requires": {
 | 
			
		||||
                "@socket.io/component-emitter": "~3.1.0",
 | 
			
		||||
                "debug": "~4.3.2",
 | 
			
		||||
                "engine.io-client": "~6.5.2",
 | 
			
		||||
                "socket.io-parser": "~4.2.4"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "socket.io-parser": {
 | 
			
		||||
            "version": "4.2.4",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
 | 
			
		||||
            "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
 | 
			
		||||
            "requires": {
 | 
			
		||||
                "@socket.io/component-emitter": "~3.1.0",
 | 
			
		||||
                "debug": "~4.3.1"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "sockjs": {
 | 
			
		||||
            "version": "0.3.24",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
 | 
			
		||||
@@ -31815,12 +31903,11 @@
 | 
			
		||||
            "dev": true
 | 
			
		||||
        },
 | 
			
		||||
        "webpack": {
 | 
			
		||||
            "version": "5.92.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz",
 | 
			
		||||
            "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==",
 | 
			
		||||
            "version": "5.94.0",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
 | 
			
		||||
            "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "requires": {
 | 
			
		||||
                "@types/eslint-scope": "^3.7.3",
 | 
			
		||||
                "@types/estree": "^1.0.5",
 | 
			
		||||
                "@webassemblyjs/ast": "^1.12.1",
 | 
			
		||||
                "@webassemblyjs/wasm-edit": "^1.12.1",
 | 
			
		||||
@@ -31829,7 +31916,7 @@
 | 
			
		||||
                "acorn-import-attributes": "^1.9.5",
 | 
			
		||||
                "browserslist": "^4.21.10",
 | 
			
		||||
                "chrome-trace-event": "^1.0.2",
 | 
			
		||||
                "enhanced-resolve": "^5.17.0",
 | 
			
		||||
                "enhanced-resolve": "^5.17.1",
 | 
			
		||||
                "es-module-lexer": "^1.2.1",
 | 
			
		||||
                "eslint-scope": "5.1.1",
 | 
			
		||||
                "events": "^3.2.0",
 | 
			
		||||
@@ -32213,7 +32300,6 @@
 | 
			
		||||
            "version": "8.17.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
 | 
			
		||||
            "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "requires": {}
 | 
			
		||||
        },
 | 
			
		||||
        "xml-name-validator": {
 | 
			
		||||
@@ -32228,6 +32314,11 @@
 | 
			
		||||
            "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
 | 
			
		||||
            "dev": true
 | 
			
		||||
        },
 | 
			
		||||
        "xmlhttprequest-ssl": {
 | 
			
		||||
            "version": "2.0.0",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz",
 | 
			
		||||
            "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A=="
 | 
			
		||||
        },
 | 
			
		||||
        "yallist": {
 | 
			
		||||
            "version": "4.0.0",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "foris",
 | 
			
		||||
    "version": "6.1.0",
 | 
			
		||||
    "version": "6.1.1",
 | 
			
		||||
    "description": "Foris JS library is a set of components and utils for reForis application and plugins.",
 | 
			
		||||
    "author": "CZ.NIC, z.s.p.o.",
 | 
			
		||||
    "repository": {
 | 
			
		||||
@@ -23,7 +23,8 @@
 | 
			
		||||
        "moment": "^2.30.1",
 | 
			
		||||
        "qrcode.react": "^3.1.0",
 | 
			
		||||
        "react-datetime": "^3.2.0",
 | 
			
		||||
        "react-uid": "^2.3.3"
 | 
			
		||||
        "react-uid": "^2.3.3",
 | 
			
		||||
        "socket.io-client": "^4.6.1"
 | 
			
		||||
    },
 | 
			
		||||
    "peerDependencies": {
 | 
			
		||||
        "bootstrap": "^5.3.3",
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,7 @@ function PasswordInput({ withEye, newPass, ...props }) {
 | 
			
		||||
                    <FontAwesomeIcon
 | 
			
		||||
                        icon={isHidden ? faEye : faEyeSlash}
 | 
			
		||||
                        style={{ width: "1.25rem" }}
 | 
			
		||||
                        className="text-dark"
 | 
			
		||||
                        className="text-secondary"
 | 
			
		||||
                    />
 | 
			
		||||
                </button>
 | 
			
		||||
            )}
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@ function ResetWiFiSettings({ ws, endpoint }) {
 | 
			
		||||
 | 
			
		||||
    useEffect(() => {
 | 
			
		||||
        const module = "wifi";
 | 
			
		||||
        ws.subscribe(module).bind(module, "reset", () => {
 | 
			
		||||
        ws.bind(module, "reset", () => {
 | 
			
		||||
            // eslint-disable-next-line no-restricted-globals
 | 
			
		||||
            setTimeout(() => location.reload(), 1000);
 | 
			
		||||
        });
 | 
			
		||||
 
 | 
			
		||||
@@ -68,14 +68,11 @@ export default function WifiGuestForm({
 | 
			
		||||
                        }))}
 | 
			
		||||
                        {...props}
 | 
			
		||||
                    >
 | 
			
		||||
                        <div className="input-group-append">
 | 
			
		||||
                            <WiFiQRCode
 | 
			
		||||
                                SSID={formData.SSID}
 | 
			
		||||
                                password={formData.password}
 | 
			
		||||
                            />
 | 
			
		||||
                        </div>
 | 
			
		||||
                        <WiFiQRCode
 | 
			
		||||
                            SSID={formData.SSID}
 | 
			
		||||
                            password={formData.password}
 | 
			
		||||
                        />
 | 
			
		||||
                    </TextInput>
 | 
			
		||||
 | 
			
		||||
                    <PasswordInput
 | 
			
		||||
                        withEye
 | 
			
		||||
                        label={_("Password")}
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ export default function WiFiQRCode({ SSID, password }) {
 | 
			
		||||
                    icon="fa-solid fa-qrcode"
 | 
			
		||||
                    title={_("Show QR code")}
 | 
			
		||||
                    aria-label={_("Show QR code")}
 | 
			
		||||
                    className="text-dark"
 | 
			
		||||
                    className="text-secondary"
 | 
			
		||||
                />
 | 
			
		||||
            </button>
 | 
			
		||||
            {modal ? (
 | 
			
		||||
@@ -70,17 +70,26 @@ function QRCodeModal({ shown, setShown, SSID, password }) {
 | 
			
		||||
            <ModalHeader setShown={setShown} title={_("Wi-Fi QR Code")} />
 | 
			
		||||
            <ModalBody>
 | 
			
		||||
                <QRCode
 | 
			
		||||
                    className="d-block mx-auto img-logo-black"
 | 
			
		||||
                    renderAs="svg"
 | 
			
		||||
                    value={toQRCodeContent(SSID, password)}
 | 
			
		||||
                    level="M"
 | 
			
		||||
                    size={350}
 | 
			
		||||
                    includeMargin
 | 
			
		||||
                    style={{ display: "block", margin: "auto" }}
 | 
			
		||||
                />
 | 
			
		||||
            </ModalBody>
 | 
			
		||||
            <ModalFooter>
 | 
			
		||||
                <Button
 | 
			
		||||
                    className="btn-outline-primary"
 | 
			
		||||
                    className="btn-secondary"
 | 
			
		||||
                    onClick={(e) => {
 | 
			
		||||
                        e.preventDefault();
 | 
			
		||||
                        setShown(false);
 | 
			
		||||
                    }}
 | 
			
		||||
                >
 | 
			
		||||
                    {_("Close")}
 | 
			
		||||
                </Button>
 | 
			
		||||
                <Button
 | 
			
		||||
                    className="btn-primary"
 | 
			
		||||
                    onClick={(e) => {
 | 
			
		||||
                        e.preventDefault();
 | 
			
		||||
                        createAndDownloadPdf(SSID, password);
 | 
			
		||||
 
 | 
			
		||||
@@ -339,7 +339,7 @@ exports[`<WiFiSettings/> Snapshot guest network. 1`] = `
 | 
			
		||||
- First value
 | 
			
		||||
+ Second value
 | 
			
		||||
 | 
			
		||||
@@ -524,10 +524,91 @@
 | 
			
		||||
@@ -524,10 +524,87 @@
 | 
			
		||||
            <small>
 | 
			
		||||
              Enables Wi-Fi for guests, which is separated from LAN network. Devices connected to this network are allowed to access the internet, but aren't allowed to access other devices and the configuration interface of the router. Parameters of the guest network can be set in the Guest network tab.
 | 
			
		||||
            </small>
 | 
			
		||||
@@ -363,18 +363,14 @@ exports[`<WiFiSettings/> Snapshot guest network. 1`] = `
 | 
			
		||||
+             type="text"
 | 
			
		||||
+             value="TestGuestSSID"
 | 
			
		||||
+           />
 | 
			
		||||
+           <div
 | 
			
		||||
+             class="input-group-append"
 | 
			
		||||
+           <button
 | 
			
		||||
+             class="input-group-text"
 | 
			
		||||
+             type="button"
 | 
			
		||||
+           >
 | 
			
		||||
+             <button
 | 
			
		||||
+               class="input-group-text"
 | 
			
		||||
+               type="button"
 | 
			
		||||
+             >
 | 
			
		||||
+               <i
 | 
			
		||||
+                 class="fa"
 | 
			
		||||
+               />
 | 
			
		||||
+             </button>
 | 
			
		||||
+           </div>
 | 
			
		||||
+             <i
 | 
			
		||||
+               class="fa"
 | 
			
		||||
+             />
 | 
			
		||||
+           </button>
 | 
			
		||||
+         </div>
 | 
			
		||||
+         <div
 | 
			
		||||
+           class="form-text"
 | 
			
		||||
@@ -431,7 +427,7 @@ exports[`<WiFiSettings/> Snapshot guest network. 1`] = `
 | 
			
		||||
          class="form-check form-switch mb-3 d-flex align-items-center"
 | 
			
		||||
        >
 | 
			
		||||
          <input
 | 
			
		||||
@@ -550,10 +631,11 @@
 | 
			
		||||
@@ -550,10 +627,11 @@
 | 
			
		||||
        <div
 | 
			
		||||
          class="text-end"
 | 
			
		||||
        >
 | 
			
		||||
 
 | 
			
		||||
@@ -46,7 +46,7 @@ describe("<RebootButton/>", () => {
 | 
			
		||||
        fireEvent.click(getByText(componentContainer, "Reboot"));
 | 
			
		||||
        fireEvent.click(getByText(componentContainer, "Confirm reboot"));
 | 
			
		||||
        expect(mockAxios.post).toHaveBeenCalledWith(
 | 
			
		||||
            "/reforis/api/reboot",
 | 
			
		||||
            "/api/reboot",
 | 
			
		||||
            undefined,
 | 
			
		||||
            expect.anything()
 | 
			
		||||
        );
 | 
			
		||||
 
 | 
			
		||||
@@ -10,3 +10,4 @@ global._ = (str) => str;
 | 
			
		||||
global.ngettext = (str) => str;
 | 
			
		||||
global.babel = { format: (str) => str };
 | 
			
		||||
global.ForisTranslations = { locale: "en" };
 | 
			
		||||
global.setImmediate = (fn) => setTimeout(fn, 0);
 | 
			
		||||
@@ -1,11 +1,11 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/)
 | 
			
		||||
 * Copyright (C) 2019-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
 | 
			
		||||
 *
 | 
			
		||||
 * This is free software, licensed under the GNU General Public License v3.
 | 
			
		||||
 * See /LICENSE for more information.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
export const REFORIS_URL_PREFIX = "/reforis";
 | 
			
		||||
export const REFORIS_URL_PREFIX = process.env.REFORIS_PREFIX || "";
 | 
			
		||||
export const REFORIS_API_URL_PREFIX = `${REFORIS_URL_PREFIX}/api`;
 | 
			
		||||
 | 
			
		||||
export const ForisURLs = {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2020-2022 CZ.NIC z.s.p.o. (http://www.nic.cz/)
 | 
			
		||||
 * Copyright (C) 2020-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
 | 
			
		||||
 *
 | 
			
		||||
 * This is free software, licensed under the GNU General Public License v3.
 | 
			
		||||
 * See /LICENSE for more information.
 | 
			
		||||
@@ -7,47 +7,33 @@
 | 
			
		||||
 | 
			
		||||
/* eslint no-console: "off" */
 | 
			
		||||
 | 
			
		||||
const PROTOCOL = window.location.protocol === "http:" ? "ws" : "wss";
 | 
			
		||||
import { io } from "socket.io-client";
 | 
			
		||||
 | 
			
		||||
const URL = process.env.LIGHTTPD
 | 
			
		||||
    ? `${PROTOCOL}://${window.location.host}/${process.env.WSPATH || "foris-ws"}`
 | 
			
		||||
    : `${PROTOCOL}://${window.location.hostname}:9081`;
 | 
			
		||||
 | 
			
		||||
const WAITING_FOR_CONNECTION_TIMEOUT = 500;
 | 
			
		||||
import { REFORIS_URL_PREFIX } from "../utils/forisUrls";
 | 
			
		||||
 | 
			
		||||
class WebSockets {
 | 
			
		||||
    constructor() {
 | 
			
		||||
        this.ws = new WebSocket(URL);
 | 
			
		||||
        this.ws.onerror = (e) => {
 | 
			
		||||
            console.error("WS: Error:", e);
 | 
			
		||||
        };
 | 
			
		||||
        this.ws.onmessage = (e) => {
 | 
			
		||||
            console.debug(`WS: Received Message: ${e.data}`);
 | 
			
		||||
            const data = JSON.parse(e.data);
 | 
			
		||||
            this.dispatch(data);
 | 
			
		||||
        };
 | 
			
		||||
        this.ws.onopen = () => {
 | 
			
		||||
            console.debug("WS: Connection open.");
 | 
			
		||||
        };
 | 
			
		||||
        this.ws.onclose = () => {
 | 
			
		||||
            console.debug("WS: Connection closed.");
 | 
			
		||||
        };
 | 
			
		||||
        this.socket = io("/notifications", {
 | 
			
		||||
            path: `${REFORIS_URL_PREFIX}/reforis-ws`,
 | 
			
		||||
        });
 | 
			
		||||
        this.connection = null;
 | 
			
		||||
        this.socket.on("disconnect", (reason) => {
 | 
			
		||||
            this.connection = null;
 | 
			
		||||
            console.debug(`SocketIO disconnected (${reason})`);
 | 
			
		||||
        });
 | 
			
		||||
        this.socket.on("notification", (message) => {
 | 
			
		||||
            console.debug("WS: Received Message:", message);
 | 
			
		||||
            this.dispatch(message);
 | 
			
		||||
        });
 | 
			
		||||
        this.socket.on("connect", (connection) => {
 | 
			
		||||
            this.connection = connection;
 | 
			
		||||
            console.debug(`SocketIO connected.`);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // callbacks[module][action]
 | 
			
		||||
        this.callbacks = {};
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    waitForConnection(callback) {
 | 
			
		||||
        if (this.ws.readyState === 1) {
 | 
			
		||||
            callback();
 | 
			
		||||
        } else {
 | 
			
		||||
            const that = this;
 | 
			
		||||
            setTimeout(() => {
 | 
			
		||||
                that.waitForConnection(callback);
 | 
			
		||||
            }, WAITING_FOR_CONNECTION_TIMEOUT);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    bind(module, action, callback) {
 | 
			
		||||
        this.callbacks[module] = this.callbacks[module] || {};
 | 
			
		||||
        this.callbacks[module][action] = this.callbacks[module][action] || [];
 | 
			
		||||
@@ -55,13 +41,6 @@ class WebSockets {
 | 
			
		||||
        return this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    subscribe(module) {
 | 
			
		||||
        this.waitForConnection(() => {
 | 
			
		||||
            this.send("subscribe", module);
 | 
			
		||||
        });
 | 
			
		||||
        return this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    unbind(module, action, callback) {
 | 
			
		||||
        const callbacks = this.callbacks[module][action];
 | 
			
		||||
 | 
			
		||||
@@ -75,28 +54,12 @@ class WebSockets {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (Object.keys(this.callbacks[module]).length === 0) {
 | 
			
		||||
            this.unsubscribe(module);
 | 
			
		||||
            delete this.callbacks[module];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    unsubscribe(module) {
 | 
			
		||||
        this.waitForConnection(() => {
 | 
			
		||||
            this.send("unsubscribe", module);
 | 
			
		||||
            delete this.callbacks[module];
 | 
			
		||||
        });
 | 
			
		||||
        return this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    send(action, params) {
 | 
			
		||||
        const payload = JSON.stringify({ action, params });
 | 
			
		||||
        this.waitForConnection(() => {
 | 
			
		||||
            this.ws.send(payload);
 | 
			
		||||
        });
 | 
			
		||||
        return this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    dispatch(json) {
 | 
			
		||||
        if (!json.module) return;
 | 
			
		||||
 | 
			
		||||
@@ -105,20 +68,17 @@ class WebSockets {
 | 
			
		||||
            chain = this.callbacks[json.module][json.action];
 | 
			
		||||
        } catch (error) {
 | 
			
		||||
            if (error instanceof TypeError) {
 | 
			
		||||
                console.warn(
 | 
			
		||||
                    `Callback for this message wasn't found:${error.data}`
 | 
			
		||||
                console.debug(
 | 
			
		||||
                    `Callbacks for this module wasn't found: ${json.module}`
 | 
			
		||||
                );
 | 
			
		||||
            } else throw error;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (typeof chain === "undefined") return;
 | 
			
		||||
 | 
			
		||||
        console.debug("Handling WS message", json);
 | 
			
		||||
        chain.forEach((callback) => callback(json));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    close() {
 | 
			
		||||
        this.ws.close();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default WebSockets;
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,7 @@ function useWSForisModule(
 | 
			
		||||
            setData(message.data);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ws.subscribe(module).bind(module, action, callback);
 | 
			
		||||
        ws.bind(module, action, callback);
 | 
			
		||||
 | 
			
		||||
        return () => {
 | 
			
		||||
            ws.unbind(module, action, callback);
 | 
			
		||||
 
 | 
			
		||||
@@ -8,15 +8,16 @@ msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-08-23 14:02+0200\n"
 | 
			
		||||
"PO-Revision-Date: 2022-09-11 17:15+0000\n"
 | 
			
		||||
"Last-Translator: Dan Cybersec <dan.cybersec@protonmail.com>\n"
 | 
			
		||||
"PO-Revision-Date: 2024-08-24 13:09+0000\n"
 | 
			
		||||
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
 | 
			
		||||
"Language-Team: Spanish <https://hosted.weblate.org/projects/turris/foris-js/"
 | 
			
		||||
"es/>\n"
 | 
			
		||||
"Language: es\n"
 | 
			
		||||
"Language-Team: Spanish <https://hosted.weblate.org/projects/turris/foris-"
 | 
			
		||||
"js/es/>\n"
 | 
			
		||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=utf-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
 | 
			
		||||
"X-Generator: Weblate 5.7.1-dev\n"
 | 
			
		||||
"Generated-By: Babel 2.16.0\n"
 | 
			
		||||
 | 
			
		||||
#: src/api/utils.js:61
 | 
			
		||||
@@ -39,7 +40,7 @@ msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
msgstr "Cerrar"
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
@@ -123,13 +124,15 @@ msgstr "Cifrado"
 | 
			
		||||
 | 
			
		||||
#: src/common/WiFiSettings/WiFiForm.js:226
 | 
			
		||||
msgid "Disable Management Frame Protection"
 | 
			
		||||
msgstr ""
 | 
			
		||||
msgstr "Desactivar Protected Management Frames"
 | 
			
		||||
 | 
			
		||||
#: src/common/WiFiSettings/WiFiForm.js:227
 | 
			
		||||
msgid ""
 | 
			
		||||
"In case you have trouble connecting to WiFi Access Point, try disabling "
 | 
			
		||||
"Management Frame Protection."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Si tienes problemas para conectarte a un punto de acceso Wi-Fi, intenta "
 | 
			
		||||
"desactivar Management Frame Protection."
 | 
			
		||||
 | 
			
		||||
#: src/common/WiFiSettings/WiFiForm.js:262
 | 
			
		||||
msgid "auto"
 | 
			
		||||
@@ -145,9 +148,8 @@ msgstr "Activar el modo Wi-Fi de invitados"
 | 
			
		||||
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:43
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:44
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Show QR code"
 | 
			
		||||
msgstr "Código QR Wi-Fi"
 | 
			
		||||
msgstr "Mostrar el código QR"
 | 
			
		||||
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:70
 | 
			
		||||
msgid "Wi-Fi QR Code"
 | 
			
		||||
@@ -444,4 +446,3 @@ msgstr "No contiene una lista de correos electrónicos separados por comas."
 | 
			
		||||
#~ " default option with 20 MHz wide "
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ msgstr ""
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user