feat(app-expo): tiered large-text presets with English-friendly default
Replace the boolean large-text flag with three global typography tiers, defaulting new installs to the smallest tier when English is in effect while preserving legacy storage and Chinese defaults. Add a profile sub-screen to pick the tier and unit tests for storage resolution. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
31
app-expo/tests/core/settings/app-settings-large-text.test.ts
Normal file
31
app-expo/tests/core/settings/app-settings-large-text.test.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import {
|
||||
computeLargeTextLevelFromStorage,
|
||||
defaultLargeTextLevelForLanguage,
|
||||
} from '@/core/settings/app-settings';
|
||||
|
||||
describe('defaultLargeTextLevelForLanguage', () => {
|
||||
it('uses level 0 for English', () => {
|
||||
expect(defaultLargeTextLevelForLanguage('en')).toBe(0);
|
||||
});
|
||||
|
||||
it('uses level 1 for Chinese', () => {
|
||||
expect(defaultLargeTextLevelForLanguage('zh')).toBe(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe('computeLargeTextLevelFromStorage', () => {
|
||||
it('prefers valid level key when present', () => {
|
||||
expect(computeLargeTextLevelFromStorage('2', 'false', 'en')).toBe(2);
|
||||
expect(computeLargeTextLevelFromStorage('0', 'true', 'zh')).toBe(0);
|
||||
});
|
||||
|
||||
it('ignores invalid level key and uses legacy', () => {
|
||||
expect(computeLargeTextLevelFromStorage('9', 'true', 'en')).toBe(1);
|
||||
expect(computeLargeTextLevelFromStorage('', 'false', 'zh')).toBe(0);
|
||||
});
|
||||
|
||||
it('uses language default when no usable values', () => {
|
||||
expect(computeLargeTextLevelFromStorage(null, null, 'en')).toBe(0);
|
||||
expect(computeLargeTextLevelFromStorage('', '', 'zh')).toBe(1);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user