@@ -7,51 +7,58 @@ import androidx.appcompat.app.AppCompatActivity
77import android.os.Bundle
88import android.util.Log
99import android.widget.Toast
10+ import androidx.activity.viewModels
1011import androidx.appcompat.app.AlertDialog
1112import androidx.core.app.ActivityCompat
1213import androidx.core.content.ContextCompat
14+ import androidx.lifecycle.lifecycleScope
15+ import com.example.domain.state.FireStoreState
16+ import com.example.presentaion.viewmodel.FireStoreViewModel
1317import com.example.webrtc.databinding.ActivityMainBinding
18+ import com.google.android.material.snackbar.Snackbar
1419import com.google.firebase.firestore.ktx.firestore
1520import com.google.firebase.ktx.Firebase
21+ import dagger.hilt.android.AndroidEntryPoint
22+ import kotlinx.coroutines.launch
1623
24+ @AndroidEntryPoint
1725class MainActivity : AppCompatActivity () {
1826 private lateinit var binding: ActivityMainBinding
19- private val db = Firebase .firestore
27+ private val viewModel : FireStoreViewModel by viewModels()
2028 override fun onCreate (savedInstanceState : Bundle ? ) {
2129 super .onCreate(savedInstanceState)
2230 binding = ActivityMainBinding .inflate(layoutInflater)
31+ binding.viewModel = viewModel
2332 setContentView(binding.root)
2433 checkCameraAndAudioPermission()
25- init ()
34+ collectState ()
2635 }
2736
28- private fun init () = with (binding) {
29- start.setOnClickListener {
30- val roomID = roomID.text.toString()
31- getRoomInfo(roomID)
32- }
33- join.setOnClickListener {
34- val roomID = roomID.text.toString()
35- val intent = Intent (this @MainActivity, WebRTCConnectActivity ::class .java)
36- intent.putExtra(" roomID" , roomID)
37- intent.putExtra(" isJoin" , true )
38- startActivity(intent)
39- }
40- }
37+ private fun collectState () {
38+ lifecycleScope.launch {
39+ viewModel.state.collect {
40+ when (it) {
41+ is FireStoreState .EnterRoom -> {
42+ val intent =
43+ Intent (this @MainActivity, WebRTCConnectActivity ::class .java).apply {
44+ putExtra(" roomID" , it.roomId)
45+ putExtra(" isJoin" , it.isJoin)
46+ addFlags(Intent .FLAG_ACTIVITY_CLEAR_TASK )
47+ addFlags(Intent .FLAG_ACTIVITY_NEW_TASK )
48+ }
49+ startActivity(intent)
50+ }
4151
42- private fun getRoomInfo (roomID : String ) {
43- db.collection(" calls" )
44- .document(roomID)
45- .get()
46- .addOnSuccessListener {
47- if (it[" type" ] == " OFFER" || it[" type" ] == " ANSWER" || it[" type" ] == " END_CALL" ) {
48- } else {
49- val intent = Intent (this @MainActivity, WebRTCConnectActivity ::class .java)
50- intent.putExtra(" roomID" , roomID)
51- intent.putExtra(" isJoin" , false )
52- startActivity(intent)
52+ is FireStoreState .RoomAlreadyEnded -> {
53+ Snackbar .make(binding.root, " 이미 사용된 방입니다." , Snackbar .LENGTH_SHORT ).show()
54+ }
55+
56+ is FireStoreState .Idle -> {
57+
58+ }
5359 }
5460 }
61+ }
5562 }
5663
5764 private fun checkCameraAndAudioPermission () {
0 commit comments