Отправка экспортируемых таблиц для cordova приложений (iOS) на почту

Генерируем 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;
        }
    });

});

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *