Skip to content

Commit

Permalink
Add deletion listener
Browse files Browse the repository at this point in the history
  • Loading branch information
Vanessamae23 committed Apr 5, 2024
1 parent 7f34fb8 commit c89e2f5
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 24 deletions.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -399,7 +399,6 @@ Match</string>
</scene>
</scenes>
<inferredMetricsTieBreakers>
<segue reference="gCm-LW-wHo"/>
<segue reference="5Mz-7I-nNc"/>
</inferredMetricsTieBreakers>
<resources>
Expand Down
43 changes: 24 additions & 19 deletions TowerForge/TowerForge/Networking/RoomNetwork/GameRoom.swift
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class GameRoom {

// If the room name is available, try to join the room
guard isAvailable else {
print("Room is taken")
completion(false)
return
}
Expand All @@ -59,6 +60,9 @@ class GameRoom {
self.roomState = roomState
self.makeRoomChangeListener()
}
deinit {
removeAllListeners()
}
private func postRoomDataToFirebase(completion: ((_ err: Any?, _ result: String?) -> Void)?) {
let roomRef = FirebaseDatabaseReference(.Rooms).child(roomName)
roomRef.updateChildValues(["roomName": roomName as? NSString ]) { err, snap in
Expand Down Expand Up @@ -153,7 +157,7 @@ class GameRoom {
}
private func makeRoomChangeListener() {
print("Start listening")
roomRef.removeAllObservers()
// roomRef.removeAllObservers()
roomRef.child(roomName).observe(.value) { [weak self] snap in
guard let snapshotValue = snap.value as? [String: Any] else {
return
Expand All @@ -175,26 +179,23 @@ class GameRoom {
}
private func makeRoomDeletionListener() {
print("Start Deletion listening")
roomRef.child(roomName).child("players").observe(.childRemoved) { [weak self] snap in
guard let snapshotValue = snap.value as? [String: Any] else {
return
}
if let playersData = snapshotValue["players"] as? [String: Any] {
for (playerKey, playerData) in playersData {
if let playerOne = self?.playerOne, playerOne.userPlayerId == playerKey {
self?.playerOne = nil
self?.gameRoomDelegate?.onRoomChange()
return
}
roomRef.child(roomName).child("players").observe(.childRemoved) { [weak self] snapshot in
let playerKey = snapshot.key
// Check if the player is playerOne
if let playerOne = self?.playerOne, playerOne.userPlayerId == playerKey {
self?.playerOne = nil

self?.gameRoomDelegate?.onRoomChange()
return
}

// Check if the player is playerTwo
if let playerTwo = self?.playerTwo, playerTwo.userPlayerId == playerKey {
self?.playerTwo = nil
self?.gameRoomDelegate?.onRoomChange()
return
}
// Check if the player is playerTwo
if let playerTwo = self?.playerTwo, playerTwo.userPlayerId == playerKey {
self?.playerTwo = nil
self?.gameRoomDelegate?.onRoomChange()
return
}
}

}
}
private func isRoomNameAvailable(roomName: String, completion: @escaping (Bool) -> Void?) {
Expand All @@ -210,4 +211,8 @@ class GameRoom {
}

}
private func removeAllListeners() {
roomRef.child(roomName).removeAllObservers()

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ class GameRoomViewController: UIViewController {
if success {
print("Successfully joined the room")
self.currentPlayer = player
DispatchQueue.main.async {
self.performSegue(withIdentifier: "segueToWaitingRoom", sender: self)
}
self.performSegue(withIdentifier: "segueToWaitingRoom",
sender: self)

} else {
print("Failed to join room")
}
Expand All @@ -59,7 +59,7 @@ class GameRoomViewController: UIViewController {
guard let currentPlayer = self.currentPlayer else {
return
}
print("Before segueing \(gameRoom)")
print("Before segueing \(gameRoom?.playerOne)")
destinationVC.currentPlayer = currentPlayer
destinationVC.gameRoom = gameRoom
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ class GameWaitingRoomViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
gameRoom?.gameRoomDelegate = self
print("Is there game \(gameRoom)")
updatePlayerList()
}
@IBAction private func onLeaveButtonPressed(_ sender: Any) {
Expand All @@ -33,6 +34,7 @@ class GameWaitingRoomViewController: UIViewController {
}

@IBOutlet var ListStackView: UIStackView!

private func updatePlayerList() {
ListStackView.arrangedSubviews.forEach { $0.removeFromSuperview() }

Expand Down

0 comments on commit c89e2f5

Please sign in to comment.