Commit d7ae62a2 authored by Michal Cikatricis's avatar Michal Cikatricis
Browse files

Feat (collections): wrapped stream in behavior subject, postcard service...

Feat (collections): wrapped stream in behavior subject, postcard service returns stream of postcards + refactor
parent 55b2cbd6
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
import 'package:firebase_auth/firebase_auth.dart';
import 'package:get_it/get_it.dart';
import 'package:stamped/data/mapper/mapper.dart';
import 'package:stamped/service/media_service.dart';
import 'package:stamped/service/postcard_service.dart';
import 'package:stamped/service/user_service.dart';
@@ -18,10 +16,5 @@ class IoCContainer {
      ),
    );
    get.registerSingleton(MediaService());
    get.registerSingleton(
      Mapper(
        get<UserService>(),
      ),
    );
  }
}

lib/data/mapper/mapper.dart

deleted100644 → 0
+0 −62
Original line number Diff line number Diff line
import 'package:stamped/data/entities/postcard_entity.dart';
import 'package:stamped/data/entities/user_entity.dart';
import 'package:stamped/data/models/postcard.dart';
import 'package:stamped/data/models/user.dart';
import 'package:stamped/service/user_service.dart';

class Mapper {
  final UserService _userService;

  Mapper(this._userService);

  PostcardEntity postcardToEntity(Postcard postcard) {
    return PostcardEntity(
      id: postcard.id,
      imagePath: postcard.imagePath,
      stampPath: postcard.stampPath,
      originLocation: postcard.originLocation,
      destinationLocation: postcard.destinationLocation,
      text: postcard.text,
      senderId: postcard.sender.id,
      receiverId: postcard.receiver?.id,
    );
  }

  Future<Postcard> entityToPostcard(PostcardEntity entity) async {
    final sender = entityToUser(await _userService.findById(entity.senderId));
    final receiver = entity.receiverId != null
        ? entityToUser(await _userService.findById(entity.receiverId!))
        : null;

    return Postcard(
      id: entity.id,
      imagePath: entity.imagePath,
      stampPath: entity.stampPath,
      originLocation: entity.originLocation,
      destinationLocation: entity.destinationLocation,
      text: entity.text,
      sender: sender,
      receiver: receiver,
    );
  }

  UserEntity userToEntity(User user) {
    return UserEntity(
      id: user.id,
      userName: user.userName,
      profilePicture: user.profilePicture,
      lastLocation: user.lastLocation,
      isAdmin: user.isAdmin,
    );
  }

  User entityToUser(UserEntity userEntity) {
    return User(
      id: userEntity.id,
      userName: userEntity.userName,
      profilePicture: userEntity.profilePicture,
      lastLocation: userEntity.lastLocation,
      isAdmin: userEntity.isAdmin,
    );
  }
}
+3 −3
Original line number Diff line number Diff line
import 'package:stamped/data/models/user.dart';
import 'package:stamped/data/entities/user_entity.dart';

class Postcard {
  final String id;
@@ -7,8 +7,8 @@ class Postcard {
  final String originLocation;
  final String destinationLocation;
  final String text;
  final User sender;
  final User? receiver;
  final UserEntity sender;
  final UserEntity? receiver;

  const Postcard({
    required this.id,
+16 −16
Original line number Diff line number Diff line
class User {
  final String id;
  String userName;
  String profilePicture;
  // location name
  String lastLocation;
  bool isAdmin;

  User({
    required this.id,
    required this.userName,
    required this.profilePicture,
    required this.lastLocation,
    this.isAdmin = false,
  });
}
// class User {
//   final String id;
//   String userName;
//   String profilePicture;
//   // location name
//   String lastLocation;
//   bool isAdmin;
//
//   User({
//     required this.id,
//     required this.userName,
//     required this.profilePicture,
//     required this.lastLocation,
//     this.isAdmin = false,
//   });
// }

lib/facade/postcard_facade.dart

deleted100644 → 0
+0 −21
Original line number Diff line number Diff line
import 'package:stamped/common/service/ioc_container.dart';
import 'package:stamped/data/mapper/mapper.dart';
import 'package:stamped/data/models/postcard.dart';
import 'package:stamped/service/postcard_service.dart';

class PostcardFacade{
  final _mapper = get<Mapper>();
  final _service = get<PostcardService>();

  void createPostcard(Postcard postcard) {
    _service.create(_mapper.postcardToEntity(postcard));
  }

  void deletePostcard(String id) {
    _service.delete(id);
  }

  Future<Postcard> findPostcardById(String id) async{
    return _mapper.entityToPostcard(await _service.findById(id));
  }
}
 No newline at end of file
Loading