Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/res/layout/activity_personal_id_work_history.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
android:textColor="@color/white"
android:textSize="15sp"
app:drawableTint="@color/white"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,13 @@ import android.view.MenuItem
import android.widget.Toast
import androidx.lifecycle.ViewModelProvider
import com.google.android.material.tabs.TabLayoutMediator
import org.commcare.activities.CommonBaseActivity
import org.commcare.activities.connect.viewmodel.PersonalIdWorkHistoryViewModel
import org.commcare.adapters.WorkHistoryViewPagerAdapter
import org.commcare.activities.CommonBaseActivity
import org.commcare.connect.network.connectId.PersonalIdApiErrorHandler
import org.commcare.dalvik.R
import org.commcare.dalvik.databinding.ActivityPersonalIdWorkHistoryBinding


class PersonalIdWorkHistoryActivity : CommonBaseActivity() {
private val binding: ActivityPersonalIdWorkHistoryBinding by lazy {
ActivityPersonalIdWorkHistoryBinding.inflate(layoutInflater)
Expand All @@ -24,17 +23,23 @@ class PersonalIdWorkHistoryActivity : CommonBaseActivity() {
private var userName: String? = null
private var profilePic: String? = null
private val titles = listOf(R.string.personalid_work_history_earned, R.string.personalid_work_history_pending)
private val icons = listOf(R.drawable.ic_personalid_work_history_earned, R.drawable.ic_personalid_work_history_pending)
private val icons =
listOf(R.drawable.ic_personalid_work_history_earned, R.drawable.ic_personalid_work_history_pending)

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
personalIdWorkHistoryViewModel = ViewModelProvider(
this, ViewModelProvider.AndroidViewModelFactory.getInstance(application)
this,
ViewModelProvider.AndroidViewModelFactory.getInstance(application)
)[PersonalIdWorkHistoryViewModel::class.java]
userName = personalIdWorkHistoryViewModel.userName
profilePic = personalIdWorkHistoryViewModel.profilePhoto
workHistoryViewPagerAdapter = WorkHistoryViewPagerAdapter(this,userName!!,profilePic ?: "")
workHistoryViewPagerAdapter = WorkHistoryViewPagerAdapter(
this,
userName!!,
profilePic ?: ""
)
observeWorkHistoryApiCall()
fetchWorkHistoryFromNetwork()
setUpUi()
Expand All @@ -47,10 +52,16 @@ class PersonalIdWorkHistoryActivity : CommonBaseActivity() {
setDisplayHomeAsUpEnabled(true)
}
binding.vpWorkHistory.adapter = workHistoryViewPagerAdapter
TabLayoutMediator(binding.tabWorkHistory, binding.vpWorkHistory) { tab, position ->
tab.text = getString(titles[position])
tab.setIcon(icons[position])
}.attach()

// Hide TabLayout when there's only one page
if (WorkHistoryViewPagerAdapter.totalPages == 1) {
binding.tabWorkHistory.visibility = android.view.View.GONE
} else {
TabLayoutMediator(binding.tabWorkHistory, binding.vpWorkHistory) { tab, position ->
tab.text = getString(titles[position])
tab.setIcon(icons[position])
}.attach()
}
}

private fun observeWorkHistoryApiCall() {
Expand Down
16 changes: 11 additions & 5 deletions app/src/org/commcare/adapters/WorkHistoryViewPagerAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,23 @@ import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter
import org.commcare.fragments.personalId.WorkHistoryEarnedFragment
import org.commcare.fragments.personalId.WorkHistoryPendingFragment
import org.commcare.personalId.PersonalIdFeatureFlagChecker
import org.commcare.personalId.PersonalIdFeatureFlagChecker.FeatureFlag.Companion.WORK_HISTORY_PENDING_TAB

class WorkHistoryViewPagerAdapter(
fragmentActivity: FragmentActivity,
private val username: String,
private val profilePic: String
) : FragmentStateAdapter(fragmentActivity) {

class WorkHistoryViewPagerAdapter(fragmentActivity: FragmentActivity, private val username: String,
private val profilePic: String) : FragmentStateAdapter(fragmentActivity) {

companion object {
const val TOTAL_PAGES = 2
val totalPages = if (PersonalIdFeatureFlagChecker.isFeatureEnabled(WORK_HISTORY_PENDING_TAB)) 2 else 1
const val EARNED_TAB_INDEX = 0
const val PENDING_TAB_INDEX = 1
}

override fun getItemCount(): Int = TOTAL_PAGES
override fun getItemCount(): Int = totalPages

override fun createFragment(position: Int): Fragment {
return when (position) {
EARNED_TAB_INDEX -> WorkHistoryEarnedFragment.newInstance(username, profilePic)
Expand Down
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With the push to general availability and getting rid of feature flags, are we going to be deleting this class in the near future?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@conroy-ricketts Great question, but not really, these are meant to just be short term flags just to help us with release planning or deployment of the feature. Currently it provides us an easy switch to turn the feature off if it's not ready to deploy in the upcoming release but we soon plan to hook this class to a server endpoint so that we can potentially release a feature out for a sub-set of users before releasing to all users.

Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ class PersonalIdFeatureFlagChecker {
annotation class FeatureFlag {
companion object {
const val WORK_HISTORY = "work_history"
const val WORK_HISTORY_PENDING_TAB = "work_history_pending_tab"
const val NOTIFICATIONS = "notifications"
}
}
Expand All @@ -20,8 +21,9 @@ class PersonalIdFeatureFlagChecker {

@JvmStatic
fun isFeatureEnabled(@FeatureFlag feature: String): Boolean {
return when(feature) {
FeatureFlag.WORK_HISTORY -> false
return when (feature) {
FeatureFlag.WORK_HISTORY -> true
FeatureFlag.WORK_HISTORY_PENDING_TAB -> false
FeatureFlag.NOTIFICATIONS -> false
else -> throw IllegalStateException("Unknown feature flag: $feature")
}
Expand Down
Loading