From c740dd3f5edf2178827865cec43664701da00729 Mon Sep 17 00:00:00 2001 From: Raymond Jacobson Date: Mon, 20 Mar 2023 16:40:54 -0700 Subject: [PATCH] [C-2316] Add remote config for all oauth verification (#3052) --- .../src/services/remote-config/defaults.ts | 4 ++ .../services/remote-config/feature-flags.ts | 2 - .../src/services/remote-config/types.ts | 16 +++++++ .../AccountVerificationScreen.tsx | 48 +++++++++++-------- .../mobile/src/screens/signon/ProfileAuto.tsx | 46 ++++++++++-------- .../components/social-proof/SocialProof.tsx | 31 ++++++------ .../components/desktop/VerificationModal.tsx | 34 +++++++------ .../components/mobile/VerificationPage.tsx | 35 +++++++------- .../components/CompleteProfileWithSocial.tsx | 32 +++++++------ .../pages/sign-on/components/ProfilePage.tsx | 9 +--- .../sign-on/components/mobile/SignOnPage.tsx | 6 +-- 11 files changed, 152 insertions(+), 111 deletions(-) diff --git a/apps/audius-client/packages/common/src/services/remote-config/defaults.ts b/apps/audius-client/packages/common/src/services/remote-config/defaults.ts index e7e96cf0495..f4a1f371c3e 100644 --- a/apps/audius-client/packages/common/src/services/remote-config/defaults.ts +++ b/apps/audius-client/packages/common/src/services/remote-config/defaults.ts @@ -87,6 +87,10 @@ export const remoteConfigBooleanDefaults: { } = { [BooleanKeys.DISPLAY_INSTAGRAM_VERIFICATION]: true, [BooleanKeys.DISPLAY_INSTAGRAM_VERIFICATION_WEB_AND_DESKTOP]: true, + [BooleanKeys.DISPLAY_TWITTER_VERIFICATION]: true, + [BooleanKeys.DISPLAY_TWITTER_VERIFICATION_WEB_AND_DESKTOP]: true, + [BooleanKeys.DISPLAY_TIKTOK_VERIFICATION]: true, + [BooleanKeys.DISPLAY_TIKTOK_VERIFICATION_WEB_AND_DESKTOP]: true, [BooleanKeys.DISPLAY_WEB3_PROVIDER_WALLET_CONNECT]: true, [BooleanKeys.DISPLAY_WEB3_PROVIDER_BITSKI]: true, [BooleanKeys.DISPLAY_WEB3_PROVIDER_WALLET_LINK]: true, diff --git a/apps/audius-client/packages/common/src/services/remote-config/feature-flags.ts b/apps/audius-client/packages/common/src/services/remote-config/feature-flags.ts index 9bdafeccdb2..9c81994f652 100644 --- a/apps/audius-client/packages/common/src/services/remote-config/feature-flags.ts +++ b/apps/audius-client/packages/common/src/services/remote-config/feature-flags.ts @@ -29,7 +29,6 @@ export enum FeatureFlags { SHARE_TO_STORY = 'share_to_story_2', READ_SUBSCRIBERS_FROM_DISCOVERY_ENABLED = 'read_subscribers_from_discovery_enabled', MOBILE_WALLET_CONNECT = 'mobile_wallet_connect_final', - COMPLETE_PROFILE_WITH_TIKTOK = 'complete_profile_with_tiktok_2', VERIFY_HANDLE_WITH_TIKTOK = 'verify_handle_with_tiktok', AUDIO_TRANSACTIONS_HISTORY = 'audio_transactions_history', RATE_CTA_ENABLED = 'rate_cta_enabled_v2', @@ -90,7 +89,6 @@ export const flagDefaults: FlagDefaults = { [FeatureFlags.SHARE_TO_STORY]: false, [FeatureFlags.READ_SUBSCRIBERS_FROM_DISCOVERY_ENABLED]: false, [FeatureFlags.MOBILE_WALLET_CONNECT]: false, - [FeatureFlags.COMPLETE_PROFILE_WITH_TIKTOK]: false, [FeatureFlags.VERIFY_HANDLE_WITH_TIKTOK]: false, [FeatureFlags.AUDIO_TRANSACTIONS_HISTORY]: false, [FeatureFlags.RATE_CTA_ENABLED]: false, diff --git a/apps/audius-client/packages/common/src/services/remote-config/types.ts b/apps/audius-client/packages/common/src/services/remote-config/types.ts index 33c33f22ceb..390027feaaf 100644 --- a/apps/audius-client/packages/common/src/services/remote-config/types.ts +++ b/apps/audius-client/packages/common/src/services/remote-config/types.ts @@ -181,6 +181,22 @@ export enum BooleanKeys { * Boolean to show instagram verification on web + desktop. */ DISPLAY_INSTAGRAM_VERIFICATION_WEB_AND_DESKTOP = 'DISPLAY_INSTAGRAM_VERIFICATION_WEB_AND_DESKTOP', + /** + * Boolean to show twitter verification on mobile. + */ + DISPLAY_TWITTER_VERIFICATION = 'DISPLAY_TWITTER_VERIFICATION', + /** + * Boolean to show twitter verification on web + desktop. + */ + DISPLAY_TWITTER_VERIFICATION_WEB_AND_DESKTOP = 'DISPLAY_TWITTER_VERIFICATION_WEB_AND_DESKTOP', + /** + * Boolean to show twitter verification on mobile. + */ + DISPLAY_TIKTOK_VERIFICATION = 'DISPLAY_TIKTOK_VERIFICATION', + /** + * Boolean to show twitter verification on web + desktop. + */ + DISPLAY_TIKTOK_VERIFICATION_WEB_AND_DESKTOP = 'DISPLAY_TIKTOK_VERIFICATION_WEB_AND_DESKTOP', /** * Boolean to skip the rollover nodes sanity check. diff --git a/apps/audius-client/packages/mobile/src/screens/settings-screen/AccountVerificationScreen.tsx b/apps/audius-client/packages/mobile/src/screens/settings-screen/AccountVerificationScreen.tsx index 99f46cd329b..62b8f76e659 100644 --- a/apps/audius-client/packages/mobile/src/screens/settings-screen/AccountVerificationScreen.tsx +++ b/apps/audius-client/packages/mobile/src/screens/settings-screen/AccountVerificationScreen.tsx @@ -1,6 +1,6 @@ import { useCallback, useEffect, useState } from 'react' -import { Status, accountSelectors, FeatureFlags } from '@audius/common' +import { Status, accountSelectors, BooleanKeys } from '@audius/common' import * as signOnActions from 'common/store/pages/signon/actions' import { getHandleField } from 'common/store/pages/signon/selectors' import type { EditableField } from 'common/store/pages/signon/types' @@ -20,7 +20,7 @@ import { TikTokAuthButton } from 'app/components/tiktok-auth' import { ProfilePicture } from 'app/components/user' import UserBadges from 'app/components/user-badges' import { useNavigation } from 'app/hooks/useNavigation' -import { useFeatureFlag } from 'app/hooks/useRemoteConfig' +import { useRemoteVar } from 'app/hooks/useRemoteConfig' import { track, make } from 'app/services/analytics' import * as oauthActions from 'app/store/oauth/actions' import { @@ -126,9 +126,13 @@ export const AccountVerificationScreen = () => { const tikTokError = useSelector(getTikTokError) const abandoned = useSelector(getAbandoned) - const { isEnabled: isTikTokEnabled } = useFeatureFlag( - FeatureFlags.COMPLETE_PROFILE_WITH_TIKTOK + const isTwitterEnabled = useRemoteVar( + BooleanKeys.DISPLAY_TWITTER_VERIFICATION ) + const isInstagramEnabled = useRemoteVar( + BooleanKeys.DISPLAY_INSTAGRAM_VERIFICATION + ) + const isTikTokEnabled = useRemoteVar(BooleanKeys.DISPLAY_TIKTOK_VERIFICATION) const handleField: EditableField = useSelector(getHandleField) @@ -297,21 +301,27 @@ export const AccountVerificationScreen = () => { {messages.gettingVerified} {messages.handleMatch} - - + + {isTwitterEnabled ? ( + + ) : null} + + {isInstagramEnabled ? ( + + ) : null} {isTikTokEnabled ? ( { const abandoned = useSelector(getAbandoned) const handleField: EditableField = useSelector(getHandleField) const emailField: EditableField = useSelector(getEmailField) - const { isEnabled: isTikTokEnabled } = useFeatureFlag( - FeatureFlags.COMPLETE_PROFILE_WITH_TIKTOK + const isTwitterEnabled = useRemoteVar( + BooleanKeys.DISPLAY_TWITTER_VERIFICATION ) + const isInstagramEnabled = useRemoteVar( + BooleanKeys.DISPLAY_INSTAGRAM_VERIFICATION + ) + const isTikTokEnabled = useRemoteVar(BooleanKeys.DISPLAY_TIKTOK_VERIFICATION) const [isLoading, setIsLoading] = useState(false) const [hasNavigatedAway, setHasNavigatedAway] = useState(false) const [didValidateHandle, setDidValidateHandle] = useState(false) @@ -435,21 +439,25 @@ const ProfileAuto = ({ navigation }: ProfileAutoProps) => { - - + {isTwitterEnabled ? ( + + ) : null} + {isInstagramEnabled ? ( + + ) : null} {isTikTokEnabled ? ( { - const displayInstagram = useRemoteVar( + const isTwitterEnabled = useRemoteVar( + BooleanKeys.DISPLAY_TWITTER_VERIFICATION_WEB_AND_DESKTOP + ) + const isInstagramEnabled = useRemoteVar( BooleanKeys.DISPLAY_INSTAGRAM_VERIFICATION_WEB_AND_DESKTOP ) - - const { isEnabled: isTikTokEnabled } = useFlag( - FeatureFlags.COMPLETE_PROFILE_WITH_TIKTOK + const isTikTokEnabled = useRemoteVar( + BooleanKeys.DISPLAY_TIKTOK_VERIFICATION_WEB_AND_DESKTOP ) const record = useRecord() @@ -103,13 +104,15 @@ const VerifyBody = ({

{messages.description}

- onFailure('twitter', error)} - onClick={handleClickTwitter} - text={messages.twitterConfirm} - /> - {displayInstagram && ( + {isTwitterEnabled ? ( + onFailure('twitter', error)} + onClick={handleClickTwitter} + text={messages.twitterConfirm} + /> + ) : null} + {isInstagramEnabled && ( { - const displayInstagram = useRemoteVar( + const isTwitterEnabled = useRemoteVar( + BooleanKeys.DISPLAY_TWITTER_VERIFICATION_WEB_AND_DESKTOP + ) + const isInstagramEnabled = useRemoteVar( BooleanKeys.DISPLAY_INSTAGRAM_VERIFICATION_WEB_AND_DESKTOP ) - - const { isEnabled: isTikTokEnabled } = useFlag( - FeatureFlags.COMPLETE_PROFILE_WITH_TIKTOK + const isTikTokEnabled = useRemoteVar( + BooleanKeys.DISPLAY_TIKTOK_VERIFICATION_WEB_AND_DESKTOP ) const record = useRecord() const { handle, onClick } = props @@ -106,15 +107,18 @@ const VerifyBody = (props: VerifyBodyProps) => {

{messages.description}

{messages.warning}
- - {displayInstagram ? ( + {isTwitterEnabled ? ( + + ) : null} + + {isInstagramEnabled ? ( { - const displayInstagram = useRemoteVar( - BooleanKeys.DISPLAY_INSTAGRAM_VERIFICATION + const isTwitterEnabled = useRemoteVar( + BooleanKeys.DISPLAY_TWITTER_VERIFICATION_WEB_AND_DESKTOP ) - - const { isEnabled: isTikTokEnabled } = useFlag( - FeatureFlags.COMPLETE_PROFILE_WITH_TIKTOK + const isInstagramEnabled = useRemoteVar( + BooleanKeys.DISPLAY_INSTAGRAM_VERIFICATION_WEB_AND_DESKTOP + ) + const isTikTokEnabled = useRemoteVar( + BooleanKeys.DISPLAY_TIKTOK_VERIFICATION_WEB_AND_DESKTOP ) const record = useRecord() @@ -109,15 +110,17 @@ const VerifyBody = (props: VerifyBodyProps) => {
{messages.instructions}
{messages.warning}
- - {displayInstagram ? ( + {isTwitterEnabled ? ( + + ) : null} + {isInstagramEnabled ? ( { const { - displayInstagramRemoteVarKey = BooleanKeys.DISPLAY_INSTAGRAM_VERIFICATION_WEB_AND_DESKTOP, initial, isLoading, isMobile, @@ -67,10 +64,15 @@ const CompleteProfileWithSocial = (props: CompleteProfileWithSocialProps) => { onTwitterStart, showCompleteProfileWithSocial } = props - const { isEnabled: isTikTokEnabled } = useFlag( - FeatureFlags.COMPLETE_PROFILE_WITH_TIKTOK + const isTwitterEnabled = useRemoteVar( + BooleanKeys.DISPLAY_TWITTER_VERIFICATION_WEB_AND_DESKTOP + ) + const isInstagramEnabled = useRemoteVar( + BooleanKeys.DISPLAY_INSTAGRAM_VERIFICATION_WEB_AND_DESKTOP + ) + const isTikTokEnabled = useRemoteVar( + BooleanKeys.DISPLAY_TIKTOK_VERIFICATION_WEB_AND_DESKTOP ) - const displayInstagram = useRemoteVar(displayInstagramRemoteVarKey) const handleClickTwitter = useCallback(() => { onTwitterStart() @@ -147,13 +149,15 @@ const CompleteProfileWithSocial = (props: CompleteProfileWithSocialProps) => {
- - {displayInstagram && ( + {isTwitterEnabled ? ( + + ) : null} + {isInstagramEnabled && ( & - Pick +> const ProfilePage = (props: ProfilePageProps) => { const { - displayInstagramRemoteVarKey, handle, isVerified, name, @@ -235,7 +231,6 @@ const ProfilePage = (props: ProfilePageProps) => {
{showCompleteProfileWithSocial ? (