1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-14 07:02:34 +01:00
invoiceninja/resources/js/setup/setup.js

147 lines
5.1 KiB
JavaScript
Raw Normal View History

/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
2020-07-02 13:58:39 +02:00
import Axios from 'axios';
class Setup {
constructor() {
2020-07-02 13:58:39 +02:00
this.checkDbButton = document.getElementById('test-db-connection');
this.checkDbAlert = document.getElementById('database-response');
this.checkSmtpButton = document.getElementById('test-smtp-connection');
this.checkSmtpAlert = document.getElementById('smtp-response');
this.checkPdfButton = document.getElementById('test-pdf');
this.checkPdfAlert = document.getElementById('test-pdf-response');
}
handleDatabaseCheck() {
let data = {
2020-12-08 14:21:00 +01:00
db_host: document.querySelector('input[name="db_host"]').value,
2021-01-04 13:36:47 +01:00
db_port: document.querySelector('input[name="db_port"]').value,
db_database: document.querySelector('input[name="db_database"]')
.value,
db_username: document.querySelector('input[name="db_username"]')
.value,
db_password: document.querySelector('input[name="db_password"]')
.value,
2020-07-02 13:58:39 +02:00
};
2021-01-04 13:36:47 +01:00
this.checkDbButton.disabled = true;
2020-07-02 13:58:39 +02:00
Axios.post('/setup/check_db', data)
.then((response) =>
this.handleSuccess(this.checkDbAlert, 'mail-wrapper')
)
2020-12-03 14:10:40 +01:00
.catch((e) =>
this.handleFailure(this.checkDbAlert, e.response.data.message)
2021-01-04 13:36:47 +01:00
).finally(() => this.checkDbButton.disabled = false);
}
handleSmtpCheck() {
let data = {
mail_driver: document.querySelector('select[name="mail_driver"]')
.value,
2020-12-08 14:29:15 +01:00
mail_name: document.querySelector('input[name="mail_name"]').value,
mail_address: document.querySelector('input[name="mail_address"]')
2020-07-02 13:58:39 +02:00
.value,
2020-12-08 14:29:15 +01:00
mail_username: document.querySelector('input[name="mail_username"]')
2020-07-02 13:58:39 +02:00
.value,
2020-12-08 14:29:15 +01:00
mail_host: document.querySelector('input[name="mail_host"]').value,
mail_port: document.querySelector('input[name="mail_port"]').value,
2020-07-02 13:58:39 +02:00
encryption: document.querySelector('select[name="encryption"]')
.value,
2020-12-08 14:29:15 +01:00
mail_password: document.querySelector('input[name="mail_password"]')
2020-07-02 13:58:39 +02:00
.value,
};
2020-12-03 14:10:40 +01:00
this.checkSmtpButton.disabled = true;
if (data.mail_driver === 'log') {
this.handleSuccess(this.checkSmtpAlert, 'account-wrapper');
this.handleSuccess(this.checkSmtpAlert, 'submit-wrapper');
return (this.checkSmtpButton.disabled = false);
}
2020-07-02 13:58:39 +02:00
Axios.post('/setup/check_mail', data)
.then((response) => {
this.handleSuccess(this.checkSmtpAlert, 'account-wrapper');
this.handleSuccess(this.checkSmtpAlert, 'submit-wrapper');
})
2020-12-03 14:10:40 +01:00
.catch((e) =>
this.handleFailure(this.checkSmtpAlert, e.response.data.message)
)
.finally(() => (this.checkSmtpButton.disabled = false));
2020-07-02 13:58:39 +02:00
}
handleTestPdfCheck() {
this.checkPdfButton.disabled = true;
2020-07-02 13:58:39 +02:00
Axios.post('/setup/check_pdf', {})
.then((response) => {
2020-10-27 14:02:36 +01:00
try {
let win = window.open(response.data.url, '_blank');
win.focus();
return this.handleSuccess(
this.checkPdfAlert,
'database-wrapper'
);
2020-10-27 14:02:36 +01:00
} catch (error) {
this.handleSuccess(this.checkPdfAlert, 'database-wrapper');
2020-10-27 14:02:36 +01:00
this.checkPdfAlert.textContent = `Success! You can preview test PDF here: ${response.data.url}`;
}
2020-07-02 13:58:39 +02:00
})
2020-10-27 14:02:36 +01:00
.catch((error) => {
console.log(error);
2020-12-03 14:10:40 +01:00
this.handleFailure(this.checkPdfAlert);
})
.finally(() => (this.checkPdfButton.disabled = false));
}
handleSuccess(element, nextStep = null) {
2020-07-02 13:58:39 +02:00
element.classList.remove('alert-failure');
element.innerText = 'Success!';
element.classList.add('alert-success');
if (nextStep) {
document.getElementById(nextStep).classList.remove('hidden');
document
.getElementById(nextStep)
2021-01-04 13:36:47 +01:00
.scrollIntoView({behavior: 'smooth', block: 'center'});
}
}
handleFailure(element, message = null) {
2020-07-02 13:58:39 +02:00
element.classList.remove('alert-success');
2020-12-03 14:10:40 +01:00
element.innerText = message
? message
: "Oops, looks like something isn't correct!";
2020-07-02 13:58:39 +02:00
element.classList.add('alert-failure');
}
handle() {
2020-07-02 13:58:39 +02:00
this.checkDbButton.addEventListener('click', () =>
this.handleDatabaseCheck()
);
2020-07-02 13:58:39 +02:00
this.checkSmtpButton.addEventListener('click', () =>
this.handleSmtpCheck()
);
2020-07-02 13:58:39 +02:00
this.checkPdfButton.addEventListener('click', () =>
this.handleTestPdfCheck()
);
}
}
new Setup().handle();