@@ -21,6 +21,10 @@ import androidx.lifecycle.ViewModelProvider
2121import androidx.lifecycle.lifecycleScope
2222import com.google.android.material.dialog.MaterialAlertDialogBuilder
2323import com.google.android.material.snackbar.Snackbar
24+ import com.gravatar.quickeditor.GravatarQuickEditor
25+ import com.gravatar.quickeditor.ui.editor.AuthenticationMethod
26+ import com.gravatar.quickeditor.ui.editor.AvatarPickerContentLayout
27+ import com.gravatar.quickeditor.ui.editor.GravatarQuickEditorParams
2428import com.gravatar.services.AvatarService
2529import com.gravatar.services.GravatarResult
2630import com.gravatar.types.Email
@@ -82,6 +86,7 @@ import org.wordpress.android.util.ToastUtils
8286import org.wordpress.android.util.ToastUtils.Duration.SHORT
8387import org.wordpress.android.util.WPMediaUtils
8488import org.wordpress.android.util.config.DomainManagementFeatureConfig
89+ import org.wordpress.android.util.config.GravatarQuickEditorFeatureConfig
8590import org.wordpress.android.util.config.QRCodeAuthFlowFeatureConfig
8691import org.wordpress.android.util.config.RecommendTheAppFeatureConfig
8792import org.wordpress.android.util.extensions.getColorFromAttribute
@@ -131,6 +136,9 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
131136 @Inject
132137 lateinit var qrCodeAuthFlowFeatureConfig: QRCodeAuthFlowFeatureConfig
133138
139+ @Inject
140+ lateinit var gravatarQuickEditorFeatureConfig: GravatarQuickEditorFeatureConfig
141+
134142 @Inject
135143 lateinit var jetpackBrandingUtils: JetpackBrandingUtils
136144
@@ -156,6 +164,7 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
156164
157165 private val shouldShowDomainButton
158166 get() = BuildConfig .IS_JETPACK_APP && domainManagementFeatureConfig.isEnabled() && accountStore.hasAccessToken()
167+
159168 override fun onCreate (savedInstanceState : Bundle ? ) {
160169 super .onCreate(savedInstanceState)
161170 (requireActivity().application as WordPress ).component().inject(this )
@@ -192,7 +201,21 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
192201
193202 val showPickerListener = OnClickListener {
194203 AnalyticsTracker .track(ME_GRAVATAR_TAPPED )
195- showPhotoPickerForGravatar()
204+ if (gravatarQuickEditorFeatureConfig.isEnabled()) {
205+ GravatarQuickEditor .show(
206+ fragment = this @MeFragment,
207+ gravatarQuickEditorParams = GravatarQuickEditorParams {
208+ email = Email (accountStore.account.email)
209+ avatarPickerContentLayout = AvatarPickerContentLayout .Horizontal
210+ },
211+ authenticationMethod = AuthenticationMethod .Bearer (accountStore.accessToken.orEmpty()),
212+ onAvatarSelected = {
213+ loadAvatar(null , true )
214+ },
215+ )
216+ } else {
217+ showPhotoPickerForGravatar()
218+ }
196219 }
197220 avatarContainer.setOnClickListener(showPickerListener)
198221 rowMyProfile.setOnClickListener {
@@ -473,9 +496,9 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
473496 isUpdatingGravatar = isUpdating
474497 }
475498
476- private fun MeFragmentBinding.loadAvatar (injectFilePath : String? ) {
499+ private fun MeFragmentBinding.loadAvatar (injectFilePath : String? , forceRefresh : Boolean = false ) {
477500 val newAvatarUploaded = ! injectFilePath.isNullOrEmpty()
478- val avatarUrl = meGravatarLoader.constructGravatarUrl(accountStore.account.avatarUrl)
501+ val avatarUrl = meGravatarLoader.constructGravatarUrl(accountStore.account.avatarUrl, forceRefresh )
479502 meGravatarLoader.load(
480503 newAvatarUploaded,
481504 avatarUrl,
0 commit comments