createRoom method

Stream<AsyncStatus> createRoom(
  1. NewRoomEvent event,
  2. List<Member> members
)

本地创建一个聊天室

Implementation

Stream<AsyncStatus> createRoom(
    NewRoomEvent event, List<Member> members) async* {
  rooms.add(event.room);
  event.room.members.add(event.member);
  members.forEach((element) {
    event.room.members.add(element);
  });
  yield AsyncStatus.invoking;
  // TODO: 数据库持久化的逻辑以及网络请求发消息的请求
  final r = await HttpEndpoint('https://api.codiario.com/room/create').post(
      jsonEncode({
    'roomId': event.room.roomId,
    'max': event.room.maxMembers,
    'expire': 180
  }));
  if (r) {
    await _saveRooms();
    await channel.sendMessage(event);
    yield AsyncStatus.success;
  } else {
    rooms = rooms.where((room) => room.roomId != event.room.roomId).toList();
    yield AsyncStatus.error;
  }
}