Commit 1eb8ddd3 authored by Tuan Anh Nguyen's avatar Tuan Anh Nguyen
Browse files

feat: add image upload

parent 5b7f8f11
Loading
Loading
Loading
Loading
+29 −2
Original line number Diff line number Diff line
import 'dart:io';

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_storage/firebase_storage.dart';
import 'package:path/path.dart' as p;
import 'package:stamped/data/entities/country_entity.dart';
import 'package:stamped/data/enums/image_type.dart';

class MediaService {
  final _postcardImagesRef =
      FirebaseStorage.instance.ref().child('postcardImages');
  final _stampsRef = FirebaseStorage.instance.ref().child('stamps');

  final _countryCollection =
      FirebaseFirestore.instance.collection('countries').withConverter(
    fromFirestore: (snapshot, options) {
@@ -24,8 +33,26 @@ class MediaService {
    return countrySnapshot.data()!.flag;
  }

  Future<void> uploadImage() async {
    //TODO
  Future<Reference?> uploadImage(
    File file, {
    required ImageType imageType,
  }) async {
    final storageRef =
        imageType == ImageType.postcard ? _postcardImagesRef : _stampsRef;
    final fileName = _genUniqueFileName(file);
    final uploadTask = await storageRef.child(fileName).putFile(file);

    if (uploadTask.state != TaskState.success) {
      return null;
    }

    return storageRef.child(fileName);
  }

  String _genUniqueFileName(File file) {
    final time = DateTime.now().millisecondsSinceEpoch.toString();

    return '$time${p.basename(file.path)}';
  }

  Future<void> deleteImage() async {