fix(file): fix writeFile method

addresses #464 #552 #666
This commit is contained in:
Ibby 2016-10-11 20:10:47 -04:00
parent c2d4f1c0da
commit 842a80d493

View File

@ -674,22 +674,30 @@ export class File {
if (replaceOrOptions) { if (replaceOrOptions) {
if (typeof(replaceOrOptions) === 'boolean') { if (typeof(replaceOrOptions) === 'boolean') {
opts.replace = <boolean>replaceOrOptions; opts.replace = <boolean>replaceOrOptions;
} else {
opts.replace = (<WriteOptions>replaceOrOptions).replace
} }
} }
let getFileOpts: Flags = {
create: true,
exclusive: opts.replace
};
return File.resolveDirectoryUrl(path) return File.resolveDirectoryUrl(path)
.then((fse) => { .then((fse) => {
return File.getFile(fse, fileName, opts); return File.getFile(fse, fileName, getFileOpts);
}) })
.then((fe) => { .then((fe) => {
return File.createWriter(fe); return File.createWriter(fe);
}) })
.then((writer) => { .then((writer) => {
if (opts.append) { if (opts.append) {
writer.seek(writer.length); writer.seek(writer.length);
} }
if (opts.hasOwnProperty('truncate')) { if (opts.truncate) {
writer.truncate(opts.truncate); writer.truncate(opts.truncate);
} }
@ -1018,9 +1026,7 @@ export class File {
private static getFile(fse: DirectoryEntry, fn: string, flags: Flags): Promise<FileEntry> { private static getFile(fse: DirectoryEntry, fn: string, flags: Flags): Promise<FileEntry> {
return new Promise<FileEntry>((resolve, reject) => { return new Promise<FileEntry>((resolve, reject) => {
try { try {
fse.getFile(fn, flags, (fe) => { fse.getFile(fn, flags, resolve, (err) => {
resolve(fe);
}, (err) => {
File.fillErrorMessage(err); File.fillErrorMessage(err);
reject(err); reject(err);
}); });
@ -1123,12 +1129,12 @@ export class File {
return this.writeFileInChunks(writer, gu); return this.writeFileInChunks(writer, gu);
} }
return new Promise<void>((resolve, reject) => { return new Promise<any>((resolve, reject) => {
writer.onwriteend = (evt) => { writer.onwriteend = (evt) => {
if (writer.error) { if (writer.error) {
reject(writer.error); reject(writer.error);
} else { } else {
resolve(); resolve(evt);
} }
}; };
writer.write(gu); writer.write(gu);