- Add NostrIdentityContext with SecureStore-backed nsec storage and pure-JS bech32/secp256k1 for nsec→npub derivation; private key never enters React state or logs - Android: NIP-55 Amber deep-link integration (get_public_key + sign_event) with install-prompt fallback to Play Store when Amber is absent; Android queries manifest entry for com.greenart7c3.nostrsigner - iOS/both: manual nsec entry stored exclusively in expo-secure-store - Settings tab (gear icon) added to both NativeTabLayout and ClassicTabLayout showing: connected npub (truncated), signing method badge, Disconnect button (with confirmation + SecureStore wipe) - Root layout wrapped with NostrIdentityProvider - app.json: add expo-secure-store plugin + Android intentFilters for mobile://amber-callback deep-link return path Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
60 lines
1.3 KiB
JSON
60 lines
1.3 KiB
JSON
{
|
|
"expo": {
|
|
"name": "Timmy Mobile",
|
|
"slug": "mobile",
|
|
"version": "1.0.0",
|
|
"orientation": "portrait",
|
|
"icon": "./assets/images/icon.png",
|
|
"scheme": "mobile",
|
|
"userInterfaceStyle": "dark",
|
|
"newArchEnabled": true,
|
|
"splash": {
|
|
"image": "./assets/images/splash-icon.png",
|
|
"resizeMode": "contain",
|
|
"backgroundColor": "#0A0A12"
|
|
},
|
|
"ios": {
|
|
"supportsTablet": false
|
|
},
|
|
"android": {
|
|
"adaptiveIcon": {
|
|
"foregroundImage": "./assets/images/icon.png",
|
|
"backgroundColor": "#0A0A12"
|
|
},
|
|
"intentFilters": [
|
|
{
|
|
"action": "VIEW",
|
|
"autoVerify": true,
|
|
"data": [{ "scheme": "mobile", "host": "amber-callback" }],
|
|
"category": ["BROWSABLE", "DEFAULT"]
|
|
}
|
|
],
|
|
"queries": [
|
|
{ "package": "com.greenart7c3.nostrsigner" }
|
|
]
|
|
},
|
|
"web": {
|
|
"favicon": "./assets/images/icon.png",
|
|
"backgroundColor": "#0A0A12"
|
|
},
|
|
"plugins": [
|
|
[
|
|
"expo-router",
|
|
{
|
|
"origin": "https://replit.com/"
|
|
}
|
|
],
|
|
"expo-font",
|
|
"expo-secure-store",
|
|
"expo-web-browser"
|
|
],
|
|
"extra": {
|
|
"apiDomain": "${EXPO_PUBLIC_DOMAIN}"
|
|
},
|
|
"experiments": {
|
|
"typedRoutes": true,
|
|
"reactCompiler": true
|
|
}
|
|
}
|
|
}
|