Files
fcs/lib/helpers/firebase_helper.dart

84 lines
2.6 KiB
Dart
Raw Normal View History

2020-09-17 06:02:48 +06:30
import 'dart:io';
2021-09-10 14:27:38 +06:30
import 'package:firebase_auth/firebase_auth.dart' as fb;
2020-09-17 06:02:48 +06:30
import 'package:firebase_storage/firebase_storage.dart';
2020-09-07 16:05:28 +06:30
import 'package:logging/logging.dart';
2020-09-17 06:02:48 +06:30
import 'package:uuid/uuid.dart';
2020-09-07 16:05:28 +06:30
final log = Logger('firebaseHelper');
2021-09-10 14:27:38 +06:30
final fb.FirebaseAuth auth = fb.FirebaseAuth.instance;
2020-09-07 16:05:28 +06:30
Future<String> getToken() async {
2021-09-10 14:27:38 +06:30
fb.User? firebaseUser = fb.FirebaseAuth.instance.currentUser;
String token = await firebaseUser?.getIdToken() ?? "";
return token;
2020-09-07 16:05:28 +06:30
}
2020-09-17 06:02:48 +06:30
2021-09-10 14:27:38 +06:30
Future<Map?> getClaims({bool refreshIdToken = false}) async {
fb.User? firebaseUser = auth.currentUser;
2020-10-17 01:40:24 +06:30
if (firebaseUser == null) return null;
2021-09-10 14:27:38 +06:30
fb.IdTokenResult idToken =
await firebaseUser.getIdTokenResult(refreshIdToken);
2020-10-17 01:40:24 +06:30
return idToken.claims;
}
2020-11-13 03:09:53 +06:30
// returns list of url
2021-09-10 17:14:59 +06:30
Future<List<String>> uploadFiles(String path, List<File?> files,
2021-09-10 14:27:38 +06:30
{String? fileName}) async {
2020-11-13 03:09:53 +06:30
List<Future<String>> fu = [];
2021-09-10 17:14:59 +06:30
for (File? f in files) {
2020-11-13 03:09:53 +06:30
Future<String> u = uploadStorage(path, f);
fu.add(u);
}
return Future.wait(fu);
}
2021-09-10 17:14:59 +06:30
Future<String> uploadStorage(String path, File? file,
{String? fileName}) async {
2020-09-17 06:02:48 +06:30
if (fileName == null) {
fileName = Uuid().v4();
}
2021-09-10 17:14:59 +06:30
if (file == null) {
return Future.value('');
}
2021-09-10 14:27:38 +06:30
Reference ref = FirebaseStorage.instance.ref().child('$path/$fileName');
UploadTask uploadTask = ref.putFile(file);
2021-10-09 17:08:28 +06:30
await uploadTask;
2021-09-10 14:27:38 +06:30
String downloadUrl = await ref.getDownloadURL();
2020-09-17 06:02:48 +06:30
return downloadUrl;
2021-09-10 14:27:38 +06:30
// StorageReference storageReference =
// FirebaseStorage(storageBucket: Config.instance.bucketName)
// .ref()
// .child('$path/$fileName');
// StorageUploadTask uploadTask = storageReference.putFile(file);
// await uploadTask.onComplete;
// String downloadUrl = await storageReference.getDownloadURL();
// print("name:${await storageReference.getName()}");
// print("bucket:${await storageReference.getBucket()}");
// print("path:${await storageReference.getPath()}");
// print("meta:${await storageReference.getMetadata()}");
// return downloadUrl;
2020-09-17 06:02:48 +06:30
}
2020-10-12 03:34:05 +06:30
2021-09-10 17:14:59 +06:30
Future<void> deleteStorageFromUrls(List<String?> urls) async {
2020-10-12 03:34:05 +06:30
if (urls == null) return;
for (int i = 0; i < urls.length; i++) {
2021-09-10 17:14:59 +06:30
if (urls[i] == null) return;
await deleteStorageFromUrl(urls[i]!);
2020-10-12 03:34:05 +06:30
}
}
Future<void> deleteStorageFromUrl(String url) async {
try {
2021-09-10 14:27:38 +06:30
Reference ref = FirebaseStorage.instance.refFromURL(url);
await ref.delete();
// StorageReference storageReference =
// await FirebaseStorage(storageBucket: Config.instance.bucketName)
// .getReferenceFromUrl(url);
// await storageReference.delete();
2020-10-12 03:34:05 +06:30
} catch (e) {
log.warning("deleteStorage:$e");
}
}