Skip to content

Commit 99b4a75

Browse files
committed
chore: address feedback, default to GB blocked, resolve conflict
1 parent 81c7228 commit 99b4a75

3 files changed

Lines changed: 26 additions & 14 deletions

File tree

app/components/UI/Earn/constants/musd.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,9 @@ export const MUSD_TOKEN_ASSET_ID_BY_CHAIN: Record<Hex, string> = {
4141

4242
export const MUSD_CURRENCY = 'MUSD';
4343
export const MUSD_CONVERSION_APY = 3;
44+
45+
/**
46+
* Default blocked countries for mUSD conversion when no remote or env config is available.
47+
* This is a safety fallback to ensure geo-blocking is always active.
48+
*/
49+
export const DEFAULT_MUSD_BLOCKED_COUNTRIES = ['GB'];

app/components/UI/Earn/selectors/featureFlags/index.test.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1843,7 +1843,7 @@ describe('Earn Feature Flag Selectors', () => {
18431843
expect(result).toEqual(['GB', 'US']);
18441844
});
18451845

1846-
it('returns empty array when remote flag is undefined', () => {
1846+
it('returns default blocked countries when remote flag is undefined', () => {
18471847
const state = {
18481848
engine: {
18491849
backgroundState: {
@@ -1857,10 +1857,10 @@ describe('Earn Feature Flag Selectors', () => {
18571857

18581858
const result = selectMusdConversionBlockedCountries(state);
18591859

1860-
expect(result).toEqual([]);
1860+
expect(result).toEqual(['GB']);
18611861
});
18621862

1863-
it('returns empty array when blockedRegions is not an array', () => {
1863+
it('returns default blocked countries when blockedRegions is not an array', () => {
18641864
const state = {
18651865
engine: {
18661866
backgroundState: {
@@ -1878,10 +1878,10 @@ describe('Earn Feature Flag Selectors', () => {
18781878

18791879
const result = selectMusdConversionBlockedCountries(state);
18801880

1881-
expect(result).toEqual([]);
1881+
expect(result).toEqual(['GB']);
18821882
});
18831883

1884-
it('returns empty array when flag is null', () => {
1884+
it('returns default blocked countries when flag is null', () => {
18851885
const state = {
18861886
engine: {
18871887
backgroundState: {
@@ -1897,10 +1897,10 @@ describe('Earn Feature Flag Selectors', () => {
18971897

18981898
const result = selectMusdConversionBlockedCountries(state);
18991899

1900-
expect(result).toEqual([]);
1900+
expect(result).toEqual(['GB']);
19011901
});
19021902

1903-
it('returns empty array when flag has wrong structure', () => {
1903+
it('returns default blocked countries when flag has wrong structure', () => {
19041904
const state = {
19051905
engine: {
19061906
backgroundState: {
@@ -1916,10 +1916,10 @@ describe('Earn Feature Flag Selectors', () => {
19161916

19171917
const result = selectMusdConversionBlockedCountries(state);
19181918

1919-
expect(result).toEqual([]);
1919+
expect(result).toEqual(['GB']);
19201920
});
19211921

1922-
it('returns empty array when RemoteFeatureFlagController is undefined', () => {
1922+
it('returns default blocked countries when RemoteFeatureFlagController is undefined', () => {
19231923
const state = {
19241924
engine: {
19251925
backgroundState: {
@@ -1930,7 +1930,7 @@ describe('Earn Feature Flag Selectors', () => {
19301930

19311931
const result = selectMusdConversionBlockedCountries(state);
19321932

1933-
expect(result).toEqual([]);
1933+
expect(result).toEqual(['GB']);
19341934
});
19351935

19361936
describe('local env var fallback', () => {
@@ -2018,7 +2018,7 @@ describe('Earn Feature Flag Selectors', () => {
20182018
expect(result).toEqual(['GB', 'US']);
20192019
});
20202020

2021-
it('returns empty array when env var is empty string', () => {
2021+
it('returns default blocked countries when env var is empty string', () => {
20222022
process.env.MM_MUSD_CONVERSION_GEO_BLOCKED_COUNTRIES = '';
20232023

20242024
const state = {
@@ -2034,7 +2034,7 @@ describe('Earn Feature Flag Selectors', () => {
20342034

20352035
const result = selectMusdConversionBlockedCountries(state);
20362036

2037-
expect(result).toEqual([]);
2037+
expect(result).toEqual(['GB']);
20382038
});
20392039

20402040
it('filters out empty entries from env var', () => {

app/components/UI/Earn/selectors/featureFlags/index.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
getWildcardTokenListFromConfig,
99
WildcardTokenList,
1010
} from '../../utils/wildcardTokenList';
11+
import { DEFAULT_MUSD_BLOCKED_COUNTRIES } from '../../constants/musd';
1112

1213
export const selectPooledStakingEnabledFlag = createSelector(
1314
selectRemoteFeatureFlags,
@@ -273,7 +274,7 @@ export const parseBlockedCountriesEnv = (envValue?: string): string[] => {
273274
* - Remote: { "blockedRegions": ["GB", "US"] } - Block users in GB and US
274275
* - Local env: "GB,US,FR" - Block users in GB, US, and FR
275276
*
276-
* If both remote and local are unavailable or invalid, returns [] (no geo-blocking).
277+
* If both remote and local are unavailable or invalid, defaults to blocking Great Britain.
277278
*/
278279
export const selectMusdConversionBlockedCountries = createSelector(
279280
selectRemoteFeatureFlags,
@@ -289,8 +290,13 @@ export const selectMusdConversionBlockedCountries = createSelector(
289290
}
290291

291292
// Fallback to local env var
292-
return parseBlockedCountriesEnv(
293+
const envBlockedCountries = parseBlockedCountriesEnv(
293294
process.env.MM_MUSD_CONVERSION_GEO_BLOCKED_COUNTRIES,
294295
);
296+
297+
// If env var is also empty, use default blocked countries
298+
return envBlockedCountries.length > 0
299+
? envBlockedCountries
300+
: DEFAULT_MUSD_BLOCKED_COUNTRIES;
295301
},
296302
);

0 commit comments

Comments
 (0)