Генерируем xlsx файл, и отправляем его на почту с помощью cordova-plugin-email-composer без промежуточного сохранения в файловою систему устройства. Проверялось под IOS.
/**
* @class Overrides.exporter.File
* @author Dmitry Kazarin <dikazarin@gmail.com>
*
* Отправляет сгенерированный xlsx на почту
* Использует функционал cordova-plugin-email-composer
*
**/
Ext.define('Overrides.exporter.File', {
override: 'Ext.exporter.File',
requiresPopup: function () {
// Мы не показываем popup (новое окно) для скачивания файла
// Мы всегда используем blob
return false;
},
}, function (File) {
File.saveBlobAs = Ext.Function.createInterceptor(File.saveBlobAs, function (textContent, fileName, charset, mimeType) {
// Если мы запускаемся под cordova
if (!!window.cordova) {
cordova.plugins.email.hasAccount(
function (isAvailable) {
if (isAvailable) {
let uint8 = new Uint8Array(textContent.length),
len = uint8.length,
i;
for (i = 0; i < len; i++) {
uint8[i] = textContent.charCodeAt(i);
}
cordova.plugins.email.open({
subject: fileName.slice(0, -5),
attachments: [
`base64:${fileName}//${btoa(String.fromCharCode.apply(null, uint8))}`
]
});
} else {
Ext.toast('No configured mail client');
}
}
);
return false;
} else {
// Пошли в оригинальную функцию
return true;
}
});
});