createPublicPlayRoom method

Future<void> createPublicPlayRoom ()

Implementation

Future<void> createPublicPlayRoom() async {
  final user = await _auth.currentUser;
  final userDocRef = _store.docRef<UserEntity>(user.uid);
  final room = PlayRoomEntity(
    host: userDocRef.ref,
    title: 'はじめての人生',
    humans: [userDocRef.ref],
    lifeRoad: (await _createLifeRoad()).ref,
    currentTurnHumanId: user.uid,
  );
  final roomDocRef = _store.collectionRef<PlayRoomEntity>().docRef();
  final batch = _store.firestore.batch();
  await roomDocRef.set(room, batch: batch);
  await userDocRef.updateData(<String, dynamic>{
    UserEntityField.joinPlayRoom.name: roomDocRef.ref,
    TimestampField.updatedAt: FieldValue.serverTimestamp(),
  }, batch: batch);
  await batch.commit(); // FIXME: エラーハンドリング. 特に既に join 済みの場合のハンドリング.
  value.haveCreatedPlayRoom = Doc<PlayRoomEntity>(_store, roomDocRef.ref, room);
  notifyListeners();
}