UNPKG

nativescript-plugin-firebase-ssi

Version:
277 lines (276 loc) 11.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var file_system_1 = require("tns-core-modules/file-system"); var firebase_common_1 = require("../firebase-common"); var storage_common_1 = require("./storage-common"); var gmsTasks = com.google.android.gms ? com.google.android.gms.tasks : undefined; function getReference(nativeReference, listOptions) { return { android: nativeReference, bucket: nativeReference.getBucket(), name: nativeReference.getName(), fullPath: nativeReference.getPath(), listAll: function () { return listAll({ remoteFullPath: nativeReference.getPath(), bucket: listOptions.bucket }); } }; } function getReferences(nativeReferences, listOptions) { var references = []; for (var i = 0; i < nativeReferences.size(); i++) { var ref = nativeReferences.get(i); references.push(getReference(ref, listOptions)); } return references; } var ListResult = (function (_super) { __extends(ListResult, _super); function ListResult(listResult, listOptions) { var _this = _super.call(this, getReferences(listResult.getItems(), listOptions), getReferences(listResult.getPrefixes(), listOptions), listResult.getPageToken()) || this; _this.listResult = listResult; _this.listOptions = listOptions; _this.android = listResult; delete _this.listResult; delete _this.listOptions; return _this; } return ListResult; }(storage_common_1.ListResult)); function getStorageRef(reject, arg) { if (typeof (com.google.firebase.storage) === "undefined") { reject("Uncomment firebase-storage in the plugin's include.gradle first"); return; } if (!arg.remoteFullPath) { reject("remoteFullPath is mandatory"); return; } if (arg.bucket) { return com.google.firebase.storage.FirebaseStorage.getInstance(arg.bucket).getReference(); } else if (firebase_common_1.firebase.storageBucket) { return firebase_common_1.firebase.storageBucket; } else { return com.google.firebase.storage.FirebaseStorage.getInstance().getReference(); } } function uploadFile(arg) { return new Promise(function (resolve, reject) { try { var storageRef = getStorageRef(reject, arg); if (!storageRef) { return; } var storageReference = storageRef.child(arg.remoteFullPath); var onSuccessListener = new gmsTasks.OnSuccessListener({ onSuccess: function (uploadTaskSnapshot) { var metadata = uploadTaskSnapshot.getMetadata(); resolve({ name: metadata.getName(), contentType: metadata.getContentType(), created: new Date(metadata.getCreationTimeMillis()), updated: new Date(metadata.getUpdatedTimeMillis()), bucket: metadata.getBucket(), size: metadata.getSizeBytes(), }); } }); var onFailureListener = new gmsTasks.OnFailureListener({ onFailure: function (exception) { reject("Upload failed. " + exception); } }); var onProgressListener = new com.google.firebase.storage.OnProgressListener({ onProgress: function (snapshot) { if (typeof (arg.onProgress) === "function") { var fractionCompleted = snapshot.getBytesTransferred() / snapshot.getTotalByteCount(); arg.onProgress({ fractionCompleted: fractionCompleted, percentageCompleted: Math.round(fractionCompleted * 100) }); } } }); var metadata = null; if (arg.metadata) { var metadataBuilder = new com.google.firebase.storage.StorageMetadata.Builder(); if (arg.metadata.cacheControl) { metadataBuilder.setCacheControl(arg.metadata.cacheControl); } if (arg.metadata.contentDisposition) { metadataBuilder.setContentDisposition(arg.metadata.contentDisposition); } if (arg.metadata.contentEncoding) { metadataBuilder.setContentEncoding(arg.metadata.contentEncoding); } if (arg.metadata.contentLanguage) { metadataBuilder.setContentLanguage(arg.metadata.contentLanguage); } if (arg.metadata.contentType) { metadataBuilder.setContentType(arg.metadata.contentType); } if (arg.metadata.customMetadata) { for (var p in arg.metadata.customMetadata) { metadataBuilder.setCustomMetadata(p, arg.metadata.customMetadata[p]); } } metadata = metadataBuilder.build(); } if (arg.localFile) { if (typeof (arg.localFile) !== "object") { reject("localFile argument must be a File object; use file-system module to create one"); return; } var localFileUrl = android.net.Uri.fromFile(new java.io.File(arg.localFile.path)); storageReference.putFile(localFileUrl, metadata) .addOnFailureListener(onFailureListener) .addOnSuccessListener(onSuccessListener) .addOnProgressListener(onProgressListener); } else if (arg.localFullPath) { if (!file_system_1.File.exists(arg.localFullPath)) { reject("File does not exist: " + arg.localFullPath); return; } var localFileUrl = android.net.Uri.fromFile(new java.io.File(arg.localFullPath)); storageReference.putFile(localFileUrl, metadata) .addOnFailureListener(onFailureListener) .addOnSuccessListener(onSuccessListener) .addOnProgressListener(onProgressListener); } else { reject("One of localFile or localFullPath is required"); } } catch (ex) { console.log("Error in firebase.uploadFile: " + ex); reject(ex); } }); } exports.uploadFile = uploadFile; function downloadFile(arg) { return new Promise(function (resolve, reject) { try { var storageRef = getStorageRef(reject, arg); if (!storageRef) { return; } var storageReference = storageRef.child(arg.remoteFullPath); var onSuccessListener = new gmsTasks.OnSuccessListener({ onSuccess: function (downloadTaskSnapshot) { return resolve(); } }); var onFailureListener = new gmsTasks.OnFailureListener({ onFailure: function (exception) { return reject("Download failed. " + exception); } }); var localFilePath = void 0; 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; } var file = new java.io.File(localFilePath); storageReference.getFile(file) .addOnSuccessListener(onSuccessListener) .addOnFailureListener(onFailureListener); } catch (ex) { console.log("Error in firebase.downloadFile: " + ex); reject(ex); } }); } exports.downloadFile = downloadFile; function getDownloadUrl(arg) { return new Promise(function (resolve, reject) { try { var storageRef = getStorageRef(reject, arg); if (!storageRef) { return; } var storageReference = storageRef.child(arg.remoteFullPath); var onSuccessListener = new gmsTasks.OnSuccessListener({ onSuccess: function (uri) { resolve(uri.toString()); } }); var onFailureListener = new gmsTasks.OnFailureListener({ onFailure: function (exception) { reject(exception.getMessage()); } }); storageReference.getDownloadUrl() .addOnSuccessListener(onSuccessListener) .addOnFailureListener(onFailureListener); } catch (ex) { console.log("Error in firebase.getDownloadUrl: " + ex); reject(ex); } }); } exports.getDownloadUrl = getDownloadUrl; function deleteFile(arg) { return new Promise(function (resolve, reject) { try { var storageRef = getStorageRef(reject, arg); if (!storageRef) { return; } var storageReference = storageRef.child(arg.remoteFullPath); var onSuccessListener = new gmsTasks.OnSuccessListener({ onSuccess: function () { resolve(); } }); var onFailureListener = new gmsTasks.OnFailureListener({ onFailure: function (exception) { reject(exception.getMessage()); } }); storageReference.delete() .addOnSuccessListener(onSuccessListener) .addOnFailureListener(onFailureListener); } catch (ex) { console.log("Error in firebase.deleteFile: " + ex); reject(ex); } }); } exports.deleteFile = deleteFile; function listAll(listOptions) { return new Promise(function (resolve, reject) { try { var storageRef = getStorageRef(reject, listOptions); if (!storageRef) { return; } var onSuccessListener = new gmsTasks.OnSuccessListener({ onSuccess: function (result) { return resolve(new ListResult(result, listOptions)); } }); var onFailureListener = new gmsTasks.OnFailureListener({ onFailure: function (exception) { reject(exception.getCause() ? exception.getCause().getMessage() : exception.getMessage()); } }); var storageReference = storageRef.child(listOptions.remoteFullPath); storageReference.listAll() .addOnSuccessListener(onSuccessListener) .addOnFailureListener(onFailureListener); } catch (ex) { console.log("Error in firebase.listAll: " + ex); reject(ex); } }); } exports.listAll = listAll;