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'