diff --git a/app/build.gradle b/app/build.gradle index e363056..ce37383 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,7 +27,8 @@ android { buildTypes { release { - minifyEnabled false + minifyEnabled true + shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } @@ -87,11 +88,11 @@ dependencies { // Lottie Animation Library implementation "com.airbnb.android:lottie:3.6.0" - // Hilt implementation "com.google.dagger:hilt-android:2.31-alpha" kapt "com.google.dagger:hilt-android-compiler:2.30.1-alpha" annotationProcessor 'androidx.hilt:hilt-compiler:1.0.0-alpha03' + //implementation "com.google.dagger:hilt-android-testing:$hilt_ver" implementation "androidx.hilt:hilt-common:1.0.0-alpha03" implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03" diff --git a/app/src/main/java/dev/spikeysanju/expensetracker/utils/TextInputDropDownMenu.kt b/app/src/main/java/dev/spikeysanju/expensetracker/utils/TextInputDropDownMenu.kt deleted file mode 100644 index 505cd19..0000000 --- a/app/src/main/java/dev/spikeysanju/expensetracker/utils/TextInputDropDownMenu.kt +++ /dev/null @@ -1,74 +0,0 @@ -package dev.spikeysanju.expensetracker.utils - -import android.content.Context -import android.os.Parcel -import android.os.Parcelable -import android.text.InputType -import android.text.TextUtils -import android.util.AttributeSet -import androidx.appcompat.widget.AppCompatAutoCompleteTextView - -class TextInputDropDownMenu : AppCompatAutoCompleteTextView { - constructor(context: Context) : super(context) - constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) - constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( - context, - attrs, - defStyleAttr - ) - - override fun getFreezesText(): Boolean { - return false - } - - override fun onSaveInstanceState(): Parcelable? { - val parcelable = super.onSaveInstanceState() - if (TextUtils.isEmpty(text)) { - return parcelable - } - val customSavedState = CustomSavedState(parcelable) - customSavedState.text = text.toString() - return customSavedState - } - - override fun onRestoreInstanceState(state: Parcelable) { - if (state !is CustomSavedState) { - super.onRestoreInstanceState(state) - return - } - setText(state.text, false) - super.onRestoreInstanceState(state.superState) - } - - private class CustomSavedState : BaseSavedState { - var text: String? = null - - constructor(superState: Parcelable?) : super(superState) - constructor(source: Parcel) : super(source) { - text = source.readString() - } - - override fun writeToParcel(out: Parcel, flags: Int) { - super.writeToParcel(out, flags) - out.writeString(text) - } - - companion object { - @JvmField - val CREATOR: Parcelable.Creator = - object : Parcelable.Creator { - override fun createFromParcel(source: Parcel): CustomSavedState { - return CustomSavedState(source) - } - - override fun newArray(size: Int): Array { - return arrayOfNulls(size) - } - } - } - } - - init { - inputType = InputType.TYPE_NULL - } -} diff --git a/app/src/main/java/dev/spikeysanju/expensetracker/utils/DetailState.kt b/app/src/main/java/dev/spikeysanju/expensetracker/utils/viewState/DetailState.kt similarity index 83% rename from app/src/main/java/dev/spikeysanju/expensetracker/utils/DetailState.kt rename to app/src/main/java/dev/spikeysanju/expensetracker/utils/viewState/DetailState.kt index 167fa42..08e7aeb 100644 --- a/app/src/main/java/dev/spikeysanju/expensetracker/utils/DetailState.kt +++ b/app/src/main/java/dev/spikeysanju/expensetracker/utils/viewState/DetailState.kt @@ -1,4 +1,4 @@ -package dev.spikeysanju.expensetracker.utils +package dev.spikeysanju.expensetracker.utils.viewState import dev.spikeysanju.expensetracker.model.Transaction diff --git a/app/src/main/java/dev/spikeysanju/expensetracker/utils/ViewState.kt b/app/src/main/java/dev/spikeysanju/expensetracker/utils/viewState/ViewState.kt similarity index 83% rename from app/src/main/java/dev/spikeysanju/expensetracker/utils/ViewState.kt rename to app/src/main/java/dev/spikeysanju/expensetracker/utils/viewState/ViewState.kt index 432cda1..95e3618 100644 --- a/app/src/main/java/dev/spikeysanju/expensetracker/utils/ViewState.kt +++ b/app/src/main/java/dev/spikeysanju/expensetracker/utils/viewState/ViewState.kt @@ -1,4 +1,4 @@ -package dev.spikeysanju.expensetracker.utils +package dev.spikeysanju.expensetracker.utils.viewState import dev.spikeysanju.expensetracker.model.Transaction diff --git a/app/src/main/java/dev/spikeysanju/expensetracker/view/adapter/TransactionAdapter.kt b/app/src/main/java/dev/spikeysanju/expensetracker/view/adapter/TransactionAdapter.kt index a9d6778..888374a 100644 --- a/app/src/main/java/dev/spikeysanju/expensetracker/view/adapter/TransactionAdapter.kt +++ b/app/src/main/java/dev/spikeysanju/expensetracker/view/adapter/TransactionAdapter.kt @@ -45,7 +45,6 @@ class TransactionAdapter : RecyclerView.Adapter { @@ -55,6 +54,8 @@ class TransactionAdapter : RecyclerView.Adapter { transactionAmount.setTextColor( @@ -63,6 +64,7 @@ class TransactionAdapter : RecyclerView.Adapter { - viewModel.insertTransaction(getTransactionContent()).also { - toast(getString(R.string.success_expense_saved)).also { - findNavController().navigate( - R.id.action_addTransactionFragment_to_dashboardFragment - ) - } + viewModel.insertTransaction(getTransactionContent()).run { + toast(getString(R.string.success_expense_saved)) + findNavController().navigate( + R.id.action_addTransactionFragment_to_dashboardFragment + ) } } } diff --git a/app/src/main/java/dev/spikeysanju/expensetracker/view/base/BaseFragment.kt b/app/src/main/java/dev/spikeysanju/expensetracker/view/base/BaseFragment.kt index bce0024..1dc14e2 100644 --- a/app/src/main/java/dev/spikeysanju/expensetracker/view/base/BaseFragment.kt +++ b/app/src/main/java/dev/spikeysanju/expensetracker/view/base/BaseFragment.kt @@ -36,8 +36,4 @@ abstract class BaseFragment : Fragment() { super.onDestroy() _binding = null } - - companion object { - private const val TAG_ERROR_DIALOG = "error_dialog" - } } diff --git a/app/src/main/java/dev/spikeysanju/expensetracker/view/dashboard/DashboardFragment.kt b/app/src/main/java/dev/spikeysanju/expensetracker/view/dashboard/DashboardFragment.kt index 7b33618..a2b43b8 100644 --- a/app/src/main/java/dev/spikeysanju/expensetracker/view/dashboard/DashboardFragment.kt +++ b/app/src/main/java/dev/spikeysanju/expensetracker/view/dashboard/DashboardFragment.kt @@ -18,7 +18,7 @@ import dagger.hilt.android.AndroidEntryPoint import dev.spikeysanju.expensetracker.R import dev.spikeysanju.expensetracker.databinding.FragmentDashboardBinding import dev.spikeysanju.expensetracker.model.Transaction -import dev.spikeysanju.expensetracker.utils.ViewState +import dev.spikeysanju.expensetracker.utils.viewState.ViewState import dev.spikeysanju.expensetracker.view.adapter.TransactionAdapter import dev.spikeysanju.expensetracker.view.base.BaseFragment import dev.spikeysanju.expensetracker.view.main.viewmodel.TransactionViewModel @@ -139,8 +139,8 @@ class DashboardFragment : val (totalIncome, totalExpense) = transaction.partition { it.transactionType == "Income" } val income = totalIncome.sumByDouble { it.amount } val expense = totalExpense.sumByDouble { it.amount } - incomeCardView.total.text = indianRupee(income) - expenseCardView.total.text = indianRupee(expense) + incomeCardView.total.text = "+ ".plus(indianRupee(income)) + expenseCardView.total.text = "- ".plus(indianRupee(expense)) totalBalanceView.totalBalance.text = indianRupee(income - expense) } @@ -150,6 +150,7 @@ class DashboardFragment : is ViewState.Loading -> { } is ViewState.Success -> { + showAllViews() onTransactionLoaded(uiState.transaction) onTotalTransactionLoaded(uiState.transaction) } @@ -163,6 +164,12 @@ class DashboardFragment : } } + private fun showAllViews() = with(binding) { + dashboardGroup.show() + emptyStateLayout.hide() + transactionRv.show() + } + private fun hideAllViews() = with(binding) { dashboardGroup.hide() emptyStateLayout.show() diff --git a/app/src/main/java/dev/spikeysanju/expensetracker/view/details/TransactionDetailsFragment.kt b/app/src/main/java/dev/spikeysanju/expensetracker/view/details/TransactionDetailsFragment.kt index b3d8ffc..52fba83 100644 --- a/app/src/main/java/dev/spikeysanju/expensetracker/view/details/TransactionDetailsFragment.kt +++ b/app/src/main/java/dev/spikeysanju/expensetracker/view/details/TransactionDetailsFragment.kt @@ -19,8 +19,8 @@ import dagger.hilt.android.AndroidEntryPoint import dev.spikeysanju.expensetracker.R import dev.spikeysanju.expensetracker.databinding.FragmentTransactionDetailsBinding import dev.spikeysanju.expensetracker.model.Transaction -import dev.spikeysanju.expensetracker.utils.DetailState import dev.spikeysanju.expensetracker.utils.saveBitmap +import dev.spikeysanju.expensetracker.utils.viewState.DetailState import dev.spikeysanju.expensetracker.view.base.BaseFragment import dev.spikeysanju.expensetracker.view.main.viewmodel.TransactionViewModel import indianRupee diff --git a/app/src/main/java/dev/spikeysanju/expensetracker/view/main/viewmodel/TransactionViewModel.kt b/app/src/main/java/dev/spikeysanju/expensetracker/view/main/viewmodel/TransactionViewModel.kt index b7d6450..85757af 100644 --- a/app/src/main/java/dev/spikeysanju/expensetracker/view/main/viewmodel/TransactionViewModel.kt +++ b/app/src/main/java/dev/spikeysanju/expensetracker/view/main/viewmodel/TransactionViewModel.kt @@ -8,8 +8,8 @@ import dagger.hilt.android.lifecycle.HiltViewModel import dev.spikeysanju.expensetracker.data.local.datastore.UIModeDataStore import dev.spikeysanju.expensetracker.model.Transaction import dev.spikeysanju.expensetracker.repo.TransactionRepo -import dev.spikeysanju.expensetracker.utils.DetailState -import dev.spikeysanju.expensetracker.utils.ViewState +import dev.spikeysanju.expensetracker.utils.viewState.DetailState +import dev.spikeysanju.expensetracker.utils.viewState.ViewState import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/app/src/main/res/layout/content_add_transaction_layout.xml b/app/src/main/res/layout/content_add_transaction_layout.xml index 3b184a3..50484e7 100644 --- a/app/src/main/res/layout/content_add_transaction_layout.xml +++ b/app/src/main/res/layout/content_add_transaction_layout.xml @@ -50,10 +50,11 @@ android:hint="@string/text_expense_transaction_type" app:boxBackgroundColor="@color/background"> - @@ -69,7 +70,7 @@ android:hint="@string/text_expense_tag" app:boxBackgroundColor="@color/background"> - diff --git a/app/src/main/res/layout/fragment_transaction_details.xml b/app/src/main/res/layout/fragment_transaction_details.xml index 0e88864..24655e1 100644 --- a/app/src/main/res/layout/fragment_transaction_details.xml +++ b/app/src/main/res/layout/fragment_transaction_details.xml @@ -25,6 +25,7 @@ android:text="@string/text_edit" android:textColor="@color/white" app:backgroundTint="@color/blue_500" + app:borderWidth="0dp" app:icon="@drawable/ic_edit" app:iconTint="@color/white" /> diff --git a/app/src/main/res/layout/item_transaction_layout.xml b/app/src/main/res/layout/item_transaction_layout.xml index cdb8088..49db6af 100644 --- a/app/src/main/res/layout/item_transaction_layout.xml +++ b/app/src/main/res/layout/item_transaction_layout.xml @@ -4,7 +4,9 @@ android:id="@+id/transactionCardView" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="@dimen/dimen_4" + android:layout_marginStart="@dimen/dimen_8" + android:layout_marginTop="@dimen/dimen_8" + android:layout_marginEnd="@dimen/dimen_8" app:cardBackgroundColor="@color/surface" app:cardElevation="@dimen/dimen_0"> diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index eca70cf..0000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index eca70cf..0000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index a571e60..0000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index 61da551..0000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index c41dd28..0000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png deleted file mode 100644 index db5080a..0000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 6dba46d..0000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index da31a87..0000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 15ac681..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index b216f2d..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index f25a419..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index e96783c..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index accd9d9..6926ae6 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -46,7 +46,7 @@ Expenso - Hello blank fragment Save Transaction UI Mode Total Income @@ -30,14 +29,12 @@ https://github.com/Spikeysanju/Expenso v%s (%d) Share as Text - Share as PDF Share as Image Delete Share \%s \nAmount: %s, \nTransaction-Type: %s, \nTag: %s, \nDate: %s, \nNote: %s, \nCreatedAt: %s \n\nVisit: https://github.com/Spikeysanju/Expenso - Ok No Transaction Yet! After your first transaction you will be able to view it here diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 3b4302d..a1f1a57 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -10,9 +10,9 @@ @color/black @color/blue_500 - ?colorSurface + @color/surface @bool/lightNavEnabled - ?colorSurface + @color/surface @bool/lightNavEnabled