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 09a918172d2b0607cbf3fd406ef945381bf82d8d..34d629add008a67991a896920ccd662c97f22ee0 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 @@ -10,24 +11,58 @@ 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 : BaseActivity() { private lateinit var randomizeReceiver: BroadcastReceiver - private lateinit var navigationView : NavigationView - private lateinit var fragment : NavHostFragment - private lateinit var bottomNavigationView: BottomNavigationView + private var isReceiverRegistered = false + 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) + tokenExpiredReceiver = object : BroadcastReceiver(){ override fun onReceive(context: Context?, intent: Intent?) { if(intent != null && intent.action != null){ @@ -46,11 +81,11 @@ class MainActivity : BaseActivity() { } randomizeReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { - Log.e("Randomize", "Broadcast received") - 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) - startActivityForResult(randomizeIntent,1) + startActivityForResult(randomizeIntent, newTransactionRequestCode) } } } @@ -116,4 +151,26 @@ class MainActivity : BaseActivity() { super.onDestroy() } + 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