UNPKG

nativescript-firebase-updated-new

Version:
231 lines 8.62 kB
import { firebase } from "../firebase-common"; import { ListResult as ListResultBase } from "./storage-common"; function getReference(nativeReference, listOptions) { return { ios: nativeReference, bucket: nativeReference.bucket, name: nativeReference.name, fullPath: nativeReference.fullPath, listAll: () => listAll({ remoteFullPath: nativeReference.fullPath, bucket: listOptions.bucket }) }; } function getReferences(nativeReferences, listOptions) { const references = []; for (let i = 0, l = nativeReferences.count; i < l; i++) { const ref = nativeReferences.objectAtIndex(i); references.push(getReference(ref, listOptions)); } return references; } class ListResult extends ListResultBase { constructor(listResult, listOptions) { super(getReferences(listResult.items, listOptions), getReferences(listResult.prefixes, listOptions), listResult.pageToken); this.listResult = listResult; this.listOptions = listOptions; this.ios = listResult; delete this.listResult; delete this.listOptions; } } function getStorageRef(reject, arg) { if (typeof (FIRStorage) === "undefined") { reject("Uncomment Storage in the plugin's Podfile first"); return undefined; } if (!arg.remoteFullPath) { reject("remoteFullPath is mandatory"); return undefined; } if (arg.bucket) { return FIRStorage.storage().referenceForURL(arg.bucket); } else if (firebase.storageBucket) { return firebase.storageBucket; } else { return FIRStorage.storage().reference(); } } export function uploadFile(arg) { return new Promise((resolve, reject) => { try { const onCompletion = (metadata, error) => { if (error) { reject(error.localizedDescription); } else { resolve({ name: metadata.name, contentType: metadata.contentType, created: metadata.timeCreated, updated: metadata.updated, bucket: metadata.bucket, size: metadata.size }); } }; const storageRef = getStorageRef(reject, arg); if (!storageRef) { return; } const fIRStorageReference = storageRef.child(arg.remoteFullPath); let fIRStorageUploadTask = null; let metadata = null; if (arg.metadata) { metadata = FIRStorageMetadata.new(); metadata.cacheControl = arg.metadata.cacheControl; metadata.contentDisposition = arg.metadata.contentDisposition; metadata.contentEncoding = arg.metadata.contentEncoding; metadata.contentLanguage = arg.metadata.contentLanguage; metadata.contentType = arg.metadata.contentType; if (arg.metadata.customMetadata) { const customMetadata = NSMutableDictionary.new(); for (let p in arg.metadata.customMetadata) { customMetadata.setObjectForKey(arg.metadata.customMetadata[p], p); } metadata.customMetadata = customMetadata; } } if (arg.localFile) { if (typeof (arg.localFile) !== "object") { reject("localFile argument must be a File object; use file-system module to create one"); return; } fIRStorageUploadTask = fIRStorageReference.putFileMetadataCompletion(NSURL.fileURLWithPath(arg.localFile.path), metadata, onCompletion); } else if (arg.localFullPath) { fIRStorageUploadTask = fIRStorageReference.putFileMetadataCompletion(NSURL.fileURLWithPath(arg.localFullPath), metadata, onCompletion); } else { reject("One of localFile or localFullPath is required"); return; } if (fIRStorageUploadTask !== null) { fIRStorageUploadTask.observeStatusHandler(2, snapshot => { if (!snapshot.error && typeof (arg.onProgress) === "function") { arg.onProgress({ fractionCompleted: snapshot.progress.fractionCompleted, percentageCompleted: Math.round(snapshot.progress.fractionCompleted * 100) }); } }); } } catch (ex) { console.log("Error in firebase.uploadFile: " + ex); reject(ex); } }); } export function downloadFile(arg) { return new Promise((resolve, reject) => { try { const onCompletion = (url, error) => { if (error) { reject(error.localizedDescription); } else { resolve(url.absoluteString); } }; const storageRef = getStorageRef(reject, arg); if (!storageRef) { return; } const fIRStorageReference = storageRef.child(arg.remoteFullPath); let localFilePath; if (arg.localFile) { if (typeof (arg.localFile) !== "object") { reject("localFile argument must be a File object; use file-system module to create one"); return; } localFilePath = arg.localFile.path; } else if (arg.localFullPath) { localFilePath = arg.localFullPath; } else { reject("One of localFile or localFullPath is required"); return; } const localFileUrl = NSURL.fileURLWithPath(localFilePath); fIRStorageReference.writeToFileCompletion(localFileUrl, onCompletion); } catch (ex) { console.log("Error in firebase.downloadFile: " + ex); reject(ex); } }); } export function getDownloadUrl(arg) { return new Promise((resolve, reject) => { try { const onCompletion = (url, error) => { if (error) { reject(error.localizedDescription); } else { resolve(url.absoluteString); } }; const storageRef = getStorageRef(reject, arg); if (!storageRef) { return; } const fIRStorageReference = storageRef.child(arg.remoteFullPath); fIRStorageReference.downloadURLWithCompletion(onCompletion); } catch (ex) { console.log("Error in firebase.getDownloadUrl: " + ex); reject(ex); } }); } export function deleteFile(arg) { return new Promise((resolve, reject) => { try { const onCompletion = error => { if (error) { reject(error.localizedDescription); } else { resolve(); } }; const storageRef = getStorageRef(reject, arg); if (!storageRef) { return; } const fIRStorageFileRef = storageRef.child(arg.remoteFullPath); fIRStorageFileRef.deleteWithCompletion(onCompletion); } catch (ex) { console.log("Error in firebase.deleteFile: " + ex); reject(ex); } }); } export function listAll(listOptions) { return new Promise((resolve, reject) => { try { const storageRef = getStorageRef(reject, listOptions); if (!storageRef) { return; } const fIRStorageReference = storageRef.child(listOptions.remoteFullPath); fIRStorageReference.listAllWithCompletion((result, error) => { if (error) { reject(error.localizedDescription); } else { resolve(new ListResult(result, listOptions)); } }); } catch (ex) { console.log("Error in firebase.listAll: " + ex); reject(ex); } }); } //# sourceMappingURL=storage.ios.js.map