78 lines
2.5 KiB
JavaScript
78 lines
2.5 KiB
JavaScript
/******/ (() => { // webpackBootstrap
|
|
class JiraSettings {
|
|
constructor() {
|
|
this.form = document.getElementById('settings-form');
|
|
this.notification = document.getElementById('notification');
|
|
this.domainInput = document.getElementById('jira-domain');
|
|
this.emailInput = document.getElementById('jira-email');
|
|
this.tokenInput = document.getElementById('jira-token');
|
|
this.loadSettings();
|
|
this.attachEventListeners();
|
|
}
|
|
attachEventListeners() {
|
|
this.form.addEventListener('submit', e => this.handleSubmit(e));
|
|
}
|
|
async loadSettings() {
|
|
const settings = await chrome.storage.local.get(['jiraDomain', 'jiraEmail', 'jiraToken']);
|
|
if (settings.jiraDomain) {
|
|
this.domainInput.value = settings.jiraDomain;
|
|
}
|
|
if (settings.jiraEmail) {
|
|
this.emailInput.value = settings.jiraEmail;
|
|
}
|
|
if (settings.jiraToken) {
|
|
this.tokenInput.value = settings.jiraToken;
|
|
}
|
|
}
|
|
async handleSubmit(event) {
|
|
event.preventDefault();
|
|
const domain = this.domainInput.value.trim();
|
|
const email = this.emailInput.value.trim();
|
|
const token = this.tokenInput.value.trim();
|
|
try {
|
|
// Validate the credentials
|
|
const isValid = await this.validateJiraCredentials(domain, email, token);
|
|
if (isValid) {
|
|
// Save settings
|
|
await chrome.storage.local.set({
|
|
jiraDomain: domain,
|
|
jiraEmail: email,
|
|
jiraToken: token
|
|
});
|
|
this.showNotification('Settings saved successfully!', 'success');
|
|
} else {
|
|
this.showNotification('Invalid Jira credentials. Please check and try again.', 'error');
|
|
}
|
|
} catch (error) {
|
|
console.error('Error saving settings:', error);
|
|
this.showNotification('Error saving settings. Please try again.', 'error');
|
|
}
|
|
}
|
|
async validateJiraCredentials(domain, email, token) {
|
|
try {
|
|
const response = await fetch(`https://${domain}/rest/api/3/myself`, {
|
|
headers: {
|
|
'Authorization': `Basic ${btoa(`${email}:${token}`)}`,
|
|
'Accept': 'application/json'
|
|
}
|
|
});
|
|
return response.ok;
|
|
} catch (error) {
|
|
console.error('Error validating Jira credentials:', error);
|
|
return false;
|
|
}
|
|
}
|
|
showNotification(message, type) {
|
|
this.notification.textContent = message;
|
|
this.notification.className = `notification ${type}`;
|
|
this.notification.style.display = 'block';
|
|
setTimeout(() => {
|
|
this.notification.style.display = 'none';
|
|
}, 5000);
|
|
}
|
|
}
|
|
|
|
// Initialize settings
|
|
new JiraSettings();
|
|
/******/ })()
|
|
; |