2017-02-03 09:24:47 +00:00
|
|
|
'use strict';
|
2017-01-30 19:02:50 +00:00
|
|
|
|
2017-02-03 09:24:47 +00:00
|
|
|
var STYLISH_DUMP_FILE_EXT = '.txt';
|
|
|
|
var STYLISH_DEFAULT_SAVE_NAME = 'stylus-mm-dd-yyy' + STYLISH_DUMP_FILE_EXT;
|
2017-01-30 19:02:50 +00:00
|
|
|
|
2017-02-03 09:24:47 +00:00
|
|
|
function saveAsFile (text, fileName, dialog) {
|
|
|
|
fileName = fileName || STYLISH_DEFAULT_SAVE_NAME;
|
|
|
|
dialog = typeof dialog === 'boolean' ? dialog : true;
|
|
|
|
|
|
|
|
return new Promise(function (resolve) {
|
|
|
|
var fileContent = 'data:text/plain;charset=utf-8,' + encodeURIComponent(text);
|
|
|
|
chrome.downloads.download({
|
|
|
|
filename: fileName,
|
|
|
|
saveAs: true,
|
|
|
|
url: fileContent
|
|
|
|
}, resolve);
|
|
|
|
});
|
2017-01-30 19:02:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* !!works only when page has representation - backgound page won't work
|
|
|
|
*
|
|
|
|
* opens open file dialog,
|
|
|
|
* gets selected file,
|
|
|
|
* gets it's path,
|
|
|
|
* gets content of it by ajax
|
|
|
|
*/
|
2017-02-03 09:24:47 +00:00
|
|
|
function loadFromFile (formatToFilter) {
|
|
|
|
return new Promise(function (resolve) {
|
|
|
|
var fileInput = document.createElement('input');
|
|
|
|
fileInput.style = 'display: none;';
|
|
|
|
fileInput.type = 'file';
|
|
|
|
fileInput.accept = formatToFilter || STYLISH_DUMP_FILE_EXT;
|
|
|
|
fileInput.acceptCharset = 'utf-8';
|
2017-01-30 19:02:50 +00:00
|
|
|
|
2017-02-03 09:24:47 +00:00
|
|
|
document.body.appendChild(fileInput);
|
|
|
|
fileInput.initialValue = fileInput.value;
|
|
|
|
function changeHandler() {
|
|
|
|
if (fileInput.value !== fileInput.initialValue) {
|
|
|
|
var fReader = new FileReader();
|
|
|
|
fReader.onloadend = function (event) {
|
|
|
|
fileInput.removeEventListener('change', changeHandler);
|
|
|
|
fileInput.remove();
|
|
|
|
resolve(event.target.result);
|
|
|
|
};
|
|
|
|
fReader.readAsText(fileInput.files[0], 'utf-8');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
fileInput.addEventListener('change', changeHandler);
|
|
|
|
fileInput.click();
|
|
|
|
});
|
2017-02-03 09:17:26 +00:00
|
|
|
}
|