fix file.create: don't create an .empty folder on devices with new API support

feat docs: add Frequently Asked Questions section
This commit is contained in:
Mahdi Dibaiee 2015-09-14 12:42:50 +04:30
parent 8408fd5319
commit 66504df4cb
6 changed files with 27 additions and 3 deletions

View File

@ -14,6 +14,20 @@ Firefox OS 2.2 and up are supported. Sadly 2.0 and 1.3 miss a lot of ES6 functio
Sergio Muriel [@tfeserver](https://twitter.com/tfeserver) for testing application Sergio Muriel [@tfeserver](https://twitter.com/tfeserver) for testing application
Mohammad Jahani [@mamal72](https://twitter.com/mamal72) for ideas, and helping in designing the [webpage](http://dibaiee.ir/Hawk) Mohammad Jahani [@mamal72](https://twitter.com/mamal72) for ideas, and helping in designing the [webpage](http://dibaiee.ir/Hawk)
# Frequently Asked Questions
**Q: Why does Hawk create an `.empty` file inside new folders I create?**
This happens on Firefox OS devices below version 3, and that's because the API doesn't allow
listing empty folders, in order to show you the folder, Hawk has to fake the folder to have a child.
**Q: Why is Hawk slow?**
Hawk is much faster on Firefox OS 3.0 and up, and that's because the way old Device Storage API works,
it's slow by nature. Nothing we can do about it, sadly.
# Features # Features
Version 1.0 Version 1.0

View File

@ -30057,7 +30057,9 @@ var createDirectory = _asyncToGenerator(function* () {
var parent = yield root(); var parent = yield root();
return parent.createDirectory.apply(parent, args).then(function () { return parent.createDirectory.apply(parent, args).then(function () {
if (window.needsShim) {
return createFile(args[0] + '/.empty'); return createFile(args[0] + '/.empty');
}
}); });
}); });

View File

@ -21,8 +21,11 @@ function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPr
}; };
}(Element.prototype)); }(Element.prototype));
window.needsShim = false;
function shimDirectory(directory) { function shimDirectory(directory) {
if (!directory.getFilesAndDirectories) { if (!directory.getFilesAndDirectories) {
window.needsShim = true;
directory.toString = function() { return '[object Directory]' }; directory.toString = function() { return '[object Directory]' };
directory.getFilesAndDirectories = function getFilesAndDirectories() { directory.getFilesAndDirectories = function getFilesAndDirectories() {
var current = (this.path || '') + this.name; var current = (this.path || '') + this.name;

Binary file not shown.

View File

@ -84,7 +84,9 @@ export async function createDirectory(...args) {
let parent = await root(); let parent = await root();
return parent.createDirectory(...args).then(() => { return parent.createDirectory(...args).then(() => {
if (window.needsShim) {
return createFile(args[0] + '/.empty'); return createFile(args[0] + '/.empty');
}
}); });
} }

View File

@ -21,8 +21,11 @@ function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPr
}; };
}(Element.prototype)); }(Element.prototype));
window.needsShim = false;
function shimDirectory(directory) { function shimDirectory(directory) {
if (!directory.getFilesAndDirectories) { if (!directory.getFilesAndDirectories) {
window.needsShim = true;
directory.toString = function() { return '[object Directory]' }; directory.toString = function() { return '[object Directory]' };
directory.getFilesAndDirectories = function getFilesAndDirectories() { directory.getFilesAndDirectories = function getFilesAndDirectories() {
var current = (this.path || '') + this.name; var current = (this.path || '') + this.name;