Phased rollout by country code; starting w/ desktop.stories remote flag
This commit is contained in:
parent
e14c3241c5
commit
1c89168301
10 changed files with 318 additions and 25 deletions
|
@ -5,17 +5,19 @@ import { createSelector } from 'reselect';
|
|||
import { isInteger } from 'lodash';
|
||||
|
||||
import { ITEM_NAME as UNIVERSAL_EXPIRE_TIMER_ITEM } from '../../util/universalExpireTimer';
|
||||
import { innerIsBucketValueEnabled } from '../../RemoteConfig';
|
||||
import type { ConfigKeyType, ConfigMapType } from '../../RemoteConfig';
|
||||
|
||||
import type { StateType } from '../reducer';
|
||||
import type { ItemsStateType } from '../ducks/items';
|
||||
import type {
|
||||
ConversationColorType,
|
||||
CustomColorType,
|
||||
} from '../../types/Colors';
|
||||
import type { UUIDStringType } from '../../types/UUID';
|
||||
import { DEFAULT_CONVERSATION_COLOR } from '../../types/Colors';
|
||||
import { getPreferredReactionEmoji as getPreferredReactionEmojiFromStoredValue } from '../../reactions/preferredReactionEmoji';
|
||||
import { isBeta } from '../../util/version';
|
||||
import { getUserNumber, getUserACI } from './user';
|
||||
|
||||
const DEFAULT_PREFERRED_LEFT_PANE_WIDTH = 320;
|
||||
|
||||
|
@ -53,6 +55,17 @@ const isRemoteConfigFlagEnabled = (
|
|||
key: ConfigKeyType
|
||||
): boolean => Boolean(config[key]?.enabled);
|
||||
|
||||
// See isBucketValueEnabled in RemoteConfig.ts
|
||||
const isRemoteConfigBucketEnabled = (
|
||||
config: Readonly<ConfigMapType>,
|
||||
name: ConfigKeyType,
|
||||
e164: string | undefined,
|
||||
uuid: UUIDStringType | undefined
|
||||
): boolean => {
|
||||
const flagValue = config[name]?.value;
|
||||
return innerIsBucketValueEnabled(name, flagValue, e164, uuid);
|
||||
};
|
||||
|
||||
const getRemoteConfig = createSelector(
|
||||
getItems,
|
||||
(state: ItemsStateType): ConfigMapType => state.remoteConfig || {}
|
||||
|
@ -64,16 +77,41 @@ export const getUsernamesEnabled = createSelector(
|
|||
isRemoteConfigFlagEnabled(remoteConfig, 'desktop.usernames')
|
||||
);
|
||||
|
||||
// Note: types/Stories is the other place this check is done
|
||||
// Note: ts/util/stories is the other place this check is done
|
||||
export const getStoriesEnabled = createSelector(
|
||||
getItems,
|
||||
getRemoteConfig,
|
||||
(state: ItemsStateType, remoteConfig: ConfigMapType): boolean =>
|
||||
!state.hasStoriesDisabled &&
|
||||
(isRemoteConfigFlagEnabled(remoteConfig, 'desktop.internalUser') ||
|
||||
isRemoteConfigFlagEnabled(remoteConfig, 'desktop.stories') ||
|
||||
(isRemoteConfigFlagEnabled(remoteConfig, 'desktop.stories.beta') &&
|
||||
isBeta(window.getVersion())))
|
||||
getUserNumber,
|
||||
getUserACI,
|
||||
(
|
||||
state: ItemsStateType,
|
||||
remoteConfig: ConfigMapType,
|
||||
e164: string | undefined,
|
||||
aci: UUIDStringType | undefined
|
||||
): boolean => {
|
||||
if (state.hasStoriesDisabled) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (
|
||||
isRemoteConfigBucketEnabled(remoteConfig, 'desktop.stories', e164, aci)
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (isRemoteConfigFlagEnabled(remoteConfig, 'desktop.internalUser')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (
|
||||
isRemoteConfigFlagEnabled(remoteConfig, 'desktop.stories.beta') &&
|
||||
isBeta(window.getVersion())
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
);
|
||||
|
||||
export const getDefaultConversationColor = createSelector(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue