mirror of
https://github.com/danielsogl/awesome-cordova-plugins.git
synced 2025-01-20 01:22:52 +08:00
Merge pull request #768 from stalniy/fix/file.writeFile
refactor(file): add return value to be file entry in writeFile
This commit is contained in:
commit
40a7b138e2
@ -171,6 +171,7 @@ export interface Flags {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface WriteOptions {
|
export interface WriteOptions {
|
||||||
|
create?: boolean;
|
||||||
replace?: boolean;
|
replace?: boolean;
|
||||||
append?: boolean;
|
append?: boolean;
|
||||||
truncate?: number; // if present, number of bytes to truncate file to before writing
|
truncate?: number; // if present, number of bytes to truncate file to before writing
|
||||||
@ -667,19 +668,19 @@ export class File {
|
|||||||
* @param {string} fileName path relative to base path
|
* @param {string} fileName path relative to base path
|
||||||
* @param {string | Blob} text content or blob to write
|
* @param {string | Blob} text content or blob to write
|
||||||
* @param {WriteOptions} options replace file if set to true. See WriteOptions for more information.
|
* @param {WriteOptions} options replace file if set to true. See WriteOptions for more information.
|
||||||
* @returns {Promise<void>} Returns a Promise that resolves or rejects with an error.
|
* @returns {Promise<FileEntry>} Returns a Promise that resolves to updated file entry or rejects with an error.
|
||||||
*/
|
*/
|
||||||
static writeFile(path: string, fileName: string,
|
static writeFile(path: string, fileName: string,
|
||||||
text: string | Blob, options: WriteOptions): Promise<void> {
|
text: string | Blob, options: WriteOptions = {}): Promise<void> {
|
||||||
if ((/^\//.test(fileName))) {
|
if ((/^\//.test(fileName))) {
|
||||||
let err = new FileError(5);
|
const err = new FileError(5);
|
||||||
err.message = 'file-name cannot start with \/';
|
err.message = 'file-name cannot start with \/';
|
||||||
return Promise.reject(err);
|
return Promise.reject(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
let getFileOpts: Flags = {
|
const getFileOpts: Flags = {
|
||||||
create: true,
|
create: !('create' in options) || options.create,
|
||||||
exclusive: options.replace
|
exclusive: !!options.replace
|
||||||
};
|
};
|
||||||
|
|
||||||
return File.resolveDirectoryUrl(path)
|
return File.resolveDirectoryUrl(path)
|
||||||
@ -687,10 +688,21 @@ export class File {
|
|||||||
return File.getFile(fse, fileName, getFileOpts);
|
return File.getFile(fse, fileName, getFileOpts);
|
||||||
})
|
})
|
||||||
.then((fe) => {
|
.then((fe) => {
|
||||||
return File.createWriter(fe);
|
return File.writeFileEntry(fe, text, options);
|
||||||
})
|
})
|
||||||
.then((writer) => {
|
}
|
||||||
|
|
||||||
|
/** Write content to FileEntry.
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @param {FileEntry} fe file entry object
|
||||||
|
* @param {string | Blob} text content or blob to write
|
||||||
|
* @param {WriteOptions} options replace file if set to true. See WriteOptions for more information.
|
||||||
|
* @returns {Promise<FileEntry>} Returns a Promise that resolves to updated file entry or rejects with an error.
|
||||||
|
*/
|
||||||
|
private static writeFileEntry(fe: FileEntry, text: string | Blob, options : WriteOptions) {
|
||||||
|
return File.createWriter(fe)
|
||||||
|
.then((writer) => {
|
||||||
if (options.append) {
|
if (options.append) {
|
||||||
writer.seek(writer.length);
|
writer.seek(writer.length);
|
||||||
}
|
}
|
||||||
@ -700,9 +712,11 @@ export class File {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return File.write(writer, text);
|
return File.write(writer, text);
|
||||||
});
|
})
|
||||||
|
.then(() => fe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Write to an existing file.
|
/** Write to an existing file.
|
||||||
*
|
*
|
||||||
* @param {string} path Base FileSystem. Please refer to the iOS and Android filesystems above
|
* @param {string} path Base FileSystem. Please refer to the iOS and Android filesystems above
|
||||||
@ -711,22 +725,7 @@ export class File {
|
|||||||
* @returns {Promise<void>} Returns a Promise that resolves or rejects with an error.
|
* @returns {Promise<void>} Returns a Promise that resolves or rejects with an error.
|
||||||
*/
|
*/
|
||||||
static writeExistingFile(path: string, fileName: string, text: string | Blob): Promise<void> {
|
static writeExistingFile(path: string, fileName: string, text: string | Blob): Promise<void> {
|
||||||
if ((/^\//.test(fileName))) {
|
return File.writeFile(path, fileName, text, { create: false })
|
||||||
let err = new FileError(5);
|
|
||||||
err.message = 'file-name cannot start with \/';
|
|
||||||
return Promise.reject(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
return File.resolveDirectoryUrl(path)
|
|
||||||
.then((fse) => {
|
|
||||||
return File.getFile(fse, fileName, {create: false});
|
|
||||||
})
|
|
||||||
.then((fe) => {
|
|
||||||
return File.createWriter(fe);
|
|
||||||
})
|
|
||||||
.then((writer) => {
|
|
||||||
return File.write(writer, text);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user