- mid commit

This commit is contained in:
2023-08-31 19:57:37 +01:00
parent 7be038ef24
commit 1d0498fe47
9 changed files with 68 additions and 101 deletions

View File

@@ -1,5 +1,6 @@
apply plugin: 'com.android.application'
apply plugin: 'org.jetbrains.kotlin.android'
apply plugin: 'androidx.navigation.safeargs'
def relStorePassword = System.getenv("RELEASE_STORE_PASSWORD")
def relKeyPassword = System.getenv("RELEASE_KEY_PASSWORD")

View File

@@ -119,13 +119,11 @@ class FragmentAddItem : BaseFragment<SubmissionViewModel>(R.layout.fragment_add_
}
private fun setupViewAfterViewCreated() {
// val id = arguments?.let { FragmentAddItemArgs.fromBundle(it).id)
val id = arguments?.let { FragmentAddItemArgs.fromBundle(it).shiftId }
id = arguments?.getLong(ID)
wholeView.hide()
val title = when (arguments?.containsKey(ID)) {
true -> {
val title = id?.let {
// Since we are editing a shift lets load the shift data into the views
viewModel.getCurrentShift(arguments!!.getLong(ID))?.run {
mLocationEditText.setText(description)
@@ -167,13 +165,8 @@ class FragmentAddItem : BaseFragment<SubmissionViewModel>(R.layout.fragment_add_
calculateTotalPay()
}
// Return title
getString(R.string.edit_item_title)
}
else -> getString(R.string.add_item_title)
}
} ?: getString(R.string.add_item_title)
setTitle(title)
}
@@ -267,6 +260,7 @@ class FragmentAddItem : BaseFragment<SubmissionViewModel>(R.layout.fragment_add_
StringBuilder().append(mDuration).append(" hours").toString()
mDuration!! * mPayRate
}
ShiftType.PIECE -> {
(mUnits ?: 0f) * mPayRate
}

View File

@@ -13,6 +13,7 @@ import com.appttude.h_mal.farmr.model.ShiftType
import com.appttude.h_mal.farmr.utils.CURRENCY
import com.appttude.h_mal.farmr.utils.formatAsCurrencyString
import com.appttude.h_mal.farmr.utils.hide
import com.appttude.h_mal.farmr.utils.navigateTo
import com.appttude.h_mal.farmr.utils.navigateToFragment
import com.appttude.h_mal.farmr.utils.show
import com.appttude.h_mal.farmr.viewmodel.InfoViewModel
@@ -52,11 +53,14 @@ class FurtherInfoFragment : BaseFragment<InfoViewModel>(R.layout.fragment_futher
hourlyDetailHolder = view.findViewById(R.id.details_hourly_details)
unitsHolder = view.findViewById(R.id.details_units_holder)
val id = FurtherInfoFragmentArgs.fromBundle(requireArguments()).shiftId
editButton.setOnClickListener {
navigateToFragment(FragmentAddItem(), name = "additem", bundle = arguments!!)
val nav = FragmentAddItemDirections.furtherInfoToAddItem(id)
navigateTo(nav)
}
viewModel.retrieveData(arguments)
viewModel.retrieveData(id)
}
override fun onSuccess(data: Any?) {

View File

@@ -7,13 +7,16 @@ import android.os.Bundle
import android.view.Menu
import androidx.appcompat.widget.Toolbar
import androidx.core.app.ActivityCompat
import androidx.navigation.fragment.NavHostFragment
import com.appttude.h_mal.farmr.R
import com.appttude.h_mal.farmr.base.BackPressedListener
import com.appttude.h_mal.farmr.base.BaseActivity
import com.appttude.h_mal.farmr.utils.goBack
import com.appttude.h_mal.farmr.utils.popBackStack
class MainActivity : BaseActivity() {
private lateinit var toolbar: Toolbar
private lateinit var navHost: NavHostFragment
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -21,8 +24,10 @@ class MainActivity : BaseActivity() {
toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
val fragmentTransaction = supportFragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.container, FragmentMain()).addToBackStack("main").commit()
navHost = supportFragmentManager
.findFragmentById(R.id.container) as NavHostFragment
val navController = navHost.navController
navController.setGraph(R.navigation.shift_navigation)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
@@ -37,8 +42,7 @@ class MainActivity : BaseActivity() {
currentFragment.onBackPressed()
} else {
if (supportFragmentManager.backStackEntryCount > 1) {
// Todo: go back
// goBack()
navHost.goBack()
} else {
super.onBackPressed()
}

View File

@@ -15,6 +15,7 @@ import com.appttude.h_mal.farmr.data.legacydb.ShiftObject
import com.appttude.h_mal.farmr.model.ShiftType
import com.appttude.h_mal.farmr.utils.ID
import com.appttude.h_mal.farmr.utils.generateView
import com.appttude.h_mal.farmr.utils.navigateTo
import com.appttude.h_mal.farmr.utils.navigateToFragment
class ShiftListAdapter(
@@ -71,27 +72,16 @@ class ShiftListAdapter(
}
}
val b: Bundle = Bundle()
b.putLong(ID, data.id)
view.setOnClickListener {
// Navigate to further info
fragment.navigateToFragment(
FurtherInfoFragment(),
bundle = b,
name = "furtherinfo"
)
// val nav = FragmentMainDirections.mainToFurtherInfo(data.id)
// fragment.navigateTo(nav)
val nav = FurtherInfoFragmentDirections.mainToFurtherInfo(data.id)
fragment.navigateTo(nav)
}
editView.setOnClickListener {
// Navigate to edit
fragment.navigateToFragment(
FragmentAddItem(),
bundle = b,
name = "additem"
)
// val nav = FragmentMainDirections.mainToAddItem(data.id)
// fragment.navigateTo(nav)
val nav = FragmentAddItemDirections.mainToAddItem(data.id)
fragment.navigateTo(nav)
}
view.setOnLongClickListener {
AlertDialog.Builder(it.context)

View File

@@ -10,13 +10,7 @@ class InfoViewModel(
repository: Repository
) : ShiftViewModel(repository) {
fun retrieveData(bundle: Bundle?) {
val id = bundle?.getLong(ID)
if (id == null) {
onError("Failed to retrieve shift")
return
}
fun retrieveData(id: Long) {
val shift = getCurrentShift(id)
if (shift == null) {
onError("Failed to retrieve shift")

View File

@@ -32,14 +32,16 @@
</com.google.android.material.appbar.AppBarLayout>
<FrameLayout
<androidx.fragment.app.FragmentContainerView
android:layout_below="@id/appbar"
android:layout_width="0dp"
android:layout_height="0dp"
android:name="androidx.navigation.fragment.NavHostFragment"
app:layout_constraintTop_toBottomOf="@id/appbar"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:id="@+id/container">
</FrameLayout>
android:id="@+id/container"
tools:layout="@layout/fragment_main">
</androidx.fragment.app.FragmentContainerView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -17,12 +17,10 @@ class InfoViewModelTest : ShiftViewModelTest<InfoViewModel>() {
// Arrange
val id = anyLong()
val shift = mockk<ShiftObject>()
val bundle = mockk<Bundle>()
// Act
every { repository.readSingleShiftFromDatabase(id) }.returns(shift)
every { bundle.getLong(ID) }.returns(id)
viewModel.retrieveData(bundle)
viewModel.retrieveData(id)
// Assert
assertIs<ShiftObject>(retrieveCurrentData())
@@ -32,35 +30,14 @@ class InfoViewModelTest : ShiftViewModelTest<InfoViewModel>() {
)
}
@Test
fun retrieveData_noValidBundleAndId_unsuccessfulRetrieval() {
// Arrange
val id = anyLong()
val shift = mockk<ShiftObject>()
val bundle = mockk<Bundle>()
// Act
every { repository.readSingleShiftFromDatabase(id) }.returns(shift)
every { bundle.getLong(ID) }.returns(id)
viewModel.retrieveData(null)
// Assert
assertEquals(
retrieveCurrentError(),
"Failed to retrieve shift"
)
}
@Test
fun retrieveData_validBundleNoShift_successfulRetrieval() {
// Arrange
val id = anyLong()
val bundle = mockk<Bundle>()
// Act
every { repository.readSingleShiftFromDatabase(id) }.returns(null)
every { bundle.getLong(ID) }.returns(id)
viewModel.retrieveData(bundle)
viewModel.retrieveData(id)
// Assert
assertEquals(

View File

@@ -13,6 +13,7 @@ buildscript {
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}
dependencies {
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$NAVIGATION_VERSION"
classpath "com.android.tools.build:gradle:$GRADLE_PLUGIN_VERSION"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$KOTLIN_VERSION"
classpath "com.autonomousapps:dependency-analysis-gradle-plugin:$GRADLE_ANALYZE_VERSION"