mirror of
https://github.com/czhu12/canine.git
synced 2025-12-31 00:10:14 -06:00
65 lines
1.8 KiB
JavaScript
65 lines
1.8 KiB
JavaScript
import { Controller } from "@hotwired/stimulus"
|
|
import { PortainerChecker } from "../../utils/portainer"
|
|
|
|
export default class extends Controller {
|
|
static targets = [
|
|
"urlInput",
|
|
"accessTokenInput",
|
|
"accessTokenHelp",
|
|
"verifyUrlSuccess",
|
|
"verifyUrlError",
|
|
"verifyUrlLoading",
|
|
"errorMessage",
|
|
]
|
|
|
|
async verifyUrl() {
|
|
const url = this.urlInputTarget.value.trim()
|
|
const accessToken = this.accessTokenInputTarget.value.trim()
|
|
if (url) {
|
|
this.accessTokenHelpTarget.querySelector('a').href = `${url.replace(/\/$/, '')}/#!/account`
|
|
this.accessTokenHelpTarget.classList.remove('hidden')
|
|
} else {
|
|
this.accessTokenHelpTarget.classList.add('hidden')
|
|
}
|
|
|
|
if (!url || !accessToken) {
|
|
return
|
|
}
|
|
|
|
this.hideAllStatuses()
|
|
this.showLoading()
|
|
|
|
const portainerChecker = new PortainerChecker()
|
|
const result = await portainerChecker.verifyPortainerUrl(url, accessToken)
|
|
if (result === PortainerChecker.STATUS_UNAUTHORIZED) {
|
|
this.showError('The instance is reachable but the access token is invalid.')
|
|
} else if (result === PortainerChecker.STATUS_OK) {
|
|
this.showSuccess()
|
|
} else {
|
|
this.showError('Unable to connect to the instance. Please check the URL.')
|
|
}
|
|
}
|
|
|
|
showLoading() {
|
|
this.hideAllStatuses()
|
|
this.verifyUrlLoadingTarget.classList.remove('hidden')
|
|
}
|
|
|
|
showSuccess() {
|
|
this.hideAllStatuses()
|
|
this.verifyUrlSuccessTarget.classList.remove('hidden')
|
|
}
|
|
|
|
showError(message) {
|
|
this.hideAllStatuses()
|
|
this.errorMessageTarget.textContent = message
|
|
this.verifyUrlErrorTarget.classList.remove('hidden')
|
|
}
|
|
|
|
hideAllStatuses() {
|
|
this.verifyUrlSuccessTarget.classList.add('hidden')
|
|
this.verifyUrlErrorTarget.classList.add('hidden')
|
|
this.verifyUrlLoadingTarget.classList.add('hidden')
|
|
}
|
|
}
|