Skip to content

Commit 0d378f9

Browse files
Show Gravatar QuickEditor on Avatar tap
1 parent 4e75b4c commit 0d378f9

File tree

3 files changed

+47
-11
lines changed

3 files changed

+47
-11
lines changed

WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.kt

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ import androidx.lifecycle.ViewModelProvider
2121
import androidx.lifecycle.lifecycleScope
2222
import com.google.android.material.dialog.MaterialAlertDialogBuilder
2323
import 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
2428
import com.gravatar.services.AvatarService
2529
import com.gravatar.services.GravatarResult
2630
import com.gravatar.types.Email
@@ -82,6 +86,7 @@ import org.wordpress.android.util.ToastUtils
8286
import org.wordpress.android.util.ToastUtils.Duration.SHORT
8387
import org.wordpress.android.util.WPMediaUtils
8488
import org.wordpress.android.util.config.DomainManagementFeatureConfig
89+
import org.wordpress.android.util.config.GravatarQuickEditorFeatureConfig
8590
import org.wordpress.android.util.config.QRCodeAuthFlowFeatureConfig
8691
import org.wordpress.android.util.config.RecommendTheAppFeatureConfig
8792
import 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,

WordPress/src/main/java/org/wordpress/android/ui/main/utils/MeGravatarLoader.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@ class MeGravatarLoader @Inject constructor(
5656
}
5757
}
5858

59-
fun constructGravatarUrl(rawAvatarUrl: String): String {
59+
fun constructGravatarUrl(rawAvatarUrl: String, forceRefresh: Boolean = false): String {
6060
val avatarSz = resourseProvider.getDimensionPixelSize(R.dimen.avatar_sz_extra_small)
61-
return WPAvatarUtils.rewriteAvatarUrl(rawAvatarUrl, avatarSz)
61+
val cacheBuster = if (forceRefresh) System.currentTimeMillis().toString() else null
62+
return WPAvatarUtils.rewriteAvatarUrl(rawAvatarUrl, avatarSz, cacheBuster)
6263
}
6364
}

WordPress/src/main/java/org/wordpress/android/util/WPAvatarUtils.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class WPAvatarUtils {
2222
private WPAvatarUtils() {
2323
throw new IllegalStateException("Utility class");
2424
}
25+
2526
public static final DefaultAvatarOption DEFAULT_AVATAR = MysteryPerson.INSTANCE;
2627

2728
/**
@@ -35,7 +36,8 @@ private WPAvatarUtils() {
3536
* @return the fixed url
3637
*/
3738
public static String rewriteAvatarUrl(@NonNull final String imageUrl, int avatarSz,
38-
@Nullable DefaultAvatarOption defaultImage) {
39+
@Nullable DefaultAvatarOption defaultImage,
40+
@Nullable String cacheBuster) {
3941
if (TextUtils.isEmpty(imageUrl)) {
4042
return "";
4143
}
@@ -47,17 +49,27 @@ public static String rewriteAvatarUrl(@NonNull final String imageUrl, int avatar
4749
try {
4850
return new AvatarUrl(new URL(imageUrl),
4951
new AvatarQueryOptions.Builder()
50-
.setPreferredSize(avatarSz)
51-
.setDefaultAvatarOption(defaultImage)
52-
.build()
53-
).url(null).toString();
52+
.setPreferredSize(avatarSz)
53+
.setDefaultAvatarOption(defaultImage)
54+
.build()
55+
).url(cacheBuster).toString();
5456
} catch (MalformedURLException | IllegalArgumentException e) {
5557
return "";
5658
}
5759
}
5860
}
5961

6062
public static String rewriteAvatarUrl(@NonNull final String imageUrl, int avatarSz) {
61-
return rewriteAvatarUrl(imageUrl, avatarSz, DEFAULT_AVATAR);
63+
return rewriteAvatarUrl(imageUrl, avatarSz, DEFAULT_AVATAR, null);
64+
}
65+
66+
public static String rewriteAvatarUrl(@NonNull final String imageUrl, int avatarSz,
67+
@Nullable DefaultAvatarOption defaultImage) {
68+
return rewriteAvatarUrl(imageUrl, avatarSz, defaultImage, null);
69+
}
70+
71+
public static String rewriteAvatarUrl(@NonNull final String imageUrl, int avatarSz,
72+
@Nullable String cacheBuster) {
73+
return rewriteAvatarUrl(imageUrl, avatarSz, DEFAULT_AVATAR, cacheBuster);
6274
}
6375
}

0 commit comments

Comments
 (0)