mirror of
https://github.com/minibits-cash/minibits_wallet.git
synced 2026-10-05 11:18:24 +00:00
Fix iOS build, fix onboarding is keys survive app reinstall
This commit is contained in:
+6
-6
@@ -1968,7 +1968,7 @@ PODS:
|
||||
- React-perflogger (= 0.84.0)
|
||||
- React-utils (= 0.84.0)
|
||||
- ReactNativeDependencies
|
||||
- ReactNativeCameraKit (17.0.1):
|
||||
- ReactNativeCameraKit (16.2.1):
|
||||
- hermes-engine
|
||||
- RCTRequired
|
||||
- RCTTypeSafety
|
||||
@@ -2758,7 +2758,7 @@ SPEC CHECKSUMS:
|
||||
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
|
||||
OpenSSL-Universal: 6082b0bf950e5636fe0d78def171184e2b3899c2
|
||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||
RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669
|
||||
RCT-Folly: 7449e39d08a22c7cfc6bbfc9f140168c61c5869d
|
||||
RCTDeprecation: 8ae59687fd548d481aa5ce8014ac7cd9b47e7316
|
||||
RCTRequired: d711b3887891fab6a77c6b9cdc49a3d8b171e36a
|
||||
RCTSwiftUI: 96986e49a4fdc2c2103929dee2641e1b57edf33d
|
||||
@@ -2790,7 +2790,7 @@ SPEC CHECKSUMS:
|
||||
React-jsinspectorcdp: 84092b2afb8be60cd184832c757a8e8019f16384
|
||||
React-jsinspectornetwork: 3537aa4e90d7c5fba4fe2b4a4f9ccf7f4ec32f48
|
||||
React-jsinspectortracing: 4bc2046417f5cd1fa0789a4943dc4a3ec90413e3
|
||||
React-jsitooling: ead6180fa39d8dbfee3c2a1211ec37dbe45554fe
|
||||
React-jsitooling: fb0d3dc02875aac8099d741bbae2209e26a832d1
|
||||
React-jsitracing: fa7587d28b386c312a0c862cd3f4d1d4f69948ee
|
||||
React-logger: dd3e5f78709d5b029336be395a67bbcdc775e2ed
|
||||
React-Mapbuffer: 2bdeed9ba58c94ac99a2711a3a722d2d5b3a8a81
|
||||
@@ -2837,7 +2837,7 @@ SPEC CHECKSUMS:
|
||||
ReactAppDependencyProvider: 6b7e8d8d974ed13fb66698d82c30c5e70c1f7d3a
|
||||
ReactCodegen: b411483ad988ff21fe9e7fb1c5851169f52afabb
|
||||
ReactCommon: 3c00047ec244a06c7deaa6ae59cc8aa305fa3f6a
|
||||
ReactNativeCameraKit: 5d844feee3a7d6b0069b3165b138eb73a343a1fd
|
||||
ReactNativeCameraKit: aca16005874ca639a422fe90a9d6626d9ff1ae21
|
||||
ReactNativeDependencies: 019be871bc55e933ba5469d1497b05a7201f0b16
|
||||
RNCClipboard: d73fd4b2ac59e792596e7cd615b6321d577c1a2b
|
||||
RNExitApp: a2fd7923ab37b9166704fdc488622a48dcd372a2
|
||||
@@ -2848,11 +2848,11 @@ SPEC CHECKSUMS:
|
||||
RNKeychain: 1fdd8401d8c8d05da80a9e1843d837ccfb947ea2
|
||||
RNLocalize: 17220985af7688b1dc3125d8aa14bcf904d730d6
|
||||
RNNotifee: 5e3b271e8ea7456a36eec994085543c9adca9168
|
||||
RNReanimated: 1aa31141cdf34d502d2e59670a019e9dbfc63c75
|
||||
RNReanimated: 00cb3d8876d5092758efd06f37e30f8e7d6653ca
|
||||
RNScreens: 82c4bb10e5a71fb2ae904e2fe5141d28720806d1
|
||||
RNSentry: d0b2aee30a7988272b64c6aaf0893b6dc320692b
|
||||
RNSVG: c235766fc27d2f5fd74e6944343a5cae7e39ce1c
|
||||
RNWorklets: 7564836a83bc44a6ab3231cf9b9e4697d148b379
|
||||
RNWorklets: 9629f9f7042c6f46a9b60e5a7b46163a11b9bac6
|
||||
SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d
|
||||
SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d
|
||||
Sentry: c643eb180df401dd8c734c5036ddd9dd9218daa6
|
||||
|
||||
@@ -26,13 +26,13 @@
|
||||
3B4392A12AC88292D35C810B /* Pods-minibits_wallet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-minibits_wallet.debug.xcconfig"; path = "Target Support Files/Pods-minibits_wallet/Pods-minibits_wallet.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
4ACC08249CA13DFDBBBD7A8B /* Pods_minibits_wallet.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_minibits_wallet.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5709B34CF0A7D63546082F79 /* Pods-minibits_wallet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-minibits_wallet.release.xcconfig"; path = "Target Support Files/Pods-minibits_wallet/Pods-minibits_wallet.release.xcconfig"; sourceTree = "<group>"; };
|
||||
B3D7A2E5F1C648B9A0234567 /* HammersmithOne-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HammersmithOne-Regular.ttf"; path = "../assets/fonts/HammersmithOne-Regular.ttf"; sourceTree = "<group>"; };
|
||||
761780EC2CA45674006654EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = minibits_wallet/AppDelegate.swift; sourceTree = "<group>"; };
|
||||
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = minibits_wallet/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
902F38382D92C792005DB998 /* OpenSSL.xcframework */ = {isa = PBXFileReference; expectedSignature = "AppleDeveloperProgram:67RAULRX93:Marcin Krzyzanowski"; lastKnownFileType = wrapper.xcframework; name = OpenSSL.xcframework; path = "Pods/OpenSSL-Universal/OpenSSL.xcframework"; sourceTree = "<group>"; };
|
||||
9044DC232D9556F600F918A6 /* minibits_wallet.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = minibits_wallet.entitlements; path = minibits_wallet/minibits_wallet.entitlements; sourceTree = "<group>"; };
|
||||
9044DC242D95937D00F918A6 /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "minibits_wallet/GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||
AB8A46AD84194C2583FF9193 /* nostr.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = nostr.png; path = ../assets/icons/nostr.png; sourceTree = "<group>"; };
|
||||
B3D7A2E5F1C648B9A0234567 /* HammersmithOne-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HammersmithOne-Regular.ttf"; path = "../assets/fonts/HammersmithOne-Regular.ttf"; sourceTree = "<group>"; };
|
||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
@@ -301,7 +301,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = minibits_wallet/minibits_wallet.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 18;
|
||||
CURRENT_PROJECT_VERSION = 19;
|
||||
DEVELOPMENT_TEAM = GR2ZKMCLAM;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = minibits_wallet/Info.plist;
|
||||
@@ -312,7 +312,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 0.3.4;
|
||||
MARKETING_VERSION = 0.4.0;
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
@@ -337,7 +337,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = minibits_wallet/minibits_wallet.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 18;
|
||||
CURRENT_PROJECT_VERSION = 19;
|
||||
DEVELOPMENT_TEAM = GR2ZKMCLAM;
|
||||
INFOPLIST_FILE = minibits_wallet/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = Minibits;
|
||||
@@ -347,7 +347,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 0.3.4;
|
||||
MARKETING_VERSION = 0.4.0;
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
|
||||
+1
-1
@@ -59,7 +59,7 @@
|
||||
"react": "19.2.3",
|
||||
"react-native": "0.84.0",
|
||||
"react-native-animated-pagination-dots": "^0.1.73",
|
||||
"react-native-camera-kit": "17.0.1",
|
||||
"react-native-camera-kit": "16.2.1",
|
||||
"react-native-change-icon": "^3.0.0",
|
||||
"react-native-exit-app": "^2.0.0",
|
||||
"react-native-fast-image": "^8.6.3",
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
diff --git a/node_modules/react-native/third-party-podspecs/RCT-Folly.podspec b/node_modules/react-native/third-party-podspecs/RCT-Folly.podspec
|
||||
index 8df5864..0d914be 100644
|
||||
--- a/node_modules/react-native/third-party-podspecs/RCT-Folly.podspec
|
||||
+++ b/node_modules/react-native/third-party-podspecs/RCT-Folly.podspec
|
||||
@@ -72,6 +72,7 @@ Pod::Spec.new do |spec|
|
||||
'folly/net/*.h',
|
||||
'folly/net/detail/*.h',
|
||||
'folly/portability/*.h',
|
||||
+ 'folly/synchronization/*.h',
|
||||
'folly/system/*.h',
|
||||
|
||||
# workaround for https://github.com/facebook/react-native/issues/14326
|
||||
@@ -91,6 +92,7 @@ Pod::Spec.new do |spec|
|
||||
'folly/net/*.h',
|
||||
'folly/net/detail/*.h',
|
||||
'folly/portability/*.h',
|
||||
+ 'folly/synchronization/*.h',
|
||||
'folly/system/*.h',
|
||||
spec.libraries = "c++abi" # NOTE Apple-only: Keep c++abi here due to https://github.com/react-native-community/releases/issues/251
|
||||
spec.pod_target_xcconfig = { "USE_HEADERMAP" => "NO",
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -75,6 +75,6 @@ const $headerContainer: ViewStyle = {
|
||||
const $headerTitle: TextStyle = {
|
||||
fontSize: verticalScale(32),
|
||||
lineHeight: verticalScale(44),
|
||||
fontFamily: typography.primary?.medium,
|
||||
fontFamily: typography.light,
|
||||
marginBottom: spacing.extraLarge * 2,
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ const $baseViewStyle: ViewStyle = {
|
||||
const $baseTextStyle: TextStyle = {
|
||||
fontSize: verticalScale(16),
|
||||
lineHeight: verticalScale(20),
|
||||
fontFamily: typography.primary?.light,
|
||||
fontFamily: typography.light,
|
||||
textAlign: "center",
|
||||
flexShrink: 1,
|
||||
flexGrow: 0,
|
||||
|
||||
@@ -10,7 +10,7 @@ import {
|
||||
View,
|
||||
ViewStyle,
|
||||
} from "react-native"
|
||||
import { useThemeColor, spacing } from "../theme"
|
||||
import { useThemeColor, spacing, typography } from "../theme"
|
||||
import { Icon, IconTypes } from "./Icon"
|
||||
import { Text, TextProps } from "./Text"
|
||||
|
||||
@@ -313,6 +313,7 @@ const $subTextStyle: TextStyle = {
|
||||
flexGrow: 1,
|
||||
flexShrink: 1,
|
||||
paddingBottom: spacing.extraSmall,
|
||||
fontFamily: typography.light,
|
||||
}
|
||||
|
||||
const $touchableStyle: ViewStyle = {
|
||||
|
||||
@@ -300,7 +300,7 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
|
||||
return (
|
||||
<Screen preset='fixed' contentContainerStyle={$screen}>
|
||||
<View style={[$headerContainer, {backgroundColor: headerBg}]}>
|
||||
<Text preset="heading" tx="manageMints" style={{color: headerTitle}} />
|
||||
<Text preset="heading" tx="manageMints" style={{color: headerTitle, fontFamily: typography.light}} />
|
||||
</View>
|
||||
<ScrollView style={$contentContainer}>
|
||||
<Card
|
||||
|
||||
@@ -12,7 +12,7 @@ import {
|
||||
HOT_UPDATER_API_KEY,
|
||||
HOT_UPDATER_URL,
|
||||
} from '@env'
|
||||
import {ThemeCode, Themes, colors, spacing, useThemeColor} from '../theme'
|
||||
import {ThemeCode, Themes, colors, spacing, typography, useThemeColor} from '../theme'
|
||||
import { changeIcon } from 'react-native-change-icon'
|
||||
import {ListItem, Screen, Text, Card, NwcIcon, Button, BottomModal, InfoModal, Icon, Header, AnimatedHeader} from '../components'
|
||||
import {useStores} from '../models'
|
||||
@@ -303,7 +303,7 @@ export const SettingsScreen = observer(function SettingsScreen({ route }: Props)
|
||||
}
|
||||
|
||||
|
||||
const $itemRight = {color: useThemeColor('textDim')}
|
||||
const $itemRight = {color: useThemeColor('textDim'), fontFamily: typography.light} as TextStyle
|
||||
const colorScheme = useColorScheme()
|
||||
const defaultThemeColor = colorScheme === 'dark' ? Themes[ThemeCode.DARK]?.color : Themes[ThemeCode.LIGHT]?.color
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ export const CurrencyAmount = observer(function (props: {
|
||||
return (
|
||||
<View
|
||||
style={[{
|
||||
paddingHorizontal: spacing.tiny,
|
||||
padding: spacing.tiny,
|
||||
flexDirection: 'row',
|
||||
}, containerStyle || {}]}
|
||||
>
|
||||
@@ -46,8 +46,8 @@ export const CurrencyAmount = observer(function (props: {
|
||||
style={[$symbol, {
|
||||
color: symbolColor,
|
||||
fontSize: size && spacing[size] * 0.7 || spacing.small * 0.7,
|
||||
fontFamily: typography.primary?.light,
|
||||
//lineHeight: size && spacing[size] * 0.6 || spacing.small * 0.6
|
||||
fontFamily: typography.light,
|
||||
//lineHeight: size && spacing[size] * 0.7 || spacing.small * 0.7
|
||||
|
||||
}, symbolStyle || {}]}
|
||||
text={currencySymbol}
|
||||
@@ -57,7 +57,7 @@ export const CurrencyAmount = observer(function (props: {
|
||||
style={[$amount, {
|
||||
color: amountColor,
|
||||
fontSize: props.size && spacing[props.size] * 1.3 || spacing.small * 1.3,
|
||||
//lineHeight: size && spacing[size] * 1 || spacing.small * 1,
|
||||
lineHeight: size && spacing[size] * 1.31 || spacing.small * 1.31,
|
||||
//borderColor: 'red',
|
||||
//borderWidth: 1,
|
||||
//paddingTop: size && spacing[size] * 0.2 || spacing.small * 0.2,
|
||||
|
||||
@@ -47,7 +47,7 @@ export const CurrencySign = function(props: {
|
||||
style={[{
|
||||
color: textColor,
|
||||
fontSize: props.size && spacing[props.size] || spacing.small,
|
||||
fontFamily: typography.primary?.light,
|
||||
fontFamily: typography.light,
|
||||
lineHeight: props.size && spacing[props.size] * 1.5 || spacing.small * 1.5
|
||||
|
||||
}, textStyle || {}]}
|
||||
|
||||
@@ -942,9 +942,9 @@ const UnitBalanceBlock = observer(function (props: {
|
||||
mintUnit={unitBalance.unit}
|
||||
symbolStyle={{display: 'none'}}
|
||||
amountStyle={[$unitBalance, {color: balanceColor}]}
|
||||
containerStyle={{marginTop: spacing.small}}
|
||||
containerStyle={{marginTop: spacing.large}}
|
||||
/>
|
||||
<View style={{height: verticalScale(40)}}>
|
||||
<View style={{height: verticalScale(25)}}>
|
||||
{walletStore.exchangeRate
|
||||
&& (userSettingsStore.exchangeCurrency === getCurrency(unitBalance.unit).code || unitBalance.unit === 'sat')
|
||||
&& (
|
||||
|
||||
@@ -30,7 +30,7 @@ import {TxKeyPath, translate} from '../i18n'
|
||||
import AppError from '../utils/AppError'
|
||||
import { MINIBITS_MINT_URL } from '@env'
|
||||
import useIsInternetReachable from '../utils/useIsInternetReachable'
|
||||
import { KeyChain } from '../services'
|
||||
import { KeyChain, log, WalletKeys } from '../services'
|
||||
import { delay } from '../utils/utils'
|
||||
import { StaticScreenProps, useNavigation } from '@react-navigation/native'
|
||||
|
||||
@@ -106,35 +106,39 @@ export const WelcomeScreen = function ({ route }: Props) {
|
||||
return
|
||||
}
|
||||
|
||||
setIsLoading(true)
|
||||
setIsLoading(true)
|
||||
setStatusMessage(translate('welcomeScreen_creatingKeys'))
|
||||
|
||||
// check if keys already exist (if onboarding is repeated or if iOS did not wipe keys?)
|
||||
let keys = await KeyChain.getWalletKeys()
|
||||
|
||||
if(!await KeyChain.hasWalletKeys()) {
|
||||
setStatusMessage(translate('welcomeScreen_creatingKeys'))
|
||||
if(!keys) {
|
||||
const newKeys = KeyChain.generateWalletKeys()
|
||||
|
||||
const keys = KeyChain.generateWalletKeys()
|
||||
|
||||
setStatusMessage(translate('welcomeScreen_creatingProfile'))
|
||||
|
||||
// First, enroll device for JWT authentication then create profile
|
||||
try {
|
||||
await authStore.logout()
|
||||
} catch (e: any) {}
|
||||
|
||||
await authStore.enrollDevice(
|
||||
keys.NOSTR,
|
||||
walletProfileStore.device
|
||||
)
|
||||
|
||||
await walletProfileStore.create(
|
||||
keys.walletId,
|
||||
keys.SEED.seedHash
|
||||
)
|
||||
|
||||
// save keys after successful profile creation
|
||||
await KeyChain.saveWalletKeys(keys)
|
||||
walletStore.cleanCachedWalletKeys()
|
||||
}
|
||||
await KeyChain.saveWalletKeys(newKeys)
|
||||
walletStore.cleanCachedWalletKeys()
|
||||
keys = newKeys
|
||||
}
|
||||
|
||||
setStatusMessage(translate('welcomeScreen_creatingProfile'))
|
||||
|
||||
// First, enroll device for JWT authentication then create profile
|
||||
try {
|
||||
await authStore.logout()
|
||||
} catch (e: any) {}
|
||||
|
||||
await authStore.enrollDevice(
|
||||
keys.NOSTR,
|
||||
walletProfileStore.device
|
||||
)
|
||||
|
||||
// idempotent if keys and profile exists on the server
|
||||
await walletProfileStore.create(
|
||||
keys.walletId,
|
||||
keys.SEED.seedHash
|
||||
)
|
||||
|
||||
if(!mintsStore.mintExists(MINIBITS_MINT_URL)) {
|
||||
await mintsStore.addMint(MINIBITS_MINT_URL)
|
||||
}
|
||||
|
||||
@@ -93,12 +93,24 @@ const initNotifications = async () => {
|
||||
if(!enabled) return
|
||||
|
||||
await messaging().registerDeviceForRemoteMessages()
|
||||
|
||||
if (Platform.OS === 'ios') {
|
||||
let apnsToken = await messaging().getAPNSToken()
|
||||
let retries = 0
|
||||
while (!apnsToken && retries < 5) {
|
||||
await delay(1000)
|
||||
apnsToken = await messaging().getAPNSToken()
|
||||
retries++
|
||||
}
|
||||
log.trace(`[initNotifications] APNS token: ${apnsToken}`)
|
||||
if (!apnsToken) {
|
||||
log.warn('[initNotifications] No APNS token available (simulator?), skipping FCM token fetch.')
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
const deviceToken = await messaging().getToken()
|
||||
log.trace(`[initNotifications] Device token: ${deviceToken}`)
|
||||
if(Platform.OS === 'ios') {
|
||||
const apnsToken = await messaging().getAPNSToken()
|
||||
log.trace(`[initNotifications] APNS token: ${apnsToken}`)
|
||||
}
|
||||
|
||||
const {walletProfileStore} = rootStoreInstance
|
||||
if(deviceToken && deviceToken !== walletProfileStore.device) {
|
||||
|
||||
+12
-4
@@ -40,19 +40,27 @@ export const typography = {
|
||||
* The primary font. Used in most places.
|
||||
*/
|
||||
primary: Platform.select({
|
||||
ios: fonts.helveticaNeue,
|
||||
android: fonts.sansSerif,
|
||||
ios: fonts.hammersmithOne,
|
||||
android: fonts.hammersmithOne,
|
||||
}),
|
||||
/**
|
||||
* An alternate font used for perhaps titles and stuff.
|
||||
*/
|
||||
secondary: Platform.select({
|
||||
ios: fonts.helveticaNeue,
|
||||
android: fonts.sansSerif,
|
||||
ios: fonts.hammersmithOne,
|
||||
android: fonts.hammersmithOne,
|
||||
}),
|
||||
/**
|
||||
* Lets get fancy with a monospace font!
|
||||
*/
|
||||
code: Platform.select({ios: fonts.courier, android: fonts.monospace}),
|
||||
thin: Platform.select({
|
||||
ios: fonts.helveticaNeue.thin,
|
||||
android: fonts.sansSerif.thin,
|
||||
}),
|
||||
light: Platform.select({
|
||||
ios: fonts.helveticaNeue.light,
|
||||
android: fonts.sansSerif.light,
|
||||
}),
|
||||
logo: fonts.hammersmithOne,
|
||||
}
|
||||
|
||||
@@ -14668,7 +14668,7 @@ __metadata:
|
||||
react: 19.2.3
|
||||
react-native: 0.84.0
|
||||
react-native-animated-pagination-dots: ^0.1.73
|
||||
react-native-camera-kit: 17.0.1
|
||||
react-native-camera-kit: 16.2.1
|
||||
react-native-change-icon: ^3.0.0
|
||||
react-native-clean-project: ^4.0.3
|
||||
react-native-dotenv: ^3.4.11
|
||||
@@ -16490,13 +16490,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"react-native-camera-kit@npm:17.0.1":
|
||||
version: 17.0.1
|
||||
resolution: "react-native-camera-kit@npm:17.0.1"
|
||||
"react-native-camera-kit@npm:16.2.1":
|
||||
version: 16.2.1
|
||||
resolution: "react-native-camera-kit@npm:16.2.1"
|
||||
peerDependencies:
|
||||
react: "*"
|
||||
react-native: "*"
|
||||
checksum: 40940bbbbd24192f7e8ee4826d77662e7a21b18ad4cfcb77bb860dd75594da33793b3835050de65b2a82f4e0b356e662d6a1ef54e030b34da96975157cff4502
|
||||
checksum: fda3c197052e26f95cbabfe891c5df249f2764f94e132f5a4956cfd68741b15350b9e746533bf64c3eac648df1759fc99be23e64875deed45c1dc93ccfdac45e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
Reference in New Issue
Block a user