Skip to content

Commit

Permalink
Merge branch 'develop' into fix5661
Browse files Browse the repository at this point in the history
  • Loading branch information
Harsh2118-hub authored Feb 1, 2025
2 parents 1c14e4f + 7b80e62 commit 0d8c29e
Show file tree
Hide file tree
Showing 8 changed files with 25 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import org.oppia.android.app.translation.AppLanguageResourceHandler
import org.oppia.android.util.extensions.getProto
import org.oppia.android.util.logging.CurrentAppScreenNameIntentDecorator.decorateWithScreenName
import org.oppia.android.util.profile.CurrentUserProfileIdIntentDecorator.decorateWithUserProfileId
import org.oppia.android.util.profile.CurrentUserProfileIdIntentDecorator.extractCurrentUserProfileId
import javax.inject.Inject

/** Argument key used to identify [ProfileListFragment] in the backstack. */
Expand Down Expand Up @@ -75,7 +76,7 @@ class AdministratorControlsActivity :
// TODO(#661): Change the default fragment in the right hand side to be EditAccount fragment in the case of multipane controls.
PROFILE_LIST_FRAGMENT
}
val selectedProfileId = args?.selectedProfileId ?: -1
val selectedProfileId = intent?.extractCurrentUserProfileId() ?: ProfileId.getDefaultInstance()

administratorControlsActivityPresenter.handleOnCreate(
extraControlsTitle,
Expand Down Expand Up @@ -107,7 +108,7 @@ class AdministratorControlsActivity :
startActivity(ProfileAndDeviceIdActivity.createIntent(this))
}

override fun loadProfileEdit(profileId: Int, profileName: String) {
override fun loadProfileEdit(profileId: ProfileId, profileName: String) {
lastLoadedFragment = PROFILE_EDIT_FRAGMENT
administratorControlsActivityPresenter.loadProfileEdit(profileId, profileName)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@ import org.oppia.android.app.administratorcontrols.appversion.AppVersionFragment
import org.oppia.android.app.administratorcontrols.learneranalytics.ProfileAndDeviceIdFragment
import org.oppia.android.app.drawer.NavigationDrawerFragment
import org.oppia.android.app.model.AdministratorControlActivityStateBundle
import org.oppia.android.app.model.ProfileId
import org.oppia.android.app.settings.profile.LoadProfileEditDeletionDialogListener
import org.oppia.android.app.settings.profile.ProfileEditFragment
import org.oppia.android.app.settings.profile.ProfileListFragment
import org.oppia.android.app.translation.AppLanguageResourceHandler
import org.oppia.android.databinding.AdministratorControlsActivityBinding
import org.oppia.android.util.extensions.putProto
import org.oppia.android.util.profile.CurrentUserProfileIdIntentDecorator.decorateWithUserProfileId
import javax.inject.Inject

/** The presenter for [AdministratorControlsActivity]. */
Expand All @@ -29,15 +31,15 @@ class AdministratorControlsActivityPresenter @Inject constructor(
private lateinit var binding: AdministratorControlsActivityBinding

private lateinit var lastLoadedFragment: String
private var selectedProfileId: Int = -1
private var selectedProfileId: ProfileId = ProfileId.getDefaultInstance()
private lateinit var extraControlsTitle: String
private var isProfileDeletionDialogVisible: Boolean = false

/** Initializes the [AdministratorControlsActivity] and sets the navigation drawer. */
fun handleOnCreate(
extraControlsTitle: String?,
lastLoadedFragment: String,
selectedProfileId: Int,
selectedProfileId: ProfileId,
isProfileDeletionDialogVisible: Boolean
) {
binding = DataBindingUtil.setContentView(
Expand Down Expand Up @@ -68,7 +70,7 @@ class AdministratorControlsActivityPresenter @Inject constructor(
PROFILE_EDIT_FRAGMENT -> selectedProfileId.let { profileId ->
if (extraControlsTitle != null) {
activity.loadProfileEdit(profileId = profileId, profileName = extraControlsTitle)
if (isProfileDeletionDialogVisible && profileId != 0) {
if (isProfileDeletionDialogVisible && profileId.internalId != 0) {
val fragment = activity.supportFragmentManager.findFragmentById(
R.id.administrator_controls_fragment_multipane_placeholder
)
Expand Down Expand Up @@ -142,13 +144,13 @@ class AdministratorControlsActivityPresenter @Inject constructor(
}

/** Loads the [ProfileEditFragment] when the user clicks on a profile in tablet multipane mode. */
fun loadProfileEdit(profileId: Int, profileName: String) {
fun loadProfileEdit(profileId: ProfileId, profileName: String) {
lastLoadedFragment = PROFILE_EDIT_FRAGMENT
selectedProfileId = profileId
extraControlsTitle = profileName
setExtraControlsTitle(extraControlsTitle)
setMultipaneBackButtonVisibility(View.VISIBLE)
val fragment = ProfileEditFragment.newInstance(profileId, isMultipane)
val fragment = ProfileEditFragment.newInstance(profileId.internalId, isMultipane)
activity.supportFragmentManager.beginTransaction().replace(
R.id.administrator_controls_fragment_multipane_placeholder,
fragment
Expand Down Expand Up @@ -209,9 +211,11 @@ class AdministratorControlsActivityPresenter @Inject constructor(
this@AdministratorControlsActivityPresenter.isProfileDeletionDialogVisible.let {
isProfileDeletionDialogVisible = it
}
selectedProfileId = this@AdministratorControlsActivityPresenter.selectedProfileId
}
.build()
outState.decorateWithUserProfileId(
this@AdministratorControlsActivityPresenter.selectedProfileId
)
outState.putProto(ADMINISTRATOR_CONTROLS_ACTIVITY_STATE_KEY, args)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ class AdministratorControlsFragmentPresenter @Inject constructor(
) {
private lateinit var binding: AdministratorControlsFragmentBinding
private lateinit var linearLayoutManager: LinearLayoutManager
private var internalProfileId: Int = -1
private lateinit var profileId: ProfileId

@Inject
Expand All @@ -56,8 +55,7 @@ class AdministratorControlsFragmentPresenter @Inject constructor(
/* attachToRoot= */ false
)

internalProfileId = activity.intent.extractCurrentUserProfileId().internalId
profileId = ProfileId.newBuilder().setInternalId(internalProfileId).build()
profileId = activity.intent.extractCurrentUserProfileId()
administratorControlsViewModel.setProfileId(profileId)

linearLayoutManager = LinearLayoutManager(activity.applicationContext)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package org.oppia.android.app.administratorcontrols

import org.oppia.android.app.model.ProfileId

/** Listener for when an activity should load [ProfileEditFragment]. */
interface LoadProfileEditListener {
/** Inflates [ProfileEditFragment] as part of a tablet mode a multipane fragment. */
fun loadProfileEdit(profileId: Int, profileName: String)
fun loadProfileEdit(profileId: ProfileId, profileName: String)
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package org.oppia.android.app.settings.profile

import org.oppia.android.app.model.ProfileId

/** Listener for when the activity should inflate [ProfileEditDeletionDialogFragment]. */
interface LoadProfileEditDeletionDialogListener {
/**
* Inflates [ProfileEditDeletionDialogFragment] for the configuration changes, i.e. rotating the device
* from landscape to portrait, and saves the state of the dialog.
*/
fun loadProfileEditDeletionDialog(internalProfileId: Int)
fun loadProfileEditDeletionDialog(profileId: ProfileId)
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import android.view.ViewGroup
import org.oppia.android.app.fragment.FragmentComponentImpl
import org.oppia.android.app.fragment.InjectableFragment
import org.oppia.android.app.model.ProfileEditFragmentArguments
import org.oppia.android.app.model.ProfileId
import org.oppia.android.util.extensions.getProto
import org.oppia.android.util.extensions.putProto
import javax.inject.Inject
Expand Down Expand Up @@ -74,7 +75,7 @@ class ProfileEditFragment :
profileEditFragmentPresenter.deleteProfile(internalProfileId)
}

override fun loadProfileEditDeletionDialog(internalProfileId: Int) {
profileEditFragmentPresenter.handleLoadProfileDeletionDialog(internalProfileId)
override fun loadProfileEditDeletionDialog(profileId: ProfileId) {
profileEditFragmentPresenter.handleLoadProfileDeletionDialog(profileId.internalId)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ class ProfileListFragmentPresenter @Inject constructor(
routeToProfileEditListener.routeToProfileEditActivity(profile.id.internalId)
} else {
val loadProfileEditListener = (activity as LoadProfileEditListener)
loadProfileEditListener.loadProfileEdit(profile.id.internalId, profile.name)
loadProfileEditListener.loadProfileEdit(profile.id, profile.name)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class AdministratorControlsFragmentTestActivity :

override fun loadAppVersion() {}

override fun loadProfileEdit(profileId: Int, profileName: String) {}
override fun loadProfileEdit(profileId: ProfileId, profileName: String) {}

override fun showLogoutDialog() {}

Expand Down

0 comments on commit 0d8c29e

Please sign in to comment.