diff --git a/app/src/main/java/com/example/bondoman/activities/MainActivity.kt b/app/src/main/java/com/example/bondoman/activities/MainActivity.kt index 54afb4784a32cdb5d4aeef6ac96587edf31df83a..34f4459c4f7e4a0b55e887102e2f29110fd3aefb 100644 --- a/app/src/main/java/com/example/bondoman/activities/MainActivity.kt +++ b/app/src/main/java/com/example/bondoman/activities/MainActivity.kt @@ -1,5 +1,6 @@ package com.example.bondoman.activities +import android.app.Activity import android.content.BroadcastReceiver import android.content.Context import android.content.Intent @@ -11,16 +12,27 @@ import android.util.Log import android.view.MenuItem import android.view.View import android.widget.LinearLayout +import androidx.activity.viewModels import androidx.constraintlayout.widget.ConstraintLayout import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels import androidx.navigation.findNavController import androidx.navigation.fragment.NavHostFragment import androidx.navigation.ui.onNavDestinationSelected import androidx.viewpager2.adapter.FragmentViewHolder import com.example.bondoman.R +import com.example.bondoman.database.TransactionDatabase +import com.example.bondoman.entities.Transaction +import com.example.bondoman.lib.SecurePreferences +import com.example.bondoman.repositories.TransactionRepository import com.example.bondoman.services.TokenCheckService +import com.example.bondoman.viewModels.TransactionViewModelFactory +import com.example.bondoman.viewModels.TransactionsViewModel import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.navigation.NavigationView +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.SupervisorJob +import java.util.Date class MainActivity : AppCompatActivity() { private lateinit var tokenExpiredReceiver: BroadcastReceiver @@ -30,12 +42,27 @@ class MainActivity : AppCompatActivity() { private lateinit var bottomNavigationView: BottomNavigationView; private lateinit var navigationView: NavigationView; private lateinit var fragment: NavHostFragment; + private lateinit var securePreferences: SecurePreferences + private val newTransactionRequestCode = 1 + private val editTransactionRequestCode = 2 + private var isAddTransactionActivityRunning = false + private val wordViewModel: TransactionsViewModel by viewModels { + TransactionViewModelFactory( + TransactionRepository( + TransactionDatabase.getInstance(this, CoroutineScope( + SupervisorJob() + ) + ).transactionDao(), securePreferences) + ) + } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) + securePreferences = SecurePreferences(this) + tokenServiceIntent= Intent(this, TokenCheckService::class.java) startService(tokenServiceIntent) @@ -58,10 +85,11 @@ class MainActivity : AppCompatActivity() { randomizeReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { - if (intent?.action == "com.example.bondoman.RANDOMIZE_TRANSACTION") { + if (intent?.action == "com.example.bondoman.RANDOMIZE_TRANSACTION" && !isAddTransactionActivityRunning) { + isAddTransactionActivityRunning = true val randomizeIntent = Intent(this@MainActivity, AddTransaction::class.java) randomizeIntent.putExtras(intent) - startActivity(randomizeIntent) + startActivityForResult(randomizeIntent, newTransactionRequestCode) } } } @@ -138,4 +166,27 @@ class MainActivity : AppCompatActivity() { isReceiverRegistered = false } } + + override fun onActivityResult(requestCode: Int, resultCode: Int, intentData: Intent?) { + super.onActivityResult(requestCode, resultCode, intentData) + + if (requestCode == newTransactionRequestCode && resultCode == Activity.RESULT_OK) { + val title = intentData?.getStringExtra(AddTransaction.TITLE) ?: "" + val amount = intentData?.getFloatExtra(AddTransaction.AMOUNT, 0.0f) ?: 0.0f + val type = intentData?.getStringExtra(AddTransaction.TYPE) ?: "" + val location = intentData?.getStringExtra(AddTransaction.LOCATION) ?: "" + + val transaction = Transaction( + id = 0, + title = title, + category = type, + amount = amount, + location = location, + date = Date(), + userEmail = securePreferences.getEmail() ?: "" + ) + wordViewModel.insert(transaction) + isAddTransactionActivityRunning = false + } + } } \ No newline at end of file