diff --git a/WordPress/src/jetpack/res/drawable-night/ic_logo_plus_gravatar.xml b/WordPress/src/jetpack/res/drawable-night/ic_logo_plus_gravatar.xml new file mode 100644 index 000000000000..466aaf0e0ff3 --- /dev/null +++ b/WordPress/src/jetpack/res/drawable-night/ic_logo_plus_gravatar.xml @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/WordPress/src/jetpack/res/drawable/ic_logo_plus_gravatar.xml b/WordPress/src/jetpack/res/drawable/ic_logo_plus_gravatar.xml new file mode 100644 index 000000000000..d7d7e4bac4ac --- /dev/null +++ b/WordPress/src/jetpack/res/drawable/ic_logo_plus_gravatar.xml @@ -0,0 +1,28 @@ + + + + + + + + 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 0528ccae8684..347e700f21d3 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 @@ -200,6 +200,12 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener { rowSupport.setOnClickListener { ActivityLauncher.viewHelp(requireContext(), ME_SCREEN_HELP, viewModel.getSite(), null) } + learnMoreAtGravatar.setOnClickListener { + ActivityLauncher.openUrlExternal(activity, GRAVATAR_URL) + } + gravatarSyncView.gravatarSyncButton.setOnClickListener { + gravatarSyncView.gravatarSyncContainer.visibility = View.GONE + } if (BuildConfig.IS_JETPACK_APP) meAboutIcon.setImageResource(R.drawable.ic_jetpack_logo_white_24dp) @@ -691,6 +697,7 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener { if (event.success) { AnalyticsTracker.track(ME_GRAVATAR_UPLOADED) binding?.loadAvatar(event.filePath) + binding?.gravatarSyncView?.gravatarSyncContainer?.visibility = View.VISIBLE } else { ToastUtils.showToast( activity, @@ -709,6 +716,7 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener { companion object { private const val IS_DISCONNECTING = "IS_DISCONNECTING" private const val IS_UPDATING_GRAVATAR = "IS_UPDATING_GRAVATAR" + private const val GRAVATAR_URL = "https://www.gravatar.com"; fun newInstance(): MeFragment { return MeFragment() } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/prefs/MyProfileFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/prefs/MyProfileFragment.java index e9b9b1dd5181..d880322609a2 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/prefs/MyProfileFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/prefs/MyProfileFragment.java @@ -5,6 +5,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; import android.widget.TextView; import androidx.annotation.Nullable; @@ -37,6 +38,8 @@ public class MyProfileFragment extends Fragment implements TextInputDialogFragme private WPTextView mLastName; private WPTextView mDisplayName; private WPTextView mAboutMe; + private Button mGravatarSyncButton; + private View mGravatarSyncContainer; @Inject Dispatcher mDispatcher; @Inject AccountStore mAccountStore; @@ -85,6 +88,8 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa mLastName = rootView.findViewById(R.id.last_name); mDisplayName = rootView.findViewById(R.id.display_name); mAboutMe = rootView.findViewById(R.id.about_me); + mGravatarSyncButton = rootView.findViewById(R.id.gravatar_sync_button); + mGravatarSyncContainer = rootView.findViewById(R.id.gravatar_sync_container); rootView.findViewById(R.id.first_name_row).setOnClickListener( createOnClickListener( @@ -110,6 +115,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa getString(R.string.about_me_hint), mAboutMe, true)); + mGravatarSyncButton.setOnClickListener(v -> mGravatarSyncContainer.setVisibility(View.GONE)); return rootView; } @@ -174,6 +180,7 @@ private void updateMyProfileForLabel(TextView textView) { payload.params.put(restParamForTextView(textView), textView.getText().toString()); mDispatcher.dispatch(AccountActionBuilder.newPushSettingsAction(payload)); trackSettingsDidChange(restParamForTextView(textView)); + mGravatarSyncContainer.setVisibility(View.VISIBLE); } private void trackSettingsDidChange(String fieldName) { diff --git a/WordPress/src/main/res/drawable/bg_wordpress_gravatar_info.xml b/WordPress/src/main/res/drawable/bg_wordpress_gravatar_info.xml new file mode 100644 index 000000000000..f9b6826d3195 --- /dev/null +++ b/WordPress/src/main/res/drawable/bg_wordpress_gravatar_info.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/WordPress/src/main/res/drawable/bg_wordpress_gravatar_sync_info.xml b/WordPress/src/main/res/drawable/bg_wordpress_gravatar_sync_info.xml new file mode 100644 index 000000000000..0920b9a9a1af --- /dev/null +++ b/WordPress/src/main/res/drawable/bg_wordpress_gravatar_sync_info.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/WordPress/src/main/res/layout/gravatar_sync_info_banner.xml b/WordPress/src/main/res/layout/gravatar_sync_info_banner.xml new file mode 100644 index 000000000000..4a3d104edd90 --- /dev/null +++ b/WordPress/src/main/res/layout/gravatar_sync_info_banner.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/WordPress/src/main/res/layout/me_fragment.xml b/WordPress/src/main/res/layout/me_fragment.xml index 0661d0dc88b1..14a5ba98377e 100644 --- a/WordPress/src/main/res/layout/me_fragment.xml +++ b/WordPress/src/main/res/layout/me_fragment.xml @@ -238,7 +238,7 @@ android:id="@+id/me_design_system_settings" style="@style/MeListRowTextView" android:text="@string/preference_design_system" /> - + + + + + + + + + + + + + + + + + diff --git a/WordPress/src/main/res/layout/my_profile_fragment.xml b/WordPress/src/main/res/layout/my_profile_fragment.xml index c18f9810d3c1..5cf6c337bf60 100644 --- a/WordPress/src/main/res/layout/my_profile_fragment.xml +++ b/WordPress/src/main/res/layout/my_profile_fragment.xml @@ -1,79 +1,103 @@ - + android:layout_height="match_parent" + android:animateLayoutChanges="true"> - + android:layout_height="0dp" + android:layout_marginBottom="@dimen/margin_small" + app:layout_constraintBottom_toTopOf="@+id/gravatar_sync_container" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + + - - + + diff --git a/WordPress/src/main/res/values-night/colors.xml b/WordPress/src/main/res/values-night/colors.xml index 4fed9a9fe846..ff2b633e7bde 100644 --- a/WordPress/src/main/res/values-night/colors.xml +++ b/WordPress/src/main/res/values-night/colors.xml @@ -115,4 +115,8 @@ @color/black @color/white + + #1C1C1E + #2C2C2E + diff --git a/WordPress/src/main/res/values-night/styles.xml b/WordPress/src/main/res/values-night/styles.xml index 686c482b8cf9..54e8280b64c1 100644 --- a/WordPress/src/main/res/values-night/styles.xml +++ b/WordPress/src/main/res/values-night/styles.xml @@ -30,6 +30,9 @@ @color/background_dark_elevated ?attr/colorSurface + @color/gravatar_info_banner + @color/gravatar_sync_info_banner + @color/material_on_surface_emphasis_medium ?attr/colorPrimary @color/on_surface_emphasis_lowest_disabled diff --git a/WordPress/src/main/res/values/attrs.xml b/WordPress/src/main/res/values/attrs.xml index c6eec240f04c..4c496caa5e9c 100644 --- a/WordPress/src/main/res/values/attrs.xml +++ b/WordPress/src/main/res/values/attrs.xml @@ -22,6 +22,10 @@ + + + + diff --git a/WordPress/src/main/res/values/colors.xml b/WordPress/src/main/res/values/colors.xml index 808a85d7e5d7..4314ae121e4c 100644 --- a/WordPress/src/main/res/values/colors.xml +++ b/WordPress/src/main/res/values/colors.xml @@ -150,4 +150,8 @@ #DEDEDE + + #F2F2F7 + #2C2C2E + diff --git a/WordPress/src/main/res/values/dimens.xml b/WordPress/src/main/res/values/dimens.xml index 80496b1f890f..f67241180b4f 100644 --- a/WordPress/src/main/res/values/dimens.xml +++ b/WordPress/src/main/res/values/dimens.xml @@ -763,4 +763,5 @@ 4dp 24dp 4dp + diff --git a/WordPress/src/main/res/values/strings.xml b/WordPress/src/main/res/values/strings.xml index f7531852e2c6..dc4df0c3b0cc 100644 --- a/WordPress/src/main/res/values/strings.xml +++ b/WordPress/src/main/res/values/strings.xml @@ -2869,6 +2869,11 @@ You have active premium upgrades on your site. Please cancel your upgrades prior to deleting your site. Show purchases Checking purchases + Your WordPress.com profile is powered by Gravatar + Updating your avatar, name, and about info here will also update it across all sites that use Gravatar profiles. + What is Gravatar? + Updates might take some time to sync with your Gravatar profile. + Done Account Settings diff --git a/WordPress/src/main/res/values/styles.xml b/WordPress/src/main/res/values/styles.xml index 6166eb13334b..de43d8f78c93 100644 --- a/WordPress/src/main/res/values/styles.xml +++ b/WordPress/src/main/res/values/styles.xml @@ -49,6 +49,9 @@ @color/neutral_5 @color/blue_0 + @color/gravatar_info_banner + @color/gravatar_sync_info_banner + @color/wp_grey_lighten_30 @android:color/white diff --git a/WordPress/src/wordpress/res/drawable-night/ic_logo_plus_gravatar.xml b/WordPress/src/wordpress/res/drawable-night/ic_logo_plus_gravatar.xml new file mode 100644 index 000000000000..0bb208c0899c --- /dev/null +++ b/WordPress/src/wordpress/res/drawable-night/ic_logo_plus_gravatar.xml @@ -0,0 +1,24 @@ + + + + + + diff --git a/WordPress/src/wordpress/res/drawable/ic_logo_plus_gravatar.xml b/WordPress/src/wordpress/res/drawable/ic_logo_plus_gravatar.xml new file mode 100644 index 000000000000..ab99e681d54d --- /dev/null +++ b/WordPress/src/wordpress/res/drawable/ic_logo_plus_gravatar.xml @@ -0,0 +1,24 @@ + + + + + +