fipamo/themes/dash/src/com/actions/SettingsActions.js

92 lines
No EOL
3.3 KiB
JavaScript

import DataUtils,
{
REQUEST_TYPE_GET,
REQUEST_TYPE_PUT,
REQUEST_TYPE_POST,
REQUEST_TYPE_DELETE,
CONTENT_TYPE_JSON,
CONTENT_TYPE_FORM
}
from '../../../../../brain//tools/utilities/DataUtils';
import StringUtils from '../../../../../brain//tools/utilities/StringUtils';
import DateUtils from '../../../../../brain/tools/utilities/DateUtils';
import * as DataEvent from '../../../../../brain/tools/events/DataEvent';
export default class SettingsActions
{
//--------------------------
// constructor
//--------------------------
constructor()
{
this.dataUtils = new DataUtils();
this.dateUtils = new DateUtils();
}
//--------------------------
// methods
//--------------------------
save()
{
let self = this;
let handle = document.getElementById('settings-handle').value;
let email = document.getElementById('settings-email').value;
let url = document.getElementById('settings-url').value;
let title = document.getElementById('settings-title').value;
let desc = document.getElementById('settings-desc').innerHTML;
let privacy = document.getElementById('privacy-toggle').getAttribute('data-private');
let background = document.getElementById('background').src;
let selected = "";
let selects = document.querySelectorAll('.theme-select');
let smtpDomain = document.getElementById('smtp-domain').value;
let smtpEmail = document.getElementById('smtp-email').value;
let smtpPass = document.getElementById('smtp-pass').value;
let mgDomain = document.getElementById('mg-domain').value;
let mgKey = document.getElementById('mg-key').value;
let mailActive = "";
let mailOptions = document.querySelectorAll('.mail-option');
for (var i = 0, length = selects.length; i < length; i++)
{
if (selects[i].getAttribute('data-enabled') == "true") selected = selects[i].id;
}
for (var i = 0, length = mailOptions.length; i < length; i++)
{
if (mailOptions[i].getAttribute('data-enabled') == "true") mailActive = mailOptions[i].id;
}
let settingsData = {
handle: handle,
email: email,
url: url,
title: title,
descriptions: desc,
background: background,
private: privacy,
theme: selected,
mailSettings:{
activeProtocol: mailActive,
smtp:{
domain: smtpDomain,
email: smtpEmail,
password:smtpPass
},
mailgun:{
domain: mgDomain,
key: mgKey
}
}
}
return new Promise(function(resolve, reject)
{
self.dataUtils.request('/api/settings/sync', DataEvent.SETTINGS_UPDATED, REQUEST_TYPE_POST, CONTENT_TYPE_JSON, settingsData).then((response) =>
{
//console.log("RESPONSE", response)
resolve(response)
}).catch((err) =>
{
reject(err);
})
})
}
//--------------------------
// event handlers
//--------------------------
}