mirror of
				https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui.git
				synced 2025-11-04 04:37:45 +00:00 
			
		
		
		
	Compare commits
	
		
			7 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					f7a7b8aa9d | ||
| 
						 | 
					0a08bfca60 | ||
| 
						 | 
					1958de15be | ||
| 
						 | 
					c7bf7ad1dc | ||
| 
						 | 
					e0cf06b437 | ||
| 
						 | 
					460ba9eee7 | ||
| 
						 | 
					788e1f59bd | 
							
								
								
									
										2
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							@@ -20,7 +20,7 @@ defaults:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  docker:
 | 
					  docker:
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-20.04
 | 
				
			||||||
    env:
 | 
					    env:
 | 
				
			||||||
      DOCKER_REGISTRY_URL: tip-tip-wlan-cloud-ucentral.jfrog.io
 | 
					      DOCKER_REGISTRY_URL: tip-tip-wlan-cloud-ucentral.jfrog.io
 | 
				
			||||||
      DOCKER_REGISTRY_USERNAME: ucentral
 | 
					      DOCKER_REGISTRY_USERNAME: ucentral
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							@@ -11,7 +11,7 @@ defaults:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  helm-package:
 | 
					  helm-package:
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-20.04
 | 
				
			||||||
    env:
 | 
					    env:
 | 
				
			||||||
      HELM_REPO_URL: https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral-helm/
 | 
					      HELM_REPO_URL: https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral-helm/
 | 
				
			||||||
      HELM_REPO_USERNAME: ucentral
 | 
					      HELM_REPO_USERNAME: ucentral
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@ fullnameOverride: ""
 | 
				
			|||||||
images:
 | 
					images:
 | 
				
			||||||
  owgwui:
 | 
					  owgwui:
 | 
				
			||||||
    repository: tip-tip-wlan-cloud-ucentral.jfrog.io/owgw-ui
 | 
					    repository: tip-tip-wlan-cloud-ucentral.jfrog.io/owgw-ui
 | 
				
			||||||
    tag: main
 | 
					    tag: v3.2.1
 | 
				
			||||||
    pullPolicy: Always
 | 
					    pullPolicy: Always
 | 
				
			||||||
 | 
					
 | 
				
			||||||
services:
 | 
					services:
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										32
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										32
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -1,12 +1,12 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "ucentral-client",
 | 
					  "name": "ucentral-client",
 | 
				
			||||||
  "version": "4.1.0",
 | 
					  "version": "3.2.0",
 | 
				
			||||||
  "lockfileVersion": 3,
 | 
					  "lockfileVersion": 3,
 | 
				
			||||||
  "requires": true,
 | 
					  "requires": true,
 | 
				
			||||||
  "packages": {
 | 
					  "packages": {
 | 
				
			||||||
    "": {
 | 
					    "": {
 | 
				
			||||||
      "name": "ucentral-client",
 | 
					      "name": "ucentral-client",
 | 
				
			||||||
      "version": "4.1.0",
 | 
					      "version": "3.2.0",
 | 
				
			||||||
      "license": "ISC",
 | 
					      "license": "ISC",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "@chakra-ui/anatomy": "^2.1.1",
 | 
					        "@chakra-ui/anatomy": "^2.1.1",
 | 
				
			||||||
@@ -3540,7 +3540,7 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@jridgewell/resolve-uri": {
 | 
					    "node_modules/@jridgewell/resolve-uri": {
 | 
				
			||||||
      "version": "3.1.0",
 | 
					      "version": "3.1.0",
 | 
				
			||||||
      "devOptional": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "license": "MIT",
 | 
					      "license": "MIT",
 | 
				
			||||||
      "engines": {
 | 
					      "engines": {
 | 
				
			||||||
        "node": ">=6.0.0"
 | 
					        "node": ">=6.0.0"
 | 
				
			||||||
@@ -3548,7 +3548,7 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@jridgewell/set-array": {
 | 
					    "node_modules/@jridgewell/set-array": {
 | 
				
			||||||
      "version": "1.1.2",
 | 
					      "version": "1.1.2",
 | 
				
			||||||
      "devOptional": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "license": "MIT",
 | 
					      "license": "MIT",
 | 
				
			||||||
      "engines": {
 | 
					      "engines": {
 | 
				
			||||||
        "node": ">=6.0.0"
 | 
					        "node": ">=6.0.0"
 | 
				
			||||||
@@ -3556,7 +3556,7 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@jridgewell/source-map": {
 | 
					    "node_modules/@jridgewell/source-map": {
 | 
				
			||||||
      "version": "0.3.2",
 | 
					      "version": "0.3.2",
 | 
				
			||||||
      "devOptional": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "license": "MIT",
 | 
					      "license": "MIT",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "@jridgewell/gen-mapping": "^0.3.0",
 | 
					        "@jridgewell/gen-mapping": "^0.3.0",
 | 
				
			||||||
@@ -3565,7 +3565,7 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
 | 
					    "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
 | 
				
			||||||
      "version": "0.3.2",
 | 
					      "version": "0.3.2",
 | 
				
			||||||
      "devOptional": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "license": "MIT",
 | 
					      "license": "MIT",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "@jridgewell/set-array": "^1.0.1",
 | 
					        "@jridgewell/set-array": "^1.0.1",
 | 
				
			||||||
@@ -3578,12 +3578,12 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@jridgewell/sourcemap-codec": {
 | 
					    "node_modules/@jridgewell/sourcemap-codec": {
 | 
				
			||||||
      "version": "1.4.14",
 | 
					      "version": "1.4.14",
 | 
				
			||||||
      "devOptional": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "license": "MIT"
 | 
					      "license": "MIT"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@jridgewell/trace-mapping": {
 | 
					    "node_modules/@jridgewell/trace-mapping": {
 | 
				
			||||||
      "version": "0.3.17",
 | 
					      "version": "0.3.17",
 | 
				
			||||||
      "devOptional": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "license": "MIT",
 | 
					      "license": "MIT",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "@jridgewell/resolve-uri": "3.1.0",
 | 
					        "@jridgewell/resolve-uri": "3.1.0",
 | 
				
			||||||
@@ -4374,7 +4374,7 @@
 | 
				
			|||||||
      "version": "18.15.11",
 | 
					      "version": "18.15.11",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz",
 | 
				
			||||||
      "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==",
 | 
					      "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==",
 | 
				
			||||||
      "devOptional": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@types/parse-json": {
 | 
					    "node_modules/@types/parse-json": {
 | 
				
			||||||
      "version": "4.0.0",
 | 
					      "version": "4.0.0",
 | 
				
			||||||
@@ -4419,7 +4419,7 @@
 | 
				
			|||||||
      "version": "18.0.11",
 | 
					      "version": "18.0.11",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz",
 | 
				
			||||||
      "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==",
 | 
					      "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==",
 | 
				
			||||||
      "devOptional": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "@types/react": "*"
 | 
					        "@types/react": "*"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -4753,7 +4753,7 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/acorn": {
 | 
					    "node_modules/acorn": {
 | 
				
			||||||
      "version": "8.8.0",
 | 
					      "version": "8.8.0",
 | 
				
			||||||
      "devOptional": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "license": "MIT",
 | 
					      "license": "MIT",
 | 
				
			||||||
      "bin": {
 | 
					      "bin": {
 | 
				
			||||||
        "acorn": "bin/acorn"
 | 
					        "acorn": "bin/acorn"
 | 
				
			||||||
@@ -5174,7 +5174,7 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/buffer-from": {
 | 
					    "node_modules/buffer-from": {
 | 
				
			||||||
      "version": "1.1.2",
 | 
					      "version": "1.1.2",
 | 
				
			||||||
      "devOptional": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "license": "MIT"
 | 
					      "license": "MIT"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/builtin-modules": {
 | 
					    "node_modules/builtin-modules": {
 | 
				
			||||||
@@ -9781,7 +9781,7 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/source-map-support": {
 | 
					    "node_modules/source-map-support": {
 | 
				
			||||||
      "version": "0.5.21",
 | 
					      "version": "0.5.21",
 | 
				
			||||||
      "devOptional": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "license": "MIT",
 | 
					      "license": "MIT",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "buffer-from": "^1.0.0",
 | 
					        "buffer-from": "^1.0.0",
 | 
				
			||||||
@@ -9790,7 +9790,7 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/source-map-support/node_modules/source-map": {
 | 
					    "node_modules/source-map-support/node_modules/source-map": {
 | 
				
			||||||
      "version": "0.6.1",
 | 
					      "version": "0.6.1",
 | 
				
			||||||
      "devOptional": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "license": "BSD-3-Clause",
 | 
					      "license": "BSD-3-Clause",
 | 
				
			||||||
      "engines": {
 | 
					      "engines": {
 | 
				
			||||||
        "node": ">=0.10.0"
 | 
					        "node": ">=0.10.0"
 | 
				
			||||||
@@ -10080,7 +10080,7 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/terser": {
 | 
					    "node_modules/terser": {
 | 
				
			||||||
      "version": "5.15.1",
 | 
					      "version": "5.15.1",
 | 
				
			||||||
      "devOptional": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "license": "BSD-2-Clause",
 | 
					      "license": "BSD-2-Clause",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "@jridgewell/source-map": "^0.3.2",
 | 
					        "@jridgewell/source-map": "^0.3.2",
 | 
				
			||||||
@@ -10097,7 +10097,7 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/terser/node_modules/commander": {
 | 
					    "node_modules/terser/node_modules/commander": {
 | 
				
			||||||
      "version": "2.20.3",
 | 
					      "version": "2.20.3",
 | 
				
			||||||
      "devOptional": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "license": "MIT"
 | 
					      "license": "MIT"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/text-table": {
 | 
					    "node_modules/text-table": {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "ucentral-client",
 | 
					  "name": "ucentral-client",
 | 
				
			||||||
  "version": "4.1.0",
 | 
					  "version": "3.2.1",
 | 
				
			||||||
  "description": "",
 | 
					  "description": "",
 | 
				
			||||||
  "private": true,
 | 
					  "private": true,
 | 
				
			||||||
  "main": "index.tsx",
 | 
					  "main": "index.tsx",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -514,10 +514,6 @@
 | 
				
			|||||||
			"started_upgrade": "{{serialNumber}} just shut down to start the upgrade!",
 | 
								"started_upgrade": "{{serialNumber}} just shut down to start the upgrade!",
 | 
				
			||||||
			"trace": "Trace",
 | 
								"trace": "Trace",
 | 
				
			||||||
			"trace_description": "Launch a remote trace of this device for either a specific duration or a number of packets",
 | 
								"trace_description": "Launch a remote trace of this device for either a specific duration or a number of packets",
 | 
				
			||||||
      "re_enroll": "Re-enroll",
 | 
					 | 
				
			||||||
      "re_enroll_initiated": "Re-enrollment initiated for device {{serialNumber}}",
 | 
					 | 
				
			||||||
      "re_enroll_warning": "This will renew the operational certificate for device {{serialNumber}}.",
 | 
					 | 
				
			||||||
      "confirm_re_enroll": "Renew Certificate for {{serialNumber}}",
 | 
					 | 
				
			||||||
			"update_success": "Device updated!",
 | 
								"update_success": "Device updated!",
 | 
				
			||||||
			"updated_blacklist": "Updated Blacklist!"
 | 
								"updated_blacklist": "Updated Blacklist!"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
@@ -626,7 +622,6 @@
 | 
				
			|||||||
		"all": "All",
 | 
							"all": "All",
 | 
				
			||||||
		"associations": "Associations",
 | 
							"associations": "Associations",
 | 
				
			||||||
		"certificate_expires_in": "Certificate Expiry",
 | 
							"certificate_expires_in": "Certificate Expiry",
 | 
				
			||||||
    "certificate_issuer": "Certificate Issuer",
 | 
					 | 
				
			||||||
		"certificate_expiry": "Cert. Expires In",
 | 
							"certificate_expiry": "Cert. Expires In",
 | 
				
			||||||
		"connected": "Connected",
 | 
							"connected": "Connected",
 | 
				
			||||||
		"crash_logs": "Crash Logs",
 | 
							"crash_logs": "Crash Logs",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,6 @@ interface Props {
 | 
				
			|||||||
  onOpenTelemetryModal: (serialNumber: string) => void;
 | 
					  onOpenTelemetryModal: (serialNumber: string) => void;
 | 
				
			||||||
  onOpenScriptModal: (device: GatewayDevice) => void;
 | 
					  onOpenScriptModal: (device: GatewayDevice) => void;
 | 
				
			||||||
  onOpenRebootModal: (serialNumber: string) => void;
 | 
					  onOpenRebootModal: (serialNumber: string) => void;
 | 
				
			||||||
  onOpenReEnrollModal?: (serialNumber: string) => void;
 | 
					 | 
				
			||||||
  size?: 'sm' | 'md' | 'lg';
 | 
					  size?: 'sm' | 'md' | 'lg';
 | 
				
			||||||
  isCompact?: boolean;
 | 
					  isCompact?: boolean;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -50,7 +49,6 @@ const DeviceActionDropdown = ({
 | 
				
			|||||||
  onOpenConfigureModal,
 | 
					  onOpenConfigureModal,
 | 
				
			||||||
  onOpenScriptModal,
 | 
					  onOpenScriptModal,
 | 
				
			||||||
  onOpenRebootModal,
 | 
					  onOpenRebootModal,
 | 
				
			||||||
  onOpenReEnrollModal,
 | 
					 | 
				
			||||||
  size,
 | 
					  size,
 | 
				
			||||||
  isCompact,
 | 
					  isCompact,
 | 
				
			||||||
}: Props) => {
 | 
					}: Props) => {
 | 
				
			||||||
@@ -236,11 +234,6 @@ const DeviceActionDropdown = ({
 | 
				
			|||||||
            <MenuItem onClick={handleRebootClick} hidden={!isCompact}>
 | 
					            <MenuItem onClick={handleRebootClick} hidden={!isCompact}>
 | 
				
			||||||
              {t('commands.reboot')}
 | 
					              {t('commands.reboot')}
 | 
				
			||||||
            </MenuItem>
 | 
					            </MenuItem>
 | 
				
			||||||
            {onOpenReEnrollModal && (
 | 
					 | 
				
			||||||
              <MenuItem onClick={() => onOpenReEnrollModal(device.serialNumber)}>
 | 
					 | 
				
			||||||
                {t('controller.devices.re_enroll')}
 | 
					 | 
				
			||||||
              </MenuItem>
 | 
					 | 
				
			||||||
            )}
 | 
					 | 
				
			||||||
            <MenuItem onClick={handleOpenTelemetry}>{t('controller.telemetry.title')}</MenuItem>
 | 
					            <MenuItem onClick={handleOpenTelemetry}>{t('controller.telemetry.title')}</MenuItem>
 | 
				
			||||||
            <MenuItem onClick={handleOpenScript}>{t('script.one')}</MenuItem>
 | 
					            <MenuItem onClick={handleOpenScript}>{t('script.one')}</MenuItem>
 | 
				
			||||||
            <MenuItem onClick={handleOpenTrace}>{t('controller.devices.trace')}</MenuItem>
 | 
					            <MenuItem onClick={handleOpenTrace}>{t('controller.devices.trace')}</MenuItem>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,50 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import { Center, Spinner, Alert, Button } from '@chakra-ui/react';
 | 
					 | 
				
			||||||
import { useTranslation } from 'react-i18next';
 | 
					 | 
				
			||||||
import { Modal } from '../Modal';
 | 
					 | 
				
			||||||
import { useReEnroll } from 'hooks/Network/ReEnroll';
 | 
					 | 
				
			||||||
import { ModalProps } from 'models/Modal';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
interface Props {
 | 
					 | 
				
			||||||
  modalProps: ModalProps;
 | 
					 | 
				
			||||||
  serialNumber: string;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const ReEnrollModal = ({ modalProps: { isOpen, onClose }, serialNumber }: Props) => {
 | 
					 | 
				
			||||||
  const { t } = useTranslation();
 | 
					 | 
				
			||||||
  const { mutate: reEnroll, isLoading } = useReEnroll({ serialNumber });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  const submit = () => {
 | 
					 | 
				
			||||||
    reEnroll(
 | 
					 | 
				
			||||||
      { serialNumber, when: 0 },
 | 
					 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
        onSuccess: () => {
 | 
					 | 
				
			||||||
          onClose();
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <Modal isOpen={isOpen} onClose={onClose} title={t('controller.devices.re_enroll')}>
 | 
					 | 
				
			||||||
      {isLoading ? (
 | 
					 | 
				
			||||||
        <Center>
 | 
					 | 
				
			||||||
          <Spinner size="lg" />
 | 
					 | 
				
			||||||
        </Center>
 | 
					 | 
				
			||||||
      ) : (
 | 
					 | 
				
			||||||
        <>
 | 
					 | 
				
			||||||
          <Alert colorScheme="blue" mb={6}>
 | 
					 | 
				
			||||||
            {t('controller.devices.re_enroll_warning', { serialNumber })}
 | 
					 | 
				
			||||||
          </Alert>
 | 
					 | 
				
			||||||
          <Center mb={6}>
 | 
					 | 
				
			||||||
            <Button size="lg" colorScheme="blue" onClick={submit} fontWeight="bold">
 | 
					 | 
				
			||||||
              {t('controller.devices.confirm_re_enroll', { serialNumber })}
 | 
					 | 
				
			||||||
            </Button>
 | 
					 | 
				
			||||||
          </Center>
 | 
					 | 
				
			||||||
        </>
 | 
					 | 
				
			||||||
      )}
 | 
					 | 
				
			||||||
    </Modal>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default ReEnrollModal;
 | 
					 | 
				
			||||||
@@ -166,7 +166,6 @@ export type DeviceStatus = {
 | 
				
			|||||||
  connected: boolean;
 | 
					  connected: boolean;
 | 
				
			||||||
  connectReason?: string;
 | 
					  connectReason?: string;
 | 
				
			||||||
  certificateExpiryDate: number;
 | 
					  certificateExpiryDate: number;
 | 
				
			||||||
  certificateIssuerName?: string;
 | 
					 | 
				
			||||||
  connectionCompletionTime: number;
 | 
					  connectionCompletionTime: number;
 | 
				
			||||||
  firmware: string;
 | 
					  firmware: string;
 | 
				
			||||||
  ipAddress: string;
 | 
					  ipAddress: string;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,78 +0,0 @@
 | 
				
			|||||||
import { useToast } from '@chakra-ui/react';
 | 
					 | 
				
			||||||
import { useMutation, useQueryClient } from '@tanstack/react-query';
 | 
					 | 
				
			||||||
import { useTranslation } from 'react-i18next';
 | 
					 | 
				
			||||||
import { axiosGw } from 'constants/axiosInstances';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export type ReEnrollRequest = {
 | 
					 | 
				
			||||||
  serialNumber: string;
 | 
					 | 
				
			||||||
  when?: number;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export type ReEnrollResponse = {
 | 
					 | 
				
			||||||
  UUID: string;
 | 
					 | 
				
			||||||
  command: 're-enroll' | 'reenroll';
 | 
					 | 
				
			||||||
  completed: number;
 | 
					 | 
				
			||||||
  custom: number;
 | 
					 | 
				
			||||||
  details: {
 | 
					 | 
				
			||||||
    serial: string;
 | 
					 | 
				
			||||||
    when: number;
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
  errorCode: number;
 | 
					 | 
				
			||||||
  errorText: string;
 | 
					 | 
				
			||||||
  executed: number;
 | 
					 | 
				
			||||||
  executionTime: number;
 | 
					 | 
				
			||||||
  results: {
 | 
					 | 
				
			||||||
    serial: string;
 | 
					 | 
				
			||||||
    status: {
 | 
					 | 
				
			||||||
      error: number;
 | 
					 | 
				
			||||||
      resultCode: number;
 | 
					 | 
				
			||||||
      resultText: string;
 | 
					 | 
				
			||||||
      text: string;
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
  serialNumber: string;
 | 
					 | 
				
			||||||
  status: string;
 | 
					 | 
				
			||||||
  submitted: number;
 | 
					 | 
				
			||||||
  submittedBy: string;
 | 
					 | 
				
			||||||
  when: number;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const reEnrollDevice = async ({ serialNumber, when = 0 }: ReEnrollRequest) =>
 | 
					 | 
				
			||||||
  axiosGw.post<ReEnrollResponse>(`device/${serialNumber}/reenroll`, {
 | 
					 | 
				
			||||||
    serial: serialNumber,
 | 
					 | 
				
			||||||
    when,
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const useReEnroll = ({ serialNumber }: { serialNumber: string }) => {
 | 
					 | 
				
			||||||
  const queryClient = useQueryClient();
 | 
					 | 
				
			||||||
  const { t } = useTranslation();
 | 
					 | 
				
			||||||
  const toast = useToast();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return useMutation(reEnrollDevice, {
 | 
					 | 
				
			||||||
    onSuccess: () => {
 | 
					 | 
				
			||||||
      queryClient.invalidateQueries(['commands', serialNumber]);
 | 
					 | 
				
			||||||
      queryClient.invalidateQueries(['device', serialNumber]);
 | 
					 | 
				
			||||||
      queryClient.invalidateQueries(['device-status', serialNumber]);
 | 
					 | 
				
			||||||
      toast({
 | 
					 | 
				
			||||||
        id: `re-enroll-success-${serialNumber}`,
 | 
					 | 
				
			||||||
        title: t('common.success'),
 | 
					 | 
				
			||||||
        description: t('controller.devices.re_enroll_initiated', { serialNumber }),
 | 
					 | 
				
			||||||
        status: 'success',
 | 
					 | 
				
			||||||
        duration: 5000,
 | 
					 | 
				
			||||||
        isClosable: true,
 | 
					 | 
				
			||||||
        position: 'top-right',
 | 
					 | 
				
			||||||
      });
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    onError: (error: any) => {
 | 
					 | 
				
			||||||
      toast({
 | 
					 | 
				
			||||||
        id: `re-enroll-error-${serialNumber}`,
 | 
					 | 
				
			||||||
        title: t('common.error'),
 | 
					 | 
				
			||||||
        description: error?.response?.data?.ErrorDescription || t('common.error'),
 | 
					 | 
				
			||||||
        status: 'error',
 | 
					 | 
				
			||||||
        duration: 5000,
 | 
					 | 
				
			||||||
        isClosable: true,
 | 
					 | 
				
			||||||
        position: 'top-right',
 | 
					 | 
				
			||||||
      });
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -171,12 +171,6 @@ const DeviceSummary = ({ serialNumber }: Props) => {
 | 
				
			|||||||
                '-'
 | 
					                '-'
 | 
				
			||||||
              )}
 | 
					              )}
 | 
				
			||||||
            </GridItem>
 | 
					            </GridItem>
 | 
				
			||||||
            <GridItem colSpan={1} alignContent="center" alignItems="center">
 | 
					 | 
				
			||||||
              <Heading size="sm">{t('devices.certificate_issuer')}:</Heading>
 | 
					 | 
				
			||||||
            </GridItem>
 | 
					 | 
				
			||||||
            <GridItem colSpan={1}>
 | 
					 | 
				
			||||||
              {getStatus.data?.certificateIssuerName ? getStatus.data.certificateIssuerName.split('CN=')[1] : '-'}
 | 
					 | 
				
			||||||
            </GridItem>
 | 
					 | 
				
			||||||
            <GridItem colSpan={1} alignContent="center" alignItems="center">
 | 
					            <GridItem colSpan={1} alignContent="center" alignItems="center">
 | 
				
			||||||
              <Heading size="sm">Connect Reason:</Heading>
 | 
					              <Heading size="sm">Connect Reason:</Heading>
 | 
				
			||||||
            </GridItem>
 | 
					            </GridItem>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,7 +41,6 @@ import { EventQueueModal } from 'components/Modals/EventQueueModal';
 | 
				
			|||||||
import FactoryResetModal from 'components/Modals/FactoryResetModal';
 | 
					import FactoryResetModal from 'components/Modals/FactoryResetModal';
 | 
				
			||||||
import { FirmwareUpgradeModal } from 'components/Modals/FirmwareUpgradeModal';
 | 
					import { FirmwareUpgradeModal } from 'components/Modals/FirmwareUpgradeModal';
 | 
				
			||||||
import { RebootModal } from 'components/Modals/RebootModal';
 | 
					import { RebootModal } from 'components/Modals/RebootModal';
 | 
				
			||||||
import ReEnrollModal from 'components/Modals/ReEnrollModal';
 | 
					 | 
				
			||||||
import { useScriptModal } from 'components/Modals/ScriptModal/useScriptModal';
 | 
					import { useScriptModal } from 'components/Modals/ScriptModal/useScriptModal';
 | 
				
			||||||
import ethernetConnected from './ethernetIconConnected.svg?react';
 | 
					import ethernetConnected from './ethernetIconConnected.svg?react';
 | 
				
			||||||
import ethernetDisconnected from './ethernetIconDisconnected.svg?react';
 | 
					import ethernetDisconnected from './ethernetIconDisconnected.svg?react';
 | 
				
			||||||
@@ -77,7 +76,6 @@ const DevicePageWrapper = ({ serialNumber }: Props) => {
 | 
				
			|||||||
  const telemetryModalProps = useDisclosure();
 | 
					  const telemetryModalProps = useDisclosure();
 | 
				
			||||||
  const traceModalProps = useDisclosure();
 | 
					  const traceModalProps = useDisclosure();
 | 
				
			||||||
  const rebootModalProps = useDisclosure();
 | 
					  const rebootModalProps = useDisclosure();
 | 
				
			||||||
  const reEnrollModalProps = useDisclosure();
 | 
					 | 
				
			||||||
  const scriptModal = useScriptModal();
 | 
					  const scriptModal = useScriptModal();
 | 
				
			||||||
  // Sticky-top styles
 | 
					  // Sticky-top styles
 | 
				
			||||||
  const isCompact = breakpoint === 'base' || breakpoint === 'sm' || breakpoint === 'md';
 | 
					  const isCompact = breakpoint === 'base' || breakpoint === 'sm' || breakpoint === 'md';
 | 
				
			||||||
@@ -218,7 +216,6 @@ const DevicePageWrapper = ({ serialNumber }: Props) => {
 | 
				
			|||||||
                  onOpenTelemetryModal={telemetryModalProps.onOpen}
 | 
					                  onOpenTelemetryModal={telemetryModalProps.onOpen}
 | 
				
			||||||
                  onOpenScriptModal={scriptModal.openModal}
 | 
					                  onOpenScriptModal={scriptModal.openModal}
 | 
				
			||||||
                  onOpenRebootModal={rebootModalProps.onOpen}
 | 
					                  onOpenRebootModal={rebootModalProps.onOpen}
 | 
				
			||||||
                  onOpenReEnrollModal={reEnrollModalProps.onOpen}
 | 
					 | 
				
			||||||
                  size="md"
 | 
					                  size="md"
 | 
				
			||||||
                  isCompact
 | 
					                  isCompact
 | 
				
			||||||
                />
 | 
					                />
 | 
				
			||||||
@@ -271,7 +268,6 @@ const DevicePageWrapper = ({ serialNumber }: Props) => {
 | 
				
			|||||||
                    onOpenTelemetryModal={telemetryModalProps.onOpen}
 | 
					                    onOpenTelemetryModal={telemetryModalProps.onOpen}
 | 
				
			||||||
                    onOpenRebootModal={rebootModalProps.onOpen}
 | 
					                    onOpenRebootModal={rebootModalProps.onOpen}
 | 
				
			||||||
                    onOpenScriptModal={scriptModal.openModal}
 | 
					                    onOpenScriptModal={scriptModal.openModal}
 | 
				
			||||||
                    onOpenReEnrollModal={reEnrollModalProps.onOpen}
 | 
					 | 
				
			||||||
                    size="md"
 | 
					                    size="md"
 | 
				
			||||||
                  />
 | 
					                  />
 | 
				
			||||||
                )}
 | 
					                )}
 | 
				
			||||||
@@ -315,7 +311,6 @@ const DevicePageWrapper = ({ serialNumber }: Props) => {
 | 
				
			|||||||
      <ConfigureModal serialNumber={serialNumber} modalProps={configureModalProps} />
 | 
					      <ConfigureModal serialNumber={serialNumber} modalProps={configureModalProps} />
 | 
				
			||||||
      <TelemetryModal serialNumber={serialNumber} modalProps={telemetryModalProps} />
 | 
					      <TelemetryModal serialNumber={serialNumber} modalProps={telemetryModalProps} />
 | 
				
			||||||
      <RebootModal serialNumber={serialNumber} modalProps={rebootModalProps} />
 | 
					      <RebootModal serialNumber={serialNumber} modalProps={rebootModalProps} />
 | 
				
			||||||
      <ReEnrollModal serialNumber={serialNumber} modalProps={reEnrollModalProps} />
 | 
					 | 
				
			||||||
      {scriptModal.modal}
 | 
					      {scriptModal.modal}
 | 
				
			||||||
      <Box mt={isCompact ? '0px' : '68px'}>
 | 
					      <Box mt={isCompact ? '0px' : '68px'}>
 | 
				
			||||||
        <Masonry
 | 
					        <Masonry
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user