Skip to content
This repository was archived by the owner on Apr 4, 2023. It is now read-only.

Commit df04cea

Browse files
Merge pull request #75 from NathanWalker/storage-delete-files
feat(Storage): file removal ability.
2 parents 33c1031 + 7a58215 commit df04cea

File tree

3 files changed

+140
-75
lines changed

3 files changed

+140
-75
lines changed

docs/STORAGE.md

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ You can either pass in a full local path to a file, or (as a convenience) use th
5656
},
5757
function (error) {
5858
console.log("File upload error: " + error);
59-
};
59+
}
6060
);
6161
```
6262

@@ -92,7 +92,7 @@ In this example we'll download the previously uploaded file to a certain path on
9292
},
9393
function (error) {
9494
console.log("File download error: " + error);
95-
};
95+
}
9696
);
9797
```
9898

@@ -113,6 +113,25 @@ In this example we'll determine the remote URL of the previously uploaded file.
113113
},
114114
function (error) {
115115
console.log("Error: " + error);
116-
};
116+
}
117+
);
118+
```
119+
120+
### removeFile
121+
You can pass in remote file path to remove it.
122+
123+
```js
124+
firebase.removeFile({
125+
// optional, can also be passed during init() as 'storageBucket' param so we can cache it
126+
bucket: 'gs://n-plugin-test.appspot.com',
127+
// the full path of an existing file in your Firebase storage
128+
remoteFullPath: 'uploads/images/telerik-logo-uploaded.png'
129+
}).then(
130+
function ()
131+
console.log("File removed.");
132+
},
133+
function (error) {
134+
console.log("File removal Error: " + error);
135+
}
117136
);
118137
```

firebase.android.js

Lines changed: 63 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -860,26 +860,36 @@ firebase.remove = function (path) {
860860
});
861861
};
862862

863+
function getStorageRef(reject, arg) {
864+
if (typeof(com.google.firebase.storage) === "undefined") {
865+
reject("Uncomment firebase-storage in the plugin's include.gradle first");
866+
return;
867+
}
868+
869+
if (!arg.remoteFullPath) {
870+
reject("remoteFullPath is mandatory");
871+
return;
872+
}
873+
874+
var storageRef = firebase.storage;
875+
876+
if (arg.bucket) {
877+
storageRef = com.google.firebase.storage.FirebaseStorage.getInstance().getReferenceFromUrl(arg.bucket);
878+
}
879+
880+
return storageRef;
881+
}
882+
863883
firebase.uploadFile = function (arg) {
864884
return new Promise(function (resolve, reject) {
865885
try {
866886

867-
if (typeof(com.google.firebase.storage) === "undefined") {
868-
reject("Uncomment firebase-storage in the plugin's include.gradle first");
869-
return;
870-
}
887+
var storageRef = getStorageRef(reject, arg);
871888

872-
if (!arg.remoteFullPath) {
873-
reject("remoteFullPath is mandatory");
889+
if (!storageRef) {
874890
return;
875891
}
876892

877-
var storageRef = firebase.storage;
878-
879-
if (arg.bucket) {
880-
storageRef = com.google.firebase.storage.FirebaseStorage.getInstance().getReferenceFromUrl(arg.bucket);
881-
}
882-
883893
var storageReference = storageRef.child(arg.remoteFullPath);
884894

885895
var onSuccessListener = new com.google.android.gms.tasks.OnSuccessListener({
@@ -951,22 +961,12 @@ firebase.downloadFile = function (arg) {
951961
return new Promise(function (resolve, reject) {
952962
try {
953963

954-
if (typeof(com.google.firebase.storage) === "undefined") {
955-
reject("Uncomment firebase-storage in the plugin's include.gradle first");
956-
return;
957-
}
964+
var storageRef = getStorageRef(reject, arg);
958965

959-
if (!arg.remoteFullPath) {
960-
reject("remoteFullPath is mandatory");
966+
if (!storageRef) {
961967
return;
962968
}
963969

964-
var storageRef = firebase.storage;
965-
966-
if (arg.bucket) {
967-
storageRef = com.google.firebase.storage.FirebaseStorage.getInstance().getReferenceFromUrl(arg.bucket);
968-
}
969-
970970
var storageReference = storageRef.child(arg.remoteFullPath);
971971

972972
var onSuccessListener = new com.google.android.gms.tasks.OnSuccessListener({
@@ -1015,22 +1015,12 @@ firebase.getDownloadUrl = function (arg) {
10151015
return new Promise(function (resolve, reject) {
10161016
try {
10171017

1018-
if (typeof(com.google.firebase.storage) === "undefined") {
1019-
reject("Uncomment firebase-storage in the plugin's include.gradle first");
1020-
return;
1021-
}
1018+
var storageRef = getStorageRef(reject, arg);
10221019

1023-
if (!arg.remoteFullPath) {
1024-
reject("remoteFullPath is mandatory");
1020+
if (!storageRef) {
10251021
return;
10261022
}
10271023

1028-
var storageRef = firebase.storage;
1029-
1030-
if (arg.bucket) {
1031-
storageRef = com.google.firebase.storage.FirebaseStorage.getInstance().getReferenceFromUrl(arg.bucket);
1032-
}
1033-
10341024
var storageReference = storageRef.child(arg.remoteFullPath);
10351025

10361026
var onSuccessListener = new com.google.android.gms.tasks.OnSuccessListener({
@@ -1057,6 +1047,43 @@ firebase.getDownloadUrl = function (arg) {
10571047
});
10581048
};
10591049

1050+
firebase.removeFile = function (arg) {
1051+
return new Promise(function (resolve, reject) {
1052+
try {
1053+
1054+
var storageRef = getStorageRef(reject, arg);
1055+
1056+
if (!storageRef) {
1057+
return;
1058+
}
1059+
1060+
var storageReference = storageRef.child(arg.remoteFullPath);
1061+
1062+
var onSuccessListener = new com.google.android.gms.tasks.OnSuccessListener({
1063+
onSuccess: function() {
1064+
console.log("Removed file.");
1065+
resolve();
1066+
}
1067+
});
1068+
1069+
var onFailureListener = new com.google.android.gms.tasks.OnFailureListener({
1070+
onFailure: function (exception) {
1071+
console.log("Error removing file.");
1072+
reject(exception);
1073+
}
1074+
});
1075+
1076+
storageReference.delete()
1077+
.addOnSuccessListener(onSuccessListener)
1078+
.addOnFailureListener(onFailureListener);
1079+
1080+
} catch (ex) {
1081+
console.log("Error in firebase.getDownloadUrl: " + ex);
1082+
reject(ex);
1083+
}
1084+
});
1085+
};
1086+
10601087
/*
10611088
firebase.sendCrashLog = function (arg) {
10621089
return new Promise(function (resolve, reject) {

firebase.ios.js

Lines changed: 55 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -862,6 +862,26 @@ firebase.remove = function (path) {
862862
});
863863
};
864864

865+
function getStorageRef(reject, arg) {
866+
if (typeof(FIRStorage) === "undefined") {
867+
reject("Uncomment Storage in the plugin's Podfile first");
868+
return;
869+
}
870+
871+
if (!arg.remoteFullPath) {
872+
reject("remoteFullPath is mandatory");
873+
return;
874+
}
875+
876+
var storageRef = firebase.storage;
877+
878+
if (arg.bucket) {
879+
storageRef = FIRStorage.storage().referenceForURL(arg.bucket);
880+
}
881+
882+
return storageRef;
883+
}
884+
865885
firebase.uploadFile = function (arg) {
866886
return new Promise(function (resolve, reject) {
867887
try {
@@ -882,22 +902,12 @@ firebase.uploadFile = function (arg) {
882902
}
883903
};
884904

885-
if (typeof(FIRStorage) === "undefined") {
886-
reject("Uncomment Storage in the plugin's Podfile first");
887-
return;
888-
}
905+
var storageRef = getStorageRef(reject, arg);
889906

890-
if (!arg.remoteFullPath) {
891-
reject("remoteFullPath is mandatory");
907+
if (!storageRef) {
892908
return;
893909
}
894910

895-
var storageRef = firebase.storage;
896-
897-
if (arg.bucket) {
898-
storageRef = FIRStorage.storage().referenceForURL(arg.bucket);
899-
}
900-
901911
var fIRStorageReference = storageRef.child(arg.remoteFullPath);
902912

903913
if (arg.localFile) {
@@ -944,22 +954,12 @@ firebase.downloadFile = function (arg) {
944954
}
945955
};
946956

947-
if (typeof(FIRStorage) === "undefined") {
948-
reject("Uncomment Storage in the plugin's Podfile first");
949-
return;
950-
}
957+
var storageRef = getStorageRef(reject, arg);
951958

952-
if (!arg.remoteFullPath) {
953-
reject("remoteFullPath is mandatory");
959+
if (!storageRef) {
954960
return;
955961
}
956962

957-
var storageRef = firebase.storage;
958-
959-
if (arg.bucket) {
960-
storageRef = FIRStorage.storage().referenceForURL(arg.bucket);
961-
}
962-
963963
var fIRStorageReference = storageRef.child(arg.remoteFullPath);
964964

965965
var localFilePath;
@@ -1003,22 +1003,12 @@ firebase.getDownloadUrl = function (arg) {
10031003
}
10041004
};
10051005

1006-
if (typeof(FIRStorage) === "undefined") {
1007-
reject("Uncomment Storage in the plugin's Podfile first");
1008-
return;
1009-
}
1006+
var storageRef = getStorageRef(reject, arg);
10101007

1011-
if (!arg.remoteFullPath) {
1012-
reject("remoteFullPath is mandatory");
1008+
if (!storageRef) {
10131009
return;
10141010
}
10151011

1016-
var storageRef = firebase.storage;
1017-
1018-
if (arg.bucket) {
1019-
storageRef = FIRStorage.storage().referenceForURL(arg.bucket);
1020-
}
1021-
10221012
var fIRStorageReference = storageRef.child(arg.remoteFullPath);
10231013

10241014
fIRStorageReference.downloadURLWithCompletion(onCompletion);
@@ -1030,6 +1020,35 @@ firebase.getDownloadUrl = function (arg) {
10301020
});
10311021
};
10321022

1023+
firebase.removeFile = function (arg) {
1024+
return new Promise(function (resolve, reject) {
1025+
try {
1026+
1027+
var onCompletion = function(metadata, error) {
1028+
if (error !== null) {
1029+
reject(error.localizedDescription);
1030+
} else {
1031+
resolve();
1032+
}
1033+
};
1034+
1035+
var storageRef = getStorageRef(reject, arg);
1036+
1037+
if (!storageRef) {
1038+
return;
1039+
}
1040+
1041+
var fIRStorageFileRef = storageRef.child(arg.remoteFullPath);
1042+
1043+
fIRStorageFileRef.deleteWithCompletion(onCompletion);
1044+
1045+
} catch (ex) {
1046+
console.log("Error in firebase.removeFile: " + ex);
1047+
reject(ex);
1048+
}
1049+
});
1050+
};
1051+
10331052
/* disabled since FIRCrashLog is always undefined
10341053
firebase.sendCrashLog = function (arg) {
10351054
return new Promise(function (resolve, reject) {

0 commit comments

Comments
 (0)