onionr/static-data/default-plugins/pms/web/sendmail.js

96 lines
3.0 KiB
JavaScript
Executable File

/*
Onionr - Private P2P Communication
This file handles the mail interface
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
var sendbutton = document.getElementById('sendMail')
messageContent = document.getElementById('draftText')
to = document.getElementById('draftID')
subject = document.getElementById('draftSubject')
friendPicker = document.getElementById('friendSelect')
function utf8Length(s) {
var size = encodeURIComponent(s).match(/%[89ABab]/g);
return s.length + (size ? size.length : 0);
}
function padString(string_data, round_nearest_byte_exponent = 3){
if (utf8Length(string_data) === 0){
string_data += '0'
}
let round_size = 10 ** round_nearest_byte_exponent
while (utf8Length(string_data) % round_size > 0){
string_data += '0'
}
return string_data
}
function sendMail(toData, message, subject){
let meta = {'subject': subject}
if (document.getElementById('messagePaddingSetting').checked){
message = padString(message)
}
if (document.getElementById('mailSignatureSetting').value !== false){
message += "\n"
message += document.getElementById('mailSignatureSetting').value
}
postData = {'message': message, 'to': toData, 'type': 'pm', 'encrypt': true, 'meta': JSON.stringify(meta)}
postData.forward = document.getElementById('forwardSecrecySetting').checked
postData = JSON.stringify(postData)
sendForm.style.display = 'none'
fetch('/insertblock', {
method: 'POST',
body: postData,
headers: {
"content-type": "application/json",
"token": webpass
}})
.then((resp) => resp.text()) // Transform the data into text
.then(function(data) {
sendForm.style.display = 'block'
PNotify.success({
text: 'Queued for sending!',
delay: 3500,
mouseReset: false
})
to.value = subject.value = messageContent.value = ""
friendPicker.value = ""
subject.value = ""
})
}
var friendPicker = document.getElementById('friendSelect')
friendPicker.onchange = function(){
to.value = friendPicker.value
}
sendForm.onsubmit = function(){
if (! to.value.includes("-") && to.value.length !== 56 && to.value.length !== 52){
PNotify.error({
text: 'User ID is not valid'
})
}
else{
sendMail(to.value, messageContent.value, subject.value)
}
return false
}