mirror of
https://github.com/chinchang/web-maker.git
synced 2025-07-10 16:46:28 +02:00
move writeFile to utils
This commit is contained in:
@ -2,7 +2,7 @@ import { h, Component } from 'preact';
|
|||||||
import UserCodeMirror from './UserCodeMirror.jsx';
|
import UserCodeMirror from './UserCodeMirror.jsx';
|
||||||
import { computeHtml, computeCss, computeJs } from '../computes';
|
import { computeHtml, computeCss, computeJs } from '../computes';
|
||||||
import { HtmlModes, CssModes, JsModes } from '../codeModes';
|
import { HtmlModes, CssModes, JsModes } from '../codeModes';
|
||||||
import { log } from '../utils';
|
import { log, writeFile } from '../utils';
|
||||||
import { SplitPane } from './SplitPane.jsx';
|
import { SplitPane } from './SplitPane.jsx';
|
||||||
import { trackEvent } from '../analytics';
|
import { trackEvent } from '../analytics';
|
||||||
|
|
||||||
@ -142,59 +142,6 @@ export default class ContentWrap extends Component {
|
|||||||
return contents;
|
return contents;
|
||||||
}
|
}
|
||||||
|
|
||||||
writeFile(name, blob, cb) {
|
|
||||||
var fileWritten = false;
|
|
||||||
function getErrorHandler(type) {
|
|
||||||
return function() {
|
|
||||||
utils.log(arguments);
|
|
||||||
trackEvent('fn', 'error', type);
|
|
||||||
// When there are too many write errors, show a message.
|
|
||||||
writeFile.errorCount = (writeFile.errorCount || 0) + 1;
|
|
||||||
if (writeFile.errorCount === 4) {
|
|
||||||
setTimeout(function() {
|
|
||||||
alert(
|
|
||||||
"Oops! Seems like your preview isn't updating. It's recommended to switch to the web app: https://webmakerapp.com/app/.\n\n If you still want to get the extension working, please try the following steps until it fixes:\n - Refresh Web Maker\n - Restart browser\n - Update browser\n - Reinstall Web Maker (don't forget to export all your creations from saved items pane (click the OPEN button) before reinstalling)\n\nIf nothing works, please tweet out to @webmakerApp."
|
|
||||||
);
|
|
||||||
trackEvent('ui', 'writeFileMessageSeen');
|
|
||||||
}, 1000);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// utils.log('writing file ', name);
|
|
||||||
window.webkitRequestFileSystem(
|
|
||||||
window.TEMPORARY,
|
|
||||||
1024 * 1024 * 5,
|
|
||||||
function(fs) {
|
|
||||||
fs.root.getFile(
|
|
||||||
name,
|
|
||||||
{ create: true },
|
|
||||||
function(fileEntry) {
|
|
||||||
fileEntry.createWriter(fileWriter => {
|
|
||||||
function onWriteComplete() {
|
|
||||||
if (fileWritten) {
|
|
||||||
// utils.log('file written ', name);
|
|
||||||
return cb();
|
|
||||||
}
|
|
||||||
fileWritten = true;
|
|
||||||
// Set the write pointer to starting of file
|
|
||||||
fileWriter.seek(0);
|
|
||||||
fileWriter.write(blob);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
fileWriter.onwriteend = onWriteComplete;
|
|
||||||
// Empty the file contents
|
|
||||||
fileWriter.truncate(0);
|
|
||||||
// utils.log('truncating file ', name);
|
|
||||||
}, getErrorHandler('createWriterFail'));
|
|
||||||
},
|
|
||||||
getErrorHandler('getFileFail')
|
|
||||||
);
|
|
||||||
},
|
|
||||||
getErrorHandler('webkitRequestFileSystemFail')
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
createPreviewFile(html, css, js) {
|
createPreviewFile(html, css, js) {
|
||||||
const shouldInlineJs =
|
const shouldInlineJs =
|
||||||
!window.webkitRequestFileSystem || !window.IS_EXTENSION;
|
!window.webkitRequestFileSystem || !window.IS_EXTENSION;
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
import {
|
||||||
|
trackEvent
|
||||||
|
} from './analytics';
|
||||||
window.DEBUG = document.cookie.indexOf('wmdebug') > -1;
|
window.DEBUG = document.cookie.indexOf('wmdebug') > -1;
|
||||||
|
|
||||||
window.$ = document.querySelector.bind(document);
|
window.$ = document.querySelector.bind(document);
|
||||||
@ -215,16 +218,60 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
window.utils = {
|
export function writeFile(name, blob, cb) {
|
||||||
semverCompare,
|
var fileWritten = false;
|
||||||
generateRandomId,
|
|
||||||
onButtonClick,
|
function getErrorHandler(type) {
|
||||||
addInfiniteLoopProtection,
|
return function () {
|
||||||
getHumanDate,
|
log(arguments);
|
||||||
log,
|
trackEvent('fn', 'error', type);
|
||||||
once,
|
// When there are too many write errors, show a message.
|
||||||
downloadFile
|
writeFile.errorCount = (writeFile.errorCount || 0) + 1;
|
||||||
|
if (writeFile.errorCount === 4) {
|
||||||
|
setTimeout(function () {
|
||||||
|
alert(
|
||||||
|
"Oops! Seems like your preview isn't updating. It's recommended to switch to the web app: https://webmakerapp.com/app/.\n\n If you still want to get the extension working, please try the following steps until it fixes:\n - Refresh Web Maker\n - Restart browser\n - Update browser\n - Reinstall Web Maker (don't forget to export all your creations from saved items pane (click the OPEN button) before reinstalling)\n\nIf nothing works, please tweet out to @webmakerApp."
|
||||||
|
);
|
||||||
|
trackEvent('ui', 'writeFileMessageSeen');
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// utils.log('writing file ', name);
|
||||||
|
window.webkitRequestFileSystem(
|
||||||
|
window.TEMPORARY,
|
||||||
|
1024 * 1024 * 5,
|
||||||
|
function (fs) {
|
||||||
|
fs.root.getFile(
|
||||||
|
name, {
|
||||||
|
create: true
|
||||||
|
},
|
||||||
|
function (fileEntry) {
|
||||||
|
fileEntry.createWriter(fileWriter => {
|
||||||
|
function onWriteComplete() {
|
||||||
|
if (fileWritten) {
|
||||||
|
// utils.log('file written ', name);
|
||||||
|
return cb();
|
||||||
|
}
|
||||||
|
fileWritten = true;
|
||||||
|
// Set the write pointer to starting of file
|
||||||
|
fileWriter.seek(0);
|
||||||
|
fileWriter.write(blob);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
fileWriter.onwriteend = onWriteComplete;
|
||||||
|
// Empty the file contents
|
||||||
|
fileWriter.truncate(0);
|
||||||
|
// utils.log('truncating file ', name);
|
||||||
|
}, getErrorHandler('createWriterFail'));
|
||||||
|
},
|
||||||
|
getErrorHandler('getFileFail')
|
||||||
|
);
|
||||||
|
},
|
||||||
|
getErrorHandler('webkitRequestFileSystemFail')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
window.chrome = window.chrome || {};
|
window.chrome = window.chrome || {};
|
||||||
window.chrome.i18n = {
|
window.chrome.i18n = {
|
||||||
|
Reference in New Issue
Block a user