@@ -21,8 +21,13 @@ 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
30+ import com.gravatar.types.Email
2631import com.yalantis.ucrop.UCrop
2732import com.yalantis.ucrop.UCrop.Options
2833import com.yalantis.ucrop.UCropActivity
@@ -81,6 +86,7 @@ import org.wordpress.android.util.ToastUtils
8186import org.wordpress.android.util.ToastUtils.Duration.SHORT
8287import org.wordpress.android.util.WPMediaUtils
8388import org.wordpress.android.util.config.DomainManagementFeatureConfig
89+ import org.wordpress.android.util.config.GravatarQuickEditorFeatureConfig
8490import org.wordpress.android.util.config.QRCodeAuthFlowFeatureConfig
8591import org.wordpress.android.util.config.RecommendTheAppFeatureConfig
8692import org.wordpress.android.util.extensions.getColorFromAttribute
@@ -130,6 +136,9 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
130136 @Inject
131137 lateinit var qrCodeAuthFlowFeatureConfig: QRCodeAuthFlowFeatureConfig
132138
139+ @Inject
140+ lateinit var gravatarQuickEditorFeatureConfig: GravatarQuickEditorFeatureConfig
141+
133142 @Inject
134143 lateinit var jetpackBrandingUtils: JetpackBrandingUtils
135144
@@ -155,6 +164,7 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
155164
156165 private val shouldShowDomainButton
157166 get() = BuildConfig .IS_JETPACK_APP && domainManagementFeatureConfig.isEnabled() && accountStore.hasAccessToken()
167+
158168 override fun onCreate (savedInstanceState : Bundle ? ) {
159169 super .onCreate(savedInstanceState)
160170 (requireActivity().application as WordPress ).component().inject(this )
@@ -191,7 +201,21 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
191201
192202 val showPickerListener = OnClickListener {
193203 AnalyticsTracker .track(ME_GRAVATAR_TAPPED )
194- 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+ }
195219 }
196220 avatarContainer.setOnClickListener(showPickerListener)
197221 rowMyProfile.setOnClickListener {
@@ -472,9 +496,9 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
472496 isUpdatingGravatar = isUpdating
473497 }
474498
475- private fun MeFragmentBinding.loadAvatar (injectFilePath : String? ) {
499+ private fun MeFragmentBinding.loadAvatar (injectFilePath : String? , forceRefresh : Boolean = false ) {
476500 val newAvatarUploaded = ! injectFilePath.isNullOrEmpty()
477- val avatarUrl = meGravatarLoader.constructGravatarUrl(accountStore.account.avatarUrl)
501+ val avatarUrl = meGravatarLoader.constructGravatarUrl(accountStore.account.avatarUrl, forceRefresh )
478502 meGravatarLoader.load(
479503 newAvatarUploaded,
480504 avatarUrl,
@@ -687,7 +711,10 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
687711 avatarService.uploadCatching(file, accountStore.accessToken.orEmpty())
688712 when (result) {
689713 is GravatarResult .Failure -> {
690- AnalyticsTracker .track(ME_GRAVATAR_UPLOAD_EXCEPTION , mapOf (" error_type" to result.error.javaClass.name))
714+ AnalyticsTracker .track(
715+ ME_GRAVATAR_UPLOAD_EXCEPTION ,
716+ mapOf (" error_type" to result.error.javaClass.name)
717+ )
691718 EventBus .getDefault().post(GravatarUploadFinished (filePath, false ))
692719 }
693720
0 commit comments