Skip to content

Commit 9113efe

Browse files
maximcodingclaude
andcommitted
feat: HN news reader with offline-first feed and premium UI
- Home screen: replaces demo feed with live Hacker News Algolia API (Zod schema + mapper → React Query nearRealtime + MMKV persister) - StoryScreen: full in-app WebView reader with back/close navigation, falls back to HN discussion page for link-less posts - Settings: premium redesign — glassmorphism-style profile card, icon badges per row (sun/moon/globe/info/logout), improved dividers - Auth: social login buttons with text labels, Apple icon viewport fix, subtitle wrapping fix, demo hint single-line, terms padding fix - Icons: add check, sun, moon, globe, info, logout, layers SVGs - i18n: updated home section labels across en/de/ru - Navigation: HOME_STORY route added to root stack param list - Install react-native-webview for in-app article reading - Fix Jest config: add react-native-webview to transformIgnorePatterns and add WebView mock to jest.setup.js Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 5f9803d commit 9113efe

37 files changed

+1166
-972
lines changed

assets/icons.ts

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,45 @@
1+
12
// AUTO-GENERATED FILE — DO NOT EDIT MANUALLY
23
// Run: npm run gen:icons
34

4-
import Home from '@assets/svgs/home.svg'
5-
import Settings from '@assets/svgs/settings.svg'
6-
import User from '@assets/svgs/user.svg'
5+
import Check from '@assets/svgs/check.svg';
6+
import Globe from '@assets/svgs/globe.svg';
7+
import Home from '@assets/svgs/home.svg';
8+
import Info from '@assets/svgs/info.svg';
9+
import Layers from '@assets/svgs/layers.svg';
10+
import Logout from '@assets/svgs/logout.svg';
11+
import Moon from '@assets/svgs/moon.svg';
12+
import Settings from '@assets/svgs/settings.svg';
13+
import Sun from '@assets/svgs/sun.svg';
14+
import User from '@assets/svgs/user.svg';
15+
716

817
export enum IconName {
18+
CHECK = 'CHECK',
19+
GLOBE = 'GLOBE',
920
HOME = 'HOME',
21+
INFO = 'INFO',
22+
LAYERS = 'LAYERS',
23+
LOGOUT = 'LOGOUT',
24+
MOON = 'MOON',
1025
SETTINGS = 'SETTINGS',
26+
SUN = 'SUN',
1127
USER = 'USER',
28+
1229
}
1330

1431
export const AppIcon = {
32+
[IconName.CHECK]: Check,
33+
[IconName.GLOBE]: Globe,
1534
[IconName.HOME]: Home,
35+
[IconName.INFO]: Info,
36+
[IconName.LAYERS]: Layers,
37+
[IconName.LOGOUT]: Logout,
38+
[IconName.MOON]: Moon,
1639
[IconName.SETTINGS]: Settings,
40+
[IconName.SUN]: Sun,
1741
[IconName.USER]: User,
18-
} as const
1942

20-
export type IconNameType = keyof typeof AppIcon
43+
} as const;
44+
45+
export type IconNameType = keyof typeof AppIcon;

assets/svgs/check.svg

Lines changed: 3 additions & 0 deletions
Loading

assets/svgs/globe.svg

Lines changed: 4 additions & 0 deletions
Loading

assets/svgs/info.svg

Lines changed: 5 additions & 0 deletions
Loading

assets/svgs/layers.svg

Lines changed: 5 additions & 0 deletions
Loading

assets/svgs/logout.svg

Lines changed: 4 additions & 0 deletions
Loading

assets/svgs/moon.svg

Lines changed: 3 additions & 0 deletions
Loading

assets/svgs/sun.svg

Lines changed: 4 additions & 0 deletions
Loading

ios/Podfile.lock

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1989,6 +1989,34 @@ PODS:
19891989
- SocketRocket
19901990
- Yoga
19911991
- react-native-vector-icons-ionicons (12.5.0)
1992+
- react-native-webview (13.16.1):
1993+
- boost
1994+
- DoubleConversion
1995+
- fast_float
1996+
- fmt
1997+
- glog
1998+
- hermes-engine
1999+
- RCT-Folly
2000+
- RCT-Folly/Fabric
2001+
- RCTRequired
2002+
- RCTTypeSafety
2003+
- React-Core
2004+
- React-debug
2005+
- React-Fabric
2006+
- React-featureflags
2007+
- React-graphics
2008+
- React-ImageManager
2009+
- React-jsi
2010+
- React-NativeModulesApple
2011+
- React-RCTFabric
2012+
- React-renderercss
2013+
- React-rendererdebug
2014+
- React-utils
2015+
- ReactCodegen
2016+
- ReactCommon/turbomodule/bridging
2017+
- ReactCommon/turbomodule/core
2018+
- SocketRocket
2019+
- Yoga
19922020
- React-NativeModulesApple (0.82.1):
19932021
- boost
19942022
- DoubleConversion
@@ -3049,6 +3077,7 @@ DEPENDENCIES:
30493077
- "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)"
30503078
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
30513079
- "react-native-vector-icons-ionicons (from `../node_modules/@react-native-vector-icons/ionicons`)"
3080+
- react-native-webview (from `../node_modules/react-native-webview`)
30523081
- React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
30533082
- React-oscompat (from `../node_modules/react-native/ReactCommon/oscompat`)
30543083
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
@@ -3194,6 +3223,8 @@ EXTERNAL SOURCES:
31943223
:path: "../node_modules/react-native-safe-area-context"
31953224
react-native-vector-icons-ionicons:
31963225
:path: "../node_modules/@react-native-vector-icons/ionicons"
3226+
react-native-webview:
3227+
:path: "../node_modules/react-native-webview"
31973228
React-NativeModulesApple:
31983229
:path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"
31993230
React-oscompat:
@@ -3329,6 +3360,7 @@ SPEC CHECKSUMS:
33293360
react-native-netinfo: 57447b5a45c98808f8eae292cf641f3d91d13830
33303361
react-native-safe-area-context: befb5404eb8a16fdc07fa2bebab3568ecabcbb8a
33313362
react-native-vector-icons-ionicons: 7e633927db6ab96e0255b5920c053777cacca505
3363+
react-native-webview: 8407aaaf6b539b1e38b72fabb55d6885de03beaf
33323364
React-NativeModulesApple: 46690a0fe94ec28fc6fc686ec797b911d251ded0
33333365
React-oscompat: 95875e81f5d4b3c7b2c888d5bd2c9d83450d8bdb
33343366
React-perflogger: 2e229bf33e42c094fd64516d89ec1187a2b79b5b

jest.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ module.exports = {
22
preset: 'react-native',
33
setupFiles: ['<rootDir>/jest.setup.js'], // Change to .js
44
transformIgnorePatterns: [
5-
'node_modules/(?!(@react-native|react-native|@react-navigation|react-native-reanimated|react-native-gesture-handler|react-native-safe-area-context|react-native-config|@shopify/flash-list)/)',
5+
'node_modules/(?!(@react-native|react-native|@react-navigation|react-native-reanimated|react-native-gesture-handler|react-native-safe-area-context|react-native-config|@shopify/flash-list|react-native-webview)/)',
66
],
77
}

0 commit comments

Comments
 (0)