diff --git a/WordPress/build.gradle b/WordPress/build.gradle
index 97e16732de51..4d2939073e66 100644
--- a/WordPress/build.gradle
+++ b/WordPress/build.gradle
@@ -163,6 +163,7 @@ android {
buildConfigField "boolean", "VOICE_TO_CONTENT", "false"
buildConfigField "boolean", "READER_FLOATING_BUTTON", "false"
buildConfigField "boolean", "ENABLE_SELF_HOSTED_USERS", "false"
+ buildConfigField "boolean", "GRAVATAR_QUICK_EDITOR", "true"
// Override these constants in jetpack product flavor to enable/ disable features
buildConfigField "boolean", "ENABLE_SITE_CREATION", "true"
@@ -406,6 +407,7 @@ dependencies {
}
implementation(libs.wordpress.persistent.edittext)
implementation("$gradle.ext.gravatarBinaryPath:${libs.versions.gravatar.get()}")
+ implementation("$gradle.ext.gravatarQuickEditorBinaryPath:${libs.versions.gravatar.get()}")
implementation(libs.google.play.app.update)
@@ -454,7 +456,7 @@ dependencies {
implementation(libs.apache.commons.text)
implementation(libs.airbnb.lottie.main)
implementation(libs.facebook.shimmer)
- implementation(libs.yalantis.ucrop) {
+ implementation(libs.automattic.ucrop) {
exclude group: 'androidx.core', module: 'core'
exclude group: 'androidx.constraintlayout', module: 'constraintlayout'
exclude group: 'androidx.appcompat', module: 'appcompat'
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/ActivityLauncher.java b/WordPress/src/main/java/org/wordpress/android/ui/ActivityLauncher.java
index 4ff218801c45..ef3442da21e2 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/ActivityLauncher.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/ActivityLauncher.java
@@ -95,7 +95,6 @@
import org.wordpress.android.ui.posts.PostsListActivity;
import org.wordpress.android.ui.posts.RemotePreviewLogicHelper.RemotePreviewType;
import org.wordpress.android.ui.prefs.AccountSettingsActivity;
-import org.wordpress.android.ui.prefs.AppPrefs;
import org.wordpress.android.ui.prefs.AppSettingsActivity;
import org.wordpress.android.ui.prefs.BlogPreferencesActivity;
import org.wordpress.android.ui.prefs.MyProfileActivity;
@@ -128,7 +127,6 @@
import org.wordpress.android.util.AppLog;
import org.wordpress.android.util.AppLog.T;
import org.wordpress.android.util.ToastUtils;
-import org.wordpress.android.util.ToastUtils.Duration;
import org.wordpress.android.util.UriWrapper;
import org.wordpress.android.util.UrlUtils;
import org.wordpress.android.util.WPActivityUtils;
@@ -1313,7 +1311,6 @@ public static void viewHelp(@NonNull Context context, @NonNull Origin origin, @N
}
public static void viewFeedbackForm(@NonNull Context context) {
- warnIfIdentityA8C(context);
AnalyticsTracker.track(Stat.APP_REVIEWS_FEEDBACK_SCREEN_OPENED);
Intent intent = new Intent(context, FeedbackFormActivity.class);
context.startActivity(intent);
@@ -1324,17 +1321,6 @@ public static void viewZendeskTickets(@NonNull Context context,
viewHelpInNewStack(context, Origin.ZENDESK_NOTIFICATION, selectedSite, null);
}
- /**
- * Warn A8C users that they can't create Zendesk tickets
- */
- @NonNull
- public static void warnIfIdentityA8C(@NonNull Context context) {
- String supportEmail = AppPrefs.getSupportEmail();
- if (supportEmail.contains("@automattic.com") || supportEmail.contains("@a8c.com")) {
- ToastUtils.showToast(context, R.string.support_warn_if_user_a8c, Duration.LONG);
- }
- }
-
public static void viewSSLCerts(Context context, String certificateString) {
Intent intent = new Intent(context, SSLCertsViewActivity.class);
intent.putExtra(SSLCertsViewActivity.CERT_DETAILS_KEYS, certificateString.replaceAll("\n", "
"));
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/accounts/HelpActivity.kt b/WordPress/src/main/java/org/wordpress/android/ui/accounts/HelpActivity.kt
index c598cd683094..373d3ebac9bc 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/accounts/HelpActivity.kt
+++ b/WordPress/src/main/java/org/wordpress/android/ui/accounts/HelpActivity.kt
@@ -173,7 +173,6 @@ class HelpActivity : LocaleAwareActivity() {
}
private fun launchSupportWidget() {
- ActivityLauncher.warnIfIdentityA8C(this)
val intent = SupportWebViewActivity.createIntent(
this,
originFromExtras,
@@ -184,7 +183,6 @@ class HelpActivity : LocaleAwareActivity() {
}
private fun createNewZendeskTicket() {
- ActivityLauncher.warnIfIdentityA8C(this)
zendeskHelper.createNewTicket(
this,
originFromExtras,
@@ -199,7 +197,6 @@ class HelpActivity : LocaleAwareActivity() {
}
private fun showZendeskTickets() {
- ActivityLauncher.warnIfIdentityA8C(this)
zendeskHelper.showAllTickets(
this,
originFromExtras,
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/accounts/signup/SignupEpilogueFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/accounts/signup/SignupEpilogueFragment.kt
index 55916f1e793c..db4275a1e781 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/accounts/signup/SignupEpilogueFragment.kt
+++ b/WordPress/src/main/java/org/wordpress/android/ui/accounts/signup/SignupEpilogueFragment.kt
@@ -30,6 +30,12 @@ import androidx.appcompat.view.ContextThemeWrapper
import androidx.core.widget.NestedScrollView
import androidx.lifecycle.lifecycleScope
import com.google.android.material.dialog.MaterialAlertDialogBuilder
+import com.gravatar.AvatarQueryOptions
+import com.gravatar.AvatarUrl
+import com.gravatar.quickeditor.GravatarQuickEditor
+import com.gravatar.quickeditor.ui.editor.AuthenticationMethod
+import com.gravatar.quickeditor.ui.editor.AvatarPickerContentLayout
+import com.gravatar.quickeditor.ui.editor.GravatarQuickEditorParams
import com.gravatar.services.AvatarService
import com.gravatar.services.GravatarResult
import com.gravatar.types.Email
@@ -70,6 +76,7 @@ import org.wordpress.android.util.StringUtils
import org.wordpress.android.util.ToastUtils
import org.wordpress.android.util.WPAvatarUtils
import org.wordpress.android.util.WPMediaUtils
+import org.wordpress.android.util.config.GravatarQuickEditorFeatureConfig
import org.wordpress.android.util.extensions.getColorFromAttribute
import org.wordpress.android.util.extensions.redirectContextClickToLongPressListener
import org.wordpress.android.util.image.ImageManager
@@ -134,6 +141,9 @@ class SignupEpilogueFragment : LoginBaseFormFragment(),
@Inject
lateinit var mAvatarService: AvatarService
+ @Inject
+ lateinit var gravatarQuickEditorFeatureConfig: GravatarQuickEditorFeatureConfig
+
@LayoutRes
override fun getContentLayout(): Int {
return 0 // no content layout; entire view is inflated in createMainView
@@ -163,7 +173,33 @@ class SignupEpilogueFragment : LoginBaseFormFragment(),
headerAvatarLayout.isEnabled = mIsEmailSignup
headerAvatarLayout.setOnClickListener {
mUnifiedLoginTracker.trackClick(UnifiedLoginTracker.Click.SELECT_AVATAR)
- mMediaPickerLauncher.showGravatarPicker(this@SignupEpilogueFragment)
+ if (gravatarQuickEditorFeatureConfig.isEnabled()) {
+ GravatarQuickEditor.show(
+ fragment = this,
+ gravatarQuickEditorParams = GravatarQuickEditorParams {
+ email = Email(mEmailAddress)
+ avatarPickerContentLayout = AvatarPickerContentLayout.Horizontal
+ },
+ authenticationMethod = AuthenticationMethod.Bearer(mAccount.accessToken.orEmpty()),
+ onAvatarSelected = {
+ mPhotoUrl = AvatarUrl(
+ email = Email(mEmailAddress),
+ avatarQueryOptions = AvatarQueryOptions {
+ preferredSize = resources.getDimensionPixelSize(R.dimen.avatar_sz_large)
+ }
+ ).url(cacheBuster = System.currentTimeMillis().toString()).toString()
+ mImageManager.loadIntoCircle(
+ mHeaderAvatar,
+ ImageType.AVATAR_WITHOUT_BACKGROUND,
+ mPhotoUrl
+ )
+ mHeaderAvatarAdd.visibility = View.GONE
+ mIsAvatarAdded = true
+ },
+ )
+ } else {
+ mMediaPickerLauncher.showGravatarPicker(this@SignupEpilogueFragment)
+ }
}
headerAvatarLayout.setOnLongClickListener {
ToastUtils.showToast(
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/barcodescanner/BarcodeScanner.kt b/WordPress/src/main/java/org/wordpress/android/ui/barcodescanner/BarcodeScanner.kt
index 22a5eadee31a..b0e7c399f240 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/barcodescanner/BarcodeScanner.kt
+++ b/WordPress/src/main/java/org/wordpress/android/ui/barcodescanner/BarcodeScanner.kt
@@ -22,6 +22,7 @@ import androidx.compose.ui.viewinterop.AndroidView
import androidx.core.content.ContextCompat
import androidx.lifecycle.compose.LocalLifecycleOwner
import org.wordpress.android.ui.compose.theme.AppThemeM2
+import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.camera.core.Preview as CameraPreview
@Composable
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.kt
index 93f9309539e7..01aaf4fb828e 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.kt
+++ b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.kt
@@ -21,6 +21,10 @@ import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
+import com.gravatar.quickeditor.GravatarQuickEditor
+import com.gravatar.quickeditor.ui.editor.AuthenticationMethod
+import com.gravatar.quickeditor.ui.editor.AvatarPickerContentLayout
+import com.gravatar.quickeditor.ui.editor.GravatarQuickEditorParams
import com.gravatar.services.AvatarService
import com.gravatar.services.GravatarResult
import com.gravatar.types.Email
@@ -82,6 +86,7 @@ import org.wordpress.android.util.ToastUtils
import org.wordpress.android.util.ToastUtils.Duration.SHORT
import org.wordpress.android.util.WPMediaUtils
import org.wordpress.android.util.config.DomainManagementFeatureConfig
+import org.wordpress.android.util.config.GravatarQuickEditorFeatureConfig
import org.wordpress.android.util.config.QRCodeAuthFlowFeatureConfig
import org.wordpress.android.util.config.RecommendTheAppFeatureConfig
import org.wordpress.android.util.extensions.getColorFromAttribute
@@ -131,6 +136,9 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
@Inject
lateinit var qrCodeAuthFlowFeatureConfig: QRCodeAuthFlowFeatureConfig
+ @Inject
+ lateinit var gravatarQuickEditorFeatureConfig: GravatarQuickEditorFeatureConfig
+
@Inject
lateinit var jetpackBrandingUtils: JetpackBrandingUtils
@@ -156,6 +164,7 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
private val shouldShowDomainButton
get() = BuildConfig.IS_JETPACK_APP && domainManagementFeatureConfig.isEnabled() && accountStore.hasAccessToken()
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
(requireActivity().application as WordPress).component().inject(this)
@@ -192,7 +201,21 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
val showPickerListener = OnClickListener {
AnalyticsTracker.track(ME_GRAVATAR_TAPPED)
- showPhotoPickerForGravatar()
+ if (gravatarQuickEditorFeatureConfig.isEnabled()) {
+ GravatarQuickEditor.show(
+ fragment = this@MeFragment,
+ gravatarQuickEditorParams = GravatarQuickEditorParams {
+ email = Email(accountStore.account.email)
+ avatarPickerContentLayout = AvatarPickerContentLayout.Horizontal
+ },
+ authenticationMethod = AuthenticationMethod.Bearer(accountStore.accessToken.orEmpty()),
+ onAvatarSelected = {
+ loadAvatar(null, true)
+ },
+ )
+ } else {
+ showPhotoPickerForGravatar()
+ }
}
avatarContainer.setOnClickListener(showPickerListener)
rowMyProfile.setOnClickListener {
@@ -470,11 +493,12 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
isUpdatingGravatar = isUpdating
}
- private fun MeFragmentBinding.loadAvatar(injectFilePath: String?) {
+ private fun MeFragmentBinding.loadAvatar(injectFilePath: String?, forceRefresh: Boolean = false) {
val newAvatarUploaded = !injectFilePath.isNullOrEmpty()
val avatarUrl = meGravatarLoader.constructGravatarUrl(accountStore.account.avatarUrl)
+ val newAvatarSelected = newAvatarUploaded || forceRefresh
meGravatarLoader.load(
- newAvatarUploaded,
+ newAvatarSelected,
avatarUrl,
injectFilePath,
meAvatar,
@@ -508,7 +532,7 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
resource: Drawable,
model: Any?
) {
- if (newAvatarUploaded && resource is BitmapDrawable) {
+ if (newAvatarSelected && resource is BitmapDrawable) {
var bitmap = resource.bitmap
// create a copy since the original bitmap may by automatically recycled
bitmap = bitmap.copy(bitmap.config, true)
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/main/utils/MeGravatarLoader.kt b/WordPress/src/main/java/org/wordpress/android/ui/main/utils/MeGravatarLoader.kt
index f4b6ad1464fc..3a25df553a77 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/main/utils/MeGravatarLoader.kt
+++ b/WordPress/src/main/java/org/wordpress/android/ui/main/utils/MeGravatarLoader.kt
@@ -20,14 +20,14 @@ class MeGravatarLoader @Inject constructor(
private val resourseProvider: ResourceProvider
) {
fun load(
- newAvatarUploaded: Boolean,
+ newAvatarSelected: Boolean,
avatarUrl: String,
injectFilePath: String?,
imageView: ImageView,
imageType: ImageType,
listener: RequestListener? = null
) {
- if (newAvatarUploaded) {
+ if (newAvatarSelected) {
// invalidate the specific gravatar entry from the bitmap cache. It will be updated via the injected
// request cache.
WordPress.getBitmapCache().removeSimilar(avatarUrl)
@@ -45,10 +45,12 @@ class MeGravatarLoader @Inject constructor(
imageManager.loadIntoCircle(
imageView,
imageType,
- if (newAvatarUploaded && injectFilePath != null) {
+ if (newAvatarSelected && injectFilePath != null) {
injectFilePath
} else {
- avatarUrl
+ // If new avatar selected we force refresh the avatar
+ val constructGravatarUrl = constructGravatarUrl(avatarUrl, newAvatarSelected)
+ constructGravatarUrl
},
listener,
appPrefsWrapper.avatarVersion
@@ -56,8 +58,9 @@ class MeGravatarLoader @Inject constructor(
}
}
- fun constructGravatarUrl(rawAvatarUrl: String): String {
+ fun constructGravatarUrl(rawAvatarUrl: String, forceRefresh: Boolean = false): String {
val avatarSz = resourseProvider.getDimensionPixelSize(R.dimen.avatar_sz_extra_small)
- return WPAvatarUtils.rewriteAvatarUrl(rawAvatarUrl, avatarSz)
+ val cacheBuster = if (forceRefresh) System.currentTimeMillis().toString() else null
+ return WPAvatarUtils.rewriteAvatarUrl(rawAvatarUrl, avatarSz, cacheBuster)
}
}
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/prefs/AppPrefs.java b/WordPress/src/main/java/org/wordpress/android/ui/prefs/AppPrefs.java
index df82fd7f5212..1f68f23d1bd9 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/prefs/AppPrefs.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/prefs/AppPrefs.java
@@ -894,7 +894,15 @@ public static void setSupportEmail(String email) {
}
public static String getSupportEmail() {
- return getString(DeletablePrefKey.SUPPORT_EMAIL);
+ String email = getString(DeletablePrefKey.SUPPORT_EMAIL);
+ // Zendesk can't create support tickets for Automattic email addresses
+ // with a staff member role (admin, agent, etc.), so insert an "+testing"
+ // alias into the email to make it work
+ if ((email.contains("@automattic.com") || email.contains("@a8c.com")) && !email.contains("+")) {
+ return email.replace("@", "+testing@");
+ } else {
+ return email;
+ }
}
public static void removeSupportEmail() {
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/views/compose/readingpreferences/ReadingPreferencesScreen.kt b/WordPress/src/main/java/org/wordpress/android/ui/reader/views/compose/readingpreferences/ReadingPreferencesScreen.kt
index 7d9b6b33e554..18ba8b875be8 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/reader/views/compose/readingpreferences/ReadingPreferencesScreen.kt
+++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/views/compose/readingpreferences/ReadingPreferencesScreen.kt
@@ -242,6 +242,7 @@ private fun ExperimentalBadge(
)
}
+
private fun getTitleTextStyle(
fontFamily: FontFamily,
fontSizeMultiplier: Float,
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/views/compose/tagsfeed/ReaderTagsFeed.kt b/WordPress/src/main/java/org/wordpress/android/ui/reader/views/compose/tagsfeed/ReaderTagsFeed.kt
index 79b8156345fe..c44d60475bc0 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/reader/views/compose/tagsfeed/ReaderTagsFeed.kt
+++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/views/compose/tagsfeed/ReaderTagsFeed.kt
@@ -136,7 +136,7 @@ private fun Loaded(uiState: UiState.Loaded) {
Column(
modifier = Modifier
- .animateItem(fadeInSpec = null, fadeOutSpec = null)
+ .animateItem()
.fillMaxWidth()
.padding(
top = Margin.Large.value,
diff --git a/WordPress/src/main/java/org/wordpress/android/util/WPAvatarUtils.java b/WordPress/src/main/java/org/wordpress/android/util/WPAvatarUtils.java
index 1c37575f6e4c..b2b11088bd09 100644
--- a/WordPress/src/main/java/org/wordpress/android/util/WPAvatarUtils.java
+++ b/WordPress/src/main/java/org/wordpress/android/util/WPAvatarUtils.java
@@ -22,6 +22,7 @@ public class WPAvatarUtils {
private WPAvatarUtils() {
throw new IllegalStateException("Utility class");
}
+
public static final DefaultAvatarOption DEFAULT_AVATAR = MysteryPerson.INSTANCE;
/**
@@ -35,7 +36,8 @@ private WPAvatarUtils() {
* @return the fixed url
*/
public static String rewriteAvatarUrl(@NonNull final String imageUrl, int avatarSz,
- @Nullable DefaultAvatarOption defaultImage) {
+ @Nullable DefaultAvatarOption defaultImage,
+ @Nullable String cacheBuster) {
if (TextUtils.isEmpty(imageUrl)) {
return "";
}
@@ -47,10 +49,10 @@ public static String rewriteAvatarUrl(@NonNull final String imageUrl, int avatar
try {
return new AvatarUrl(new URL(imageUrl),
new AvatarQueryOptions.Builder()
- .setPreferredSize(avatarSz)
- .setDefaultAvatarOption(defaultImage)
- .build()
- ).url(null).toString();
+ .setPreferredSize(avatarSz)
+ .setDefaultAvatarOption(defaultImage)
+ .build()
+ ).url(cacheBuster).toString();
} catch (MalformedURLException | IllegalArgumentException e) {
return "";
}
@@ -58,6 +60,16 @@ public static String rewriteAvatarUrl(@NonNull final String imageUrl, int avatar
}
public static String rewriteAvatarUrl(@NonNull final String imageUrl, int avatarSz) {
- return rewriteAvatarUrl(imageUrl, avatarSz, DEFAULT_AVATAR);
+ return rewriteAvatarUrl(imageUrl, avatarSz, DEFAULT_AVATAR, null);
+ }
+
+ public static String rewriteAvatarUrl(@NonNull final String imageUrl, int avatarSz,
+ @Nullable DefaultAvatarOption defaultImage) {
+ return rewriteAvatarUrl(imageUrl, avatarSz, defaultImage, null);
+ }
+
+ public static String rewriteAvatarUrl(@NonNull final String imageUrl, int avatarSz,
+ @Nullable String cacheBuster) {
+ return rewriteAvatarUrl(imageUrl, avatarSz, DEFAULT_AVATAR, cacheBuster);
}
}
diff --git a/WordPress/src/main/java/org/wordpress/android/util/config/GravatarQuickEditorFeatureConfig.kt b/WordPress/src/main/java/org/wordpress/android/util/config/GravatarQuickEditorFeatureConfig.kt
new file mode 100644
index 000000000000..05cf6284ebe5
--- /dev/null
+++ b/WordPress/src/main/java/org/wordpress/android/util/config/GravatarQuickEditorFeatureConfig.kt
@@ -0,0 +1,20 @@
+package org.wordpress.android.util.config
+
+import org.wordpress.android.BuildConfig
+import org.wordpress.android.annotation.Feature
+import javax.inject.Inject
+
+@Feature(GravatarQuickEditorFeatureConfig.GRAVATAR_QUICK_EDITOR_REMOTE_FIELD, true)
+class GravatarQuickEditorFeatureConfig @Inject constructor(appConfig: AppConfig) : FeatureConfig(
+ appConfig,
+ BuildConfig.GRAVATAR_QUICK_EDITOR,
+ GRAVATAR_QUICK_EDITOR_REMOTE_FIELD
+) {
+ override fun isEnabled(): Boolean {
+ return super.isEnabled() && BuildConfig.GRAVATAR_QUICK_EDITOR
+ }
+
+ companion object {
+ const val GRAVATAR_QUICK_EDITOR_REMOTE_FIELD = "gravatar_quick_editor"
+ }
+}
diff --git a/WordPress/src/main/res/values/strings.xml b/WordPress/src/main/res/values/strings.xml
index e89f49145bad..78401d0c00f3 100644
--- a/WordPress/src/main/res/values/strings.xml
+++ b/WordPress/src/main/res/values/strings.xml
@@ -1146,8 +1146,7 @@
Attachment already added
Unable to create temporary file
Add attachments
- If you need support, please get in touch using the \"Help & Support\" screen
- Automattic email accounts can\'t submit or view support tickets
+ If you need support, please get in touch using the \"Contact Support\" screen
Remove item %1$d
diff --git a/config/gradle/included_builds.gradle b/config/gradle/included_builds.gradle
index 5087f5888c7c..2be3ff78e2a2 100644
--- a/config/gradle/included_builds.gradle
+++ b/config/gradle/included_builds.gradle
@@ -10,6 +10,7 @@ gradle.ext.aztecAndroidGlideLoaderPath = "org.wordpress.aztec:glide-loader"
gradle.ext.aztecAndroidPicassoLoaderPath = "org.wordpress.aztec:picasso-loader"
gradle.ext.aboutAutomatticBinaryPath = "com.automattic:about"
gradle.ext.gravatarBinaryPath = "com.gravatar:gravatar"
+gradle.ext.gravatarQuickEditorBinaryPath = "com.gravatar:gravatar-quickeditor"
def localBuilds = new File("${rootDir}/local-builds.gradle")
if (localBuilds.exists()) {
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 163f4edf2cd2..be6ed06cf39c 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -104,7 +104,7 @@ wordpress-lint = '2.1.0'
wordpress-persistent-edittext = '1.0.2'
wordpress-rs = 'trunk-50f703a7f677084157d02f05d4d477d7eaf960b1'
wordpress-utils = '3.14.0'
-yalantis-ucrop = '2.2.9'
+automattic-ucrop = '2.2.10'
zendesk = '5.1.2'
[libraries]
@@ -260,7 +260,7 @@ wordpress-lint = { group = "org.wordpress", name = "lint", version.ref = "wordpr
wordpress-persistent-edittext = { group = "org.wordpress", name = "persistentedittext", version.ref = "wordpress-persistent-edittext" }
wordpress-rs-android = { group = "rs.wordpress.api", name = "android", version.ref = "wordpress-rs" }
wordpress-utils = { group = "org.wordpress", name = "utils", version.ref = "wordpress-utils" }
-yalantis-ucrop = { group = "com.github.yalantis", name = "ucrop", version.ref = "yalantis-ucrop" }
+automattic-ucrop = { group = "com.automattic", name = "ucrop", version.ref = "automattic-ucrop" }
zendesk-support = { group = "com.zendesk", name = "support", version.ref = "zendesk" }
[plugins]
diff --git a/libs/image-editor/build.gradle b/libs/image-editor/build.gradle
index a20cb77b731e..5420ba16b73a 100644
--- a/libs/image-editor/build.gradle
+++ b/libs/image-editor/build.gradle
@@ -56,7 +56,7 @@ dependencies {
implementation(libs.androidx.lifecycle.viewmodel.main)
implementation(libs.androidx.lifecycle.viewmodel.savedstate)
implementation(libs.androidx.lifecycle.livedata.core)
- implementation(libs.yalantis.ucrop) {
+ implementation(libs.automattic.ucrop) {
exclude group: 'com.squareup.okhttp3'
exclude group: 'androidx.core', module: 'core'
exclude group: 'androidx.constraintlayout', module: 'constraintlayout'