iOS build cont...

This commit is contained in:
minibits-cash
2025-03-28 11:42:09 +01:00
parent 3a160fc885
commit c39bdb7bd3
34 changed files with 179 additions and 217 deletions
+2 -2
View File
@@ -95,8 +95,8 @@ android {
applicationId "com.minibits_wallet" applicationId "com.minibits_wallet"
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 58028 versionCode 58029
versionName "0.2.0" versionName "0.2.1"
} }
splits { splits {
Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

+13
View File
@@ -0,0 +1,13 @@
{
"migIndex": 1,
"data": [
{
"path": "assets/fonts/Gluten-Regular.ttf",
"sha1": "96270757924e60e26763e8814aaa2000f470d352"
},
{
"path": "assets/icons/nostr.png",
"sha1": "c4558cc304ea0d6e908c7f43d8c7026041daaf3e"
}
]
}
-30
View File
@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>API_KEY</key>
<string>AIzaSyDSKDNb5MSVhfZmGYQzBaQj49h11m-VXeI</string>
<key>GCM_SENDER_ID</key>
<string>869445547578</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>com.ios.minibits-wallet</string>
<key>PROJECT_ID</key>
<string>minibits-prod</string>
<key>STORAGE_BUCKET</key>
<string>minibits-prod.firebasestorage.app</string>
<key>IS_ADS_ENABLED</key>
<false></false>
<key>IS_ANALYTICS_ENABLED</key>
<false></false>
<key>IS_APPINVITE_ENABLED</key>
<true></true>
<key>IS_GCM_ENABLED</key>
<true></true>
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:869445547578:ios:63fd5c3b7fc113072ae703</string>
</dict>
</plist>
+13
View File
@@ -0,0 +1,13 @@
{
"migIndex": 1,
"data": [
{
"path": "assets/fonts/Gluten-Regular.ttf",
"sha1": "96270757924e60e26763e8814aaa2000f470d352"
},
{
"path": "assets/icons/nostr.png",
"sha1": "c4558cc304ea0d6e908c7f43d8c7026041daaf3e"
}
]
}
+28 -14
View File
@@ -11,7 +11,9 @@
761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; }; 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; };
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
902F38392D92C792005DB998 /* OpenSSL.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 902F38382D92C792005DB998 /* OpenSSL.xcframework */; }; 902F38392D92C792005DB998 /* OpenSSL.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 902F38382D92C792005DB998 /* OpenSSL.xcframework */; };
90C59D872D9195980061E3E1 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 90C59D862D9195980061E3E1 /* GoogleService-Info.plist */; }; 9044DC252D95937D00F918A6 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9044DC242D95937D00F918A6 /* GoogleService-Info.plist */; };
A1B9A6F7058C4F12AB677FD4 /* nostr.png in Resources */ = {isa = PBXBuildFile; fileRef = AB8A46AD84194C2583FF9193 /* nostr.png */; };
C3AB98FDBCF446F99A4EA648 /* Gluten-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6DA8A3418B7A4B348B67B9E7 /* Gluten-Regular.ttf */; };
CD7DC745CFA9F47C2D6FFA1D /* Pods_minibits_wallet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4ACC08249CA13DFDBBBD7A8B /* Pods_minibits_wallet.framework */; }; CD7DC745CFA9F47C2D6FFA1D /* Pods_minibits_wallet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4ACC08249CA13DFDBBBD7A8B /* Pods_minibits_wallet.framework */; };
D610B97F2318E8AB9D0962D2 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */; }; D610B97F2318E8AB9D0962D2 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
@@ -24,10 +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>"; }; 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; }; 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>"; }; 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>"; };
6DA8A3418B7A4B348B67B9E7 /* Gluten-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Gluten-Regular.ttf"; path = "../assets/fonts/Gluten-Regular.ttf"; sourceTree = "<group>"; };
761780EC2CA45674006654EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = minibits_wallet/AppDelegate.swift; 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>"; }; 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>"; }; 902F38382D92C792005DB998 /* OpenSSL.xcframework */ = {isa = PBXFileReference; expectedSignature = "AppleDeveloperProgram:67RAULRX93:Marcin Krzyzanowski"; lastKnownFileType = wrapper.xcframework; name = OpenSSL.xcframework; path = "Pods/OpenSSL-Universal/OpenSSL.xcframework"; sourceTree = "<group>"; };
90C59D862D9195980061E3E1 /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; 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>"; };
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */ /* End PBXFileReference section */
@@ -47,6 +52,7 @@
13B07FAE1A68108700A75B9A /* minibits_wallet */ = { 13B07FAE1A68108700A75B9A /* minibits_wallet */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
9044DC232D9556F600F918A6 /* minibits_wallet.entitlements */,
13B07FB51A68108700A75B9A /* Images.xcassets */, 13B07FB51A68108700A75B9A /* Images.xcassets */,
761780EC2CA45674006654EE /* AppDelegate.swift */, 761780EC2CA45674006654EE /* AppDelegate.swift */,
13B07FB61A68108700A75B9A /* Info.plist */, 13B07FB61A68108700A75B9A /* Info.plist */,
@@ -66,6 +72,15 @@
name = Frameworks; name = Frameworks;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4B24E47762034A51AEE63594 /* Resources */ = {
isa = PBXGroup;
children = (
6DA8A3418B7A4B348B67B9E7 /* Gluten-Regular.ttf */,
AB8A46AD84194C2583FF9193 /* nostr.png */,
);
name = Resources;
sourceTree = "<group>";
};
832341AE1AAA6A7D00B99B32 /* Libraries */ = { 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -76,12 +91,13 @@
83CBB9F61A601CBA00E9B192 = { 83CBB9F61A601CBA00E9B192 = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
90C59D862D9195980061E3E1 /* GoogleService-Info.plist */, 9044DC242D95937D00F918A6 /* GoogleService-Info.plist */,
13B07FAE1A68108700A75B9A /* minibits_wallet */, 13B07FAE1A68108700A75B9A /* minibits_wallet */,
832341AE1AAA6A7D00B99B32 /* Libraries */, 832341AE1AAA6A7D00B99B32 /* Libraries */,
83CBBA001A601CBA00E9B192 /* Products */, 83CBBA001A601CBA00E9B192 /* Products */,
2D16E6871FA4F8E400B85C8A /* Frameworks */, 2D16E6871FA4F8E400B85C8A /* Frameworks */,
BBD78D7AC51CEA395F1C20DB /* Pods */, BBD78D7AC51CEA395F1C20DB /* Pods */,
4B24E47762034A51AEE63594 /* Resources */,
); );
indentWidth = 2; indentWidth = 2;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -168,9 +184,11 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
90C59D872D9195980061E3E1 /* GoogleService-Info.plist in Resources */,
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
D610B97F2318E8AB9D0962D2 /* PrivacyInfo.xcprivacy in Resources */, D610B97F2318E8AB9D0962D2 /* PrivacyInfo.xcprivacy in Resources */,
C3AB98FDBCF446F99A4EA648 /* Gluten-Regular.ttf in Resources */,
A1B9A6F7058C4F12AB677FD4 /* nostr.png in Resources */,
9044DC252D95937D00F918A6 /* GoogleService-Info.plist in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -282,6 +300,7 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = minibits_wallet/minibits_wallet.entitlements;
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = GR2ZKMCLAM; DEVELOPMENT_TEAM = GR2ZKMCLAM;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
@@ -297,7 +316,7 @@
"-ObjC", "-ObjC",
"-lc++", "-lc++",
); );
PRODUCT_BUNDLE_IDENTIFIER = "com.ios.minibits-wallet"; PRODUCT_BUNDLE_IDENTIFIER = cash.minibits.wallet;
PRODUCT_NAME = minibits_wallet; PRODUCT_NAME = minibits_wallet;
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@@ -311,6 +330,7 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = minibits_wallet/minibits_wallet.entitlements;
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = GR2ZKMCLAM; DEVELOPMENT_TEAM = GR2ZKMCLAM;
INFOPLIST_FILE = minibits_wallet/Info.plist; INFOPLIST_FILE = minibits_wallet/Info.plist;
@@ -325,7 +345,7 @@
"-ObjC", "-ObjC",
"-lc++", "-lc++",
); );
PRODUCT_BUNDLE_IDENTIFIER = "com.ios.minibits-wallet"; PRODUCT_BUNDLE_IDENTIFIER = cash.minibits.wallet;
PRODUCT_NAME = minibits_wallet; PRODUCT_NAME = minibits_wallet;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
@@ -413,10 +433,7 @@
"-DFOLLY_CFG_NO_COROUTINES=1", "-DFOLLY_CFG_NO_COROUTINES=1",
"-DFOLLY_HAVE_CLOCK_GETTIME=1", "-DFOLLY_HAVE_CLOCK_GETTIME=1",
); );
OTHER_LDFLAGS = ( OTHER_LDFLAGS = "$(inherited) ";
"$(inherited)",
" ",
);
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos; SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG";
@@ -497,10 +514,7 @@
"-DFOLLY_CFG_NO_COROUTINES=1", "-DFOLLY_CFG_NO_COROUTINES=1",
"-DFOLLY_HAVE_CLOCK_GETTIME=1", "-DFOLLY_HAVE_CLOCK_GETTIME=1",
); );
OTHER_LDFLAGS = ( OTHER_LDFLAGS = "$(inherited) ";
"$(inherited)",
" ",
);
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos; SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule; SWIFT_COMPILATION_MODE = wholemodule;
Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

@@ -1,48 +1,9 @@
{ {
"images" : [ "images" : [
{ {
"idiom" : "iphone", "filename" : "1024.png",
"scale" : "2x", "idiom" : "universal",
"size" : "20x20" "platform" : "ios",
},
{
"idiom" : "iphone",
"scale" : "3x",
"size" : "20x20"
},
{
"idiom" : "iphone",
"scale" : "2x",
"size" : "29x29"
},
{
"idiom" : "iphone",
"scale" : "3x",
"size" : "29x29"
},
{
"idiom" : "iphone",
"scale" : "2x",
"size" : "40x40"
},
{
"idiom" : "iphone",
"scale" : "3x",
"size" : "40x40"
},
{
"idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
},
{
"idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
},
{
"idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024" "size" : "1024x1024"
} }
], ],
+14 -2
View File
@@ -5,7 +5,7 @@
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>en</string> <string>en</string>
<key>CFBundleDisplayName</key> <key>CFBundleDisplayName</key>
<string>minibits_wallet</string> <string>Minibits</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string> <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
@@ -26,14 +26,26 @@
<true/> <true/>
<key>NSAppTransportSecurity</key> <key>NSAppTransportSecurity</key>
<dict> <dict>
<!-- Do not change NSAllowsArbitraryLoads to true, or you will risk app rejection! -->
<key>NSAllowsArbitraryLoads</key> <key>NSAllowsArbitraryLoads</key>
<false/> <false/>
<key>NSAllowsLocalNetworking</key> <key>NSAllowsLocalNetworking</key>
<true/> <true/>
</dict> </dict>
<key>NSCameraUsageDescription</key>
<string>This app requires access to the camera to scan QR codes.</string>
<key>NSLocationWhenInUseUsageDescription</key> <key>NSLocationWhenInUseUsageDescription</key>
<string></string> <string></string>
<key>NSUserNotificationUsageDescription</key>
<string>This app uses notifications to keep you updated with incoming transactions.</string>
<key>UIAppFonts</key>
<array>
<string>Gluten-Regular.ttf</string>
</array>
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
<string>remote-notification</string>
</array>
<key>UILaunchStoryboardName</key> <key>UILaunchStoryboardName</key>
<string>LaunchScreen</string> <string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key> <key>UIRequiredDeviceCapabilities</key>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
</dict>
</plist>
+22
View File
@@ -0,0 +1,22 @@
diff --git a/node_modules/react-native/ReactCommon/react/renderer/animations/utils.h b/node_modules/react-native/ReactCommon/react/renderer/animations/utils.h
index 41b9be9..7ffc2f4 100644
--- a/node_modules/react-native/ReactCommon/react/renderer/animations/utils.h
+++ b/node_modules/react-native/ReactCommon/react/renderer/animations/utils.h
@@ -105,15 +105,11 @@ static inline bool shouldFirstComeBeforeSecondMutation(
// must come first.
if (lhs.type == ShadowViewMutation::Type::Remove &&
lhs.parentShadowView.tag == rhs.parentShadowView.tag) {
- if (lhs.index > rhs.index) {
- return true;
- } else {
- return false;
- }
+ return lhs.index > rhs.index;
}
}
- return false;
+ return &lhs < &rhs;
}
std::pair<Float, Float> calculateAnimationProgress(
+6 -3
View File
@@ -4,8 +4,6 @@ import {
APP_ENV, APP_ENV,
SENTRY_DSN, SENTRY_DSN,
JS_BUNDLE_VERSION, JS_BUNDLE_VERSION,
CODEPUSH_STAGING_DEPLOYMENT_KEY,
CODEPUSH_PRODUCTION_DEPLOYMENT_KEY,
ANDROID_VERSION_NAME, ANDROID_VERSION_NAME,
} from '@env' } from '@env'
// import codePush from 'react-native-code-push' // import codePush from 'react-native-code-push'
@@ -26,7 +24,7 @@ import Config from './config'
import {log} from './services' import {log} from './services'
import {Env} from './utils/envtypes' import {Env} from './utils/envtypes'
import AppError from './utils/AppError' import AppError from './utils/AppError'
import { Image, TextStyle, View } from 'react-native' import { Image, TextStyle, View, Platform, UIManager } from 'react-native'
import { spacing, typography } from './theme' import { spacing, typography } from './theme'
import { displayName } from '../app.json' import { displayName } from '../app.json'
import { Text } from './components/Text' import { Text } from './components/Text'
@@ -52,6 +50,11 @@ if (!__DEV__) {
}) })
} }
if (Platform.OS === 'android' &&
UIManager.setLayoutAnimationEnabledExperimental) {
UIManager.setLayoutAnimationEnabledExperimental(true)
}
function App() { function App() {
const {userSettingsStore, relaysStore} = useStores() const {userSettingsStore, relaysStore} = useStores()
+1 -1
View File
@@ -19,7 +19,7 @@ const maxLines = 50
export const CollapsibleText = (props: CollapsibleProps) => { export const CollapsibleText = (props: CollapsibleProps) => {
const [collapsed, setCollapsed] = useState(props?.collapsed ?? false) const [collapsed, setCollapsed] = useState(props?.collapsed ?? false)
const toggleCollapse = () => { const toggleCollapse = () => {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
setCollapsed(!collapsed) setCollapsed(!collapsed)
} }
const textDim = useThemeColor('textDim') const textDim = useThemeColor('textDim')
+1 -6
View File
@@ -7,11 +7,6 @@ import { isObj } from '@cashu/cashu-ts/src/utils'
import JSONTree from 'react-native-json-tree' import JSONTree from 'react-native-json-tree'
import Clipboard from '@react-native-clipboard/clipboard' import Clipboard from '@react-native-clipboard/clipboard'
if (Platform.OS === 'android' &&
UIManager.setLayoutAnimationEnabledExperimental) {
UIManager.setLayoutAnimationEnabledExperimental(true)
}
type ErrorModalProps = { type ErrorModalProps = {
error: AppError error: AppError
} }
@@ -28,7 +23,7 @@ export const ErrorModal: FC<ErrorModalProps> = function ({ error }) {
}, [error]) }, [error])
const toggleParams = () => { const toggleParams = () => {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
setIsParamsVisible(previousState => !previousState) setIsParamsVisible(previousState => !previousState)
} }
+7 -6
View File
@@ -292,19 +292,20 @@ const $separatorBottom: ViewStyle = {
} }
const $textStyle: TextStyle = { const $textStyle: TextStyle = {
// alignSelf: 'flex-start', alignSelf: 'flex-start',
paddingVertical: spacing.extraSmall, // paddingVertical: spacing.extraSmall,
// alignSelf: "center",
textAlignVertical: 'center', textAlignVertical: 'center',
flexGrow: 1, // borderColor: 'red',
flexShrink: 1, // borderWidth: 1,
} }
const $subTextContainer: ViewStyle = { const $subTextContainer: ViewStyle = {
flex: 1, flex: 1,
flexDirection: 'column', flexDirection: 'column',
// borderColor: 'red', justifyContent: 'center',
// borderColor: 'green',
// borderWidth: 1, // borderWidth: 1,
alignSelf: 'stretch',
} }
const $subTextStyle: TextStyle = { const $subTextStyle: TextStyle = {
+4
View File
@@ -105,6 +105,10 @@ export const MintsStoreModel = types
})) }))
.actions(self => ({ .actions(self => ({
addMint: flow(function* addMint(mintUrl: string) { addMint: flow(function* addMint(mintUrl: string) {
if(!mintUrl) {
throw new AppError(Err.VALIDATION_ERROR, 'Mint URL is required.')
}
if(!mintUrl.includes('.onion') && !mintUrl.startsWith('https')) { if(!mintUrl.includes('.onion') && !mintUrl.startsWith('https')) {
throw new AppError(Err.VALIDATION_ERROR, 'Mint URL needs to start with https.') throw new AppError(Err.VALIDATION_ERROR, 'Mint URL needs to start with https.')
} }
+5 -5
View File
@@ -17,13 +17,12 @@ import {
import { debounce } from "lodash" import { debounce } from "lodash"
import * as Sentry from '@sentry/react-native' import * as Sentry from '@sentry/react-native'
import type {RootStore} from '../RootStore' import type {RootStore} from '../RootStore'
import {KeyChain, MinibitsClient, MMKVStorage} from '../../services' import {KeyChain, MMKVStorage} from '../../services'
import {Database} from '../../services' import {Database} from '../../services'
import { log } from '../../services/logService' import { log } from '../../services/logService'
import { rootStoreModelVersion } from '../RootStore' import { rootStoreModelVersion } from '../RootStore'
import AppError, { Err } from '../../utils/AppError' import AppError, { Err } from '../../utils/AppError'
import { LogLevel } from '../../services/log/logTypes' import { LogLevel } from '../../services/log/logTypes'
import { MintStatus } from '../Mint'
import { CurrencyCode } from '../../services/wallet/currency' import { CurrencyCode } from '../../services/wallet/currency'
import { ThemeCode } from '../../theme' import { ThemeCode } from '../../theme'
@@ -79,14 +78,15 @@ export async function setupRootStore(rootStore: RootStore) {
} }
// track changes & save snapshot to the storage not more then once per second // track changes & save snapshot to the storage not more then once per second
const saveSnapshot = debounce((snapshot) => { /* const saveSnapshot = debounce((snapshot) => {
MMKVStorage.save(ROOT_STORAGE_KEY, snapshot) MMKVStorage.save(ROOT_STORAGE_KEY, snapshot)
}, 1000) }, 1000)*/
_disposer = onSnapshot(rootStore, snapshot => { _disposer = onSnapshot(rootStore, snapshot => {
// log.trace('[setupRootStore] onSnapshot *** MMKV SHOULD SAVE ***') // log.trace('[setupRootStore] onSnapshot *** MMKV SHOULD SAVE ***')
saveSnapshot(snapshot) // saveSnapshot(snapshot)
// log.trace('[setupRootStore] saved', {walletStore: snapshot.walletStore}) // log.trace('[setupRootStore] saved', {walletStore: snapshot.walletStore})
MMKVStorage.save(ROOT_STORAGE_KEY, snapshot)
}) })
// run migrations if needed, needs to be after onSnapshot to be persisted // run migrations if needed, needs to be after onSnapshot to be persisted
+2 -7
View File
@@ -24,11 +24,6 @@ import { toJS } from 'mobx'
const defaultPublicNpub = 'npub1kvaln6tm0re4d99q9e4ma788wpvnw0jzkz595cljtfgwhldd75xsj9tkzv' const defaultPublicNpub = 'npub1kvaln6tm0re4d99q9e4ma788wpvnw0jzkz595cljtfgwhldd75xsj9tkzv'
const maxContactsToLoad = 20 const maxContactsToLoad = 20
if (Platform.OS === 'android' &&
UIManager.setLayoutAnimationEnabledExperimental) {
UIManager.setLayoutAnimationEnabledExperimental(true)
}
export const PublicContacts = observer(function (props: { export const PublicContacts = observer(function (props: {
paymentOption: ReceiveOption | SendOption | undefined} paymentOption: ReceiveOption | SendOption | undefined}
) { ) {
@@ -418,13 +413,13 @@ export const PublicContacts = observer(function (props: {
const collapseProfile = function () { const collapseProfile = function () {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
setIsOwnProfileVisible(false) setIsOwnProfileVisible(false)
} }
const expandProfile = function () { const expandProfile = function () {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
setIsOwnProfileVisible(true) setIsOwnProfileVisible(true)
} }
+2 -7
View File
@@ -37,11 +37,6 @@ import { ContactsStoreSnapshot } from '../models/ContactsStore'
import { CashuMint, MintActiveKeys } from '@cashu/cashu-ts' import { CashuMint, MintActiveKeys } from '@cashu/cashu-ts'
import { StaticScreenProps, useNavigation } from '@react-navigation/native' import { StaticScreenProps, useNavigation } from '@react-navigation/native'
if (Platform.OS === 'android' && UIManager.setLayoutAnimationEnabledExperimental) {
UIManager.setLayoutAnimationEnabledExperimental(true)
}
type Props = StaticScreenProps<undefined> type Props = StaticScreenProps<undefined>
export const ImportBackupScreen = observer(function ImportBackupScreen({ route }: Props) { export const ImportBackupScreen = observer(function ImportBackupScreen({ route }: Props) {
@@ -111,7 +106,7 @@ export const ImportBackupScreen = observer(function ImportBackupScreen({ route }
throw new AppError(Err.VALIDATION_ERROR, translate('backupScreen.missingMnemonicError')) throw new AppError(Err.VALIDATION_ERROR, translate('backupScreen.missingMnemonicError'))
} }
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
if (!validateMnemonic(mnemonic, wordlist)) { if (!validateMnemonic(mnemonic, wordlist)) {
throw new AppError(Err.VALIDATION_ERROR, translate("recoveryInvalidMnemonicError")) throw new AppError(Err.VALIDATION_ERROR, translate("recoveryInvalidMnemonicError"))
@@ -203,7 +198,7 @@ export const ImportBackupScreen = observer(function ImportBackupScreen({ route }
throw new AppError(Err.VALIDATION_ERROR, 'Missing backup.') throw new AppError(Err.VALIDATION_ERROR, 'Missing backup.')
} }
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
const snapshot = getWalletSnapshot() // throws const snapshot = getWalletSnapshot() // throws
+1 -6
View File
@@ -36,11 +36,6 @@ import { CurrencyCode, formatCurrency } from '../services/wallet/currency'
import { QRShareModal } from '../components/QRShareModal' import { QRShareModal } from '../components/QRShareModal'
import { StaticScreenProps, useNavigation } from '@react-navigation/native' import { StaticScreenProps, useNavigation } from '@react-navigation/native'
if (Platform.OS === 'android' && UIManager.setLayoutAnimationEnabledExperimental) {
UIManager.setLayoutAnimationEnabledExperimental(true)
}
interface DetailedNutInfo { interface DetailedNutInfo {
methods: Array<SwapMethod>; methods: Array<SwapMethod>;
disabled: boolean; disabled: boolean;
@@ -133,7 +128,7 @@ export const MintInfoScreen = observer(function MintInfoScreen({ route }: Props)
}, []) }, [])
const toggleLocalInfo = () => { const toggleLocalInfo = () => {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
setIsLocalInfoVisible(!isLocalInfoVisible) setIsLocalInfoVisible(!isLocalInfoVisible)
} }
+9 -5
View File
@@ -1,5 +1,5 @@
import React, { useEffect, useState } from "react" import React, { useEffect, useState } from "react"
import { FlatList, Keyboard, LayoutAnimation, View, ViewStyle } from "react-native" import { FlatList, Keyboard, LayoutAnimation, Platform, View, ViewStyle } from "react-native"
import { observer } from "mobx-react-lite" import { observer } from "mobx-react-lite"
import { Button, Card} from "../../components" import { Button, Card} from "../../components"
import { spacing } from "../../theme" import { spacing } from "../../theme"
@@ -32,14 +32,18 @@ export const MintBalanceSelector = observer(function (props: {
const keyboardDidShowListener = Keyboard.addListener( const keyboardDidShowListener = Keyboard.addListener(
'keyboardDidShow', 'keyboardDidShow',
() => { () => {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) if(Platform.OS === 'android') {
LayoutAnimation.easeInEaseOut()
}
setIsKeyboardVisible(true); setIsKeyboardVisible(true);
} }
); );
const keyboardDidHideListener = Keyboard.addListener( const keyboardDidHideListener = Keyboard.addListener(
'keyboardDidHide', 'keyboardDidHide',
() => { () => {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) if(Platform.OS === 'android') {
LayoutAnimation.easeInEaseOut()
}
setIsKeyboardVisible(false); setIsKeyboardVisible(false);
} }
); );
@@ -53,13 +57,13 @@ export const MintBalanceSelector = observer(function (props: {
useEffect(() => { useEffect(() => {
if(!props.selectedMintBalance) { if(!props.selectedMintBalance) {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
setAllVisible(true) setAllVisible(true)
} }
}, []) }, [])
const toggleAllVisible = function () { const toggleAllVisible = function () {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
setAllVisible(!allVisible) setAllVisible(!allVisible)
} }
+1 -6
View File
@@ -17,11 +17,6 @@ import { translate } from '../i18n'
import { StaticScreenProps, useNavigation } from '@react-navigation/native' import { StaticScreenProps, useNavigation } from '@react-navigation/native'
if (Platform.OS === 'android' &&
UIManager.setLayoutAnimationEnabledExperimental) {
UIManager.setLayoutAnimationEnabledExperimental(true)
}
type Props = StaticScreenProps<{}> type Props = StaticScreenProps<{}>
export const OwnKeysScreen = observer(function OwnKeysScreen({ route }: Props) { export const OwnKeysScreen = observer(function OwnKeysScreen({ route }: Props) {
@@ -141,7 +136,7 @@ export const OwnKeysScreen = observer(function OwnKeysScreen({ route }: Props) {
profile.name = nip05Name as string profile.name = nip05Name as string
} }
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
log.trace('Got valid profile', profile) log.trace('Got valid profile', profile)
setOwnProfile(profile) setOwnProfile(profile)
+1 -5
View File
@@ -18,10 +18,6 @@ import { WalletProfileRecord } from '../models/WalletProfileStore'
import { translate } from '../i18n' import { translate } from '../i18n'
import { StackActions, StaticScreenProps, useNavigation } from '@react-navigation/native' import { StackActions, StaticScreenProps, useNavigation } from '@react-navigation/native'
if (Platform.OS === 'android' && UIManager.setLayoutAnimationEnabledExperimental) {
UIManager.setLayoutAnimationEnabledExperimental(true)
}
type Props = StaticScreenProps<undefined> type Props = StaticScreenProps<undefined>
export const RecoverWalletAddressScreen = observer(function RecoverWalletAddressScreen({ route }: Props) { export const RecoverWalletAddressScreen = observer(function RecoverWalletAddressScreen({ route }: Props) {
@@ -52,7 +48,7 @@ export const RecoverWalletAddressScreen = observer(function RecoverWalletAddress
throw new AppError(Err.VALIDATION_ERROR, translate('backupScreen.missingMnemonicError')) throw new AppError(Err.VALIDATION_ERROR, translate('backupScreen.missingMnemonicError'))
} }
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
if (!validateMnemonic(mnemonic, wordlist)) { if (!validateMnemonic(mnemonic, wordlist)) {
throw new AppError(Err.VALIDATION_ERROR, translate("recoveryInvalidMnemonicError")) throw new AppError(Err.VALIDATION_ERROR, translate("recoveryInvalidMnemonicError"))
+1 -5
View File
@@ -43,10 +43,6 @@ import { WalletProfileRecord } from '../models/WalletProfileStore'
import { MnemonicInput } from './Recovery/MnemonicInput' import { MnemonicInput } from './Recovery/MnemonicInput'
import { StaticScreenProps, useNavigation } from '@react-navigation/native' import { StaticScreenProps, useNavigation } from '@react-navigation/native'
if (Platform.OS === 'android' && UIManager.setLayoutAnimationEnabledExperimental) {
UIManager.setLayoutAnimationEnabledExperimental(true)
}
const RESTORE_INDEX_INTERVAL = 50 const RESTORE_INDEX_INTERVAL = 50
type Props = StaticScreenProps<undefined> type Props = StaticScreenProps<undefined>
@@ -143,7 +139,7 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
throw new AppError(Err.VALIDATION_ERROR, translate('backupScreen.missingMnemonicError')) throw new AppError(Err.VALIDATION_ERROR, translate('backupScreen.missingMnemonicError'))
} }
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
if (!validateMnemonic(mnemonic, wordlist)) { if (!validateMnemonic(mnemonic, wordlist)) {
throw new AppError(Err.VALIDATION_ERROR, translate("recoveryInvalidMnemonicError")) throw new AppError(Err.VALIDATION_ERROR, translate("recoveryInvalidMnemonicError"))
+2 -7
View File
@@ -71,11 +71,6 @@ export enum SendOption {
// DONATION = 'DONATION', // DONATION = 'DONATION',
} }
if (Platform.OS === 'android' &&
UIManager.setLayoutAnimationEnabledExperimental) {
UIManager.setLayoutAnimationEnabledExperimental(true)
}
type Props = StaticScreenProps<{ type Props = StaticScreenProps<{
unit: MintUnit, unit: MintUnit,
paymentOption?: SendOption, paymentOption?: SendOption,
@@ -549,7 +544,7 @@ export const SendScreen = observer(function SendScreen({ route }: Props) {
return return
} }
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
setAmountToSend(`${numbro(amountToSend).format({thousandSeparated: true, mantissa: getCurrency(unitRef.current).mantissa})}`) setAmountToSend(`${numbro(amountToSend).format({thousandSeparated: true, mantissa: getCurrency(unitRef.current).mantissa})}`)
setAvailableMintBalances(availableBalances) setAvailableMintBalances(availableBalances)
@@ -568,7 +563,7 @@ export const SendScreen = observer(function SendScreen({ route }: Props) {
const onMemoEndEditing = function () { const onMemoEndEditing = function () {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
// Show mint selector // Show mint selector
if (availableMintBalances.length > 0) { if (availableMintBalances.length > 0) {
+3 -9
View File
@@ -64,13 +64,6 @@ import {TranItem} from './TranDetailScreen'
import {translate} from '../i18n' import {translate} from '../i18n'
import { TOPUP_TASK } from '../services/wallet/topupTask' import { TOPUP_TASK } from '../services/wallet/topupTask'
if (
Platform.OS === 'android' &&
UIManager.setLayoutAnimationEnabledExperimental
) {
UIManager.setLayoutAnimationEnabledExperimental(true)
}
type Props = StaticScreenProps<{ type Props = StaticScreenProps<{
unit: MintUnit, unit: MintUnit,
paymentOption?: ReceiveOption, paymentOption?: ReceiveOption,
@@ -426,7 +419,7 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
} }
setIsAmountEndEditing(true) setIsAmountEndEditing(true)
// We do not make memo focus mandatory // We do not make memo focus mandatory
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
// Show mint selector // Show mint selector
setIsMintSelectorVisible(true) setIsMintSelectorVisible(true)
} catch (e: any) { } catch (e: any) {
@@ -435,7 +428,7 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
} }
const onMemoEndEditing = function () { const onMemoEndEditing = function () {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
// Show mint selector // Show mint selector
if (availableMintBalances.length > 0) { if (availableMintBalances.length > 0) {
@@ -679,6 +672,7 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
editable={ editable={
transactionStatus === TransactionStatus.PENDING ? false : true transactionStatus === TransactionStatus.PENDING ? false : true
} }
returnKeyType={'done'}
/> />
<Text <Text
size="sm" size="sm"
+1 -7
View File
@@ -58,12 +58,6 @@ import { MintListItem } from './Mints/MintListItem'
import { Token, getDecodedToken } from '@cashu/cashu-ts' import { Token, getDecodedToken } from '@cashu/cashu-ts'
import { RECEIVE_OFFLINE_COMPLETE_TASK, RECEIVE_TASK } from '../services/wallet/receiveTask' import { RECEIVE_OFFLINE_COMPLETE_TASK, RECEIVE_TASK } from '../services/wallet/receiveTask'
import { REVERT_TASK } from '../services/wallet/revertTask' import { REVERT_TASK } from '../services/wallet/revertTask'
import { TranHistoryScreen } from './TranHistoryScreen'
import { WalletScreen } from './WalletScreen'
if (Platform.OS === 'android' && UIManager.setLayoutAnimationEnabledExperimental) {
UIManager.setLayoutAnimationEnabledExperimental(true)
}
type ProofsByStatus = { type ProofsByStatus = {
isSpent: Proof[] isSpent: Proof[]
@@ -93,7 +87,7 @@ export const TranDetailScreen = observer(function TranDetailScreen({ route }: Pr
const [isAuditTrailVisible, setIsAuditTrailVisible] = useState<boolean>(false) const [isAuditTrailVisible, setIsAuditTrailVisible] = useState<boolean>(false)
const toggleAuditTrail = () => { const toggleAuditTrail = () => {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
setIsAuditTrailVisible(!isAuditTrailVisible) setIsAuditTrailVisible(!isAuditTrailVisible)
} }
+2 -6
View File
@@ -34,10 +34,6 @@ import { translate } from '../i18n'
import { maxTransactionsInHistory } from '../models/TransactionsStore' import { maxTransactionsInHistory } from '../models/TransactionsStore'
import { StaticScreenProps, useNavigation } from '@react-navigation/native' import { StaticScreenProps, useNavigation } from '@react-navigation/native'
if (Platform.OS === 'android' &&
UIManager.setLayoutAnimationEnabledExperimental) {
UIManager.setLayoutAnimationEnabledExperimental(true)
}
// Number of transactions held in TransactionsStore model // Number of transactions held in TransactionsStore model
const limit = maxTransactionsInHistory const limit = maxTransactionsInHistory
@@ -181,13 +177,13 @@ export const TranHistoryScreen = observer(function TranHistoryScreen({ route }:
const collapseHeader = function () { const collapseHeader = function () {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
setIsHeaderVisible(false) setIsHeaderVisible(false)
} }
const expandHeader = function () { const expandHeader = function () {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) LayoutAnimation.easeInEaseOut()
setIsHeaderVisible(true) setIsHeaderVisible(true)
} }
-9
View File
@@ -50,15 +50,6 @@ import useIsInternetReachable from '../utils/useIsInternetReachable'
import { translate } from '../i18n' import { translate } from '../i18n'
import { MemoInputCard } from '../components/MemoInputCard' import { MemoInputCard } from '../components/MemoInputCard'
import { TRANSFER_TASK } from '../services/wallet/transferTask' import { TRANSFER_TASK } from '../services/wallet/transferTask'
import { LNURLWithdrawParams } from 'js-lnurl'
if (
Platform.OS === 'android' &&
UIManager.setLayoutAnimationEnabledExperimental
) {
UIManager.setLayoutAnimationEnabledExperimental(true)
}
type Props = StaticScreenProps<{ type Props = StaticScreenProps<{
unit: MintUnit, unit: MintUnit,
+9 -9
View File
@@ -14,6 +14,7 @@ import {
Linking, Linking,
LayoutAnimation, LayoutAnimation,
AppStateStatus, AppStateStatus,
Platform,
} from 'react-native' } from 'react-native'
// import codePush, { RemotePackage } from 'react-native-code-push' // import codePush, { RemotePackage } from 'react-native-code-push'
import {moderateScale, verticalScale} from '@gocodingnow/rn-size-matters' import {moderateScale, verticalScale} from '@gocodingnow/rn-size-matters'
@@ -47,13 +48,8 @@ import {WalletTask} from '../services'
import {translate} from '../i18n' import {translate} from '../i18n'
import AppError, { Err } from '../utils/AppError' import AppError, { Err } from '../utils/AppError'
import { import {
APP_ENV,
CODEPUSH_STAGING_DEPLOYMENT_KEY,
CODEPUSH_PRODUCTION_DEPLOYMENT_KEY,
MINIBITS_MINT_URL, MINIBITS_MINT_URL,
ANDROID_VERSION_NAME
} from '@env' } from '@env'
import { round } from '../utils/number'
import { IncomingParser } from '../services/incomingParser' import { IncomingParser } from '../services/incomingParser'
import useIsInternetReachable from '../utils/useIsInternetReachable' import useIsInternetReachable from '../utils/useIsInternetReachable'
import { CurrencySign } from './Wallet/CurrencySign' import { CurrencySign } from './Wallet/CurrencySign'
@@ -62,7 +58,7 @@ import { CurrencyAmount } from './Wallet/CurrencyAmount'
import { LeftProfileHeader } from './ContactsScreen' import { LeftProfileHeader } from './ContactsScreen'
import { getUnixTime } from 'date-fns/getUnixTime' import { getUnixTime } from 'date-fns/getUnixTime'
const deploymentKey = APP_ENV === Env.PROD ? CODEPUSH_PRODUCTION_DEPLOYMENT_KEY : CODEPUSH_STAGING_DEPLOYMENT_KEY
const MINT_CHECK_INTERVAL = 60 const MINT_CHECK_INTERVAL = 60
type Props = StaticScreenProps<{ type Props = StaticScreenProps<{
@@ -913,12 +909,16 @@ const MintsByUnitList = observer(function (props: {
const onSelectedMint = function (mintUrl: string) { const onSelectedMint = function (mintUrl: string) {
if (selectedMintUrl && selectedMintUrl === mintUrl) { if (selectedMintUrl && selectedMintUrl === mintUrl) {
LayoutAnimation.easeInEaseOut() if(Platform.OS === 'android') {
LayoutAnimation.easeInEaseOut()
}
setSelectedMintUrl(undefined) setSelectedMintUrl(undefined)
return return
} }
LayoutAnimation.easeInEaseOut() if(Platform.OS === 'android') {
LayoutAnimation.easeInEaseOut()
}
setSelectedMintUrl(mintUrl) setSelectedMintUrl(mintUrl)
} }
@@ -962,7 +962,7 @@ const MintsByUnitList = observer(function (props: {
//topSeparator={true} //topSeparator={true}
style={$item} style={$item}
onPress={() => onSelectedMint(mint.mintUrl)} onPress={() => onSelectedMint(mint.mintUrl)}
topSeparator={index !== 0 ?? true} topSeparator={index > 0 ? true : false}
/> />
{selectedMintUrl === mint.mintUrl && ( {selectedMintUrl === mint.mintUrl && (
<View style={{flexDirection: 'row', marginBottom: spacing.small, justifyContent: 'flex-start'}}> <View style={{flexDirection: 'row', marginBottom: spacing.small, justifyContent: 'flex-start'}}>
+1 -1
View File
@@ -7,7 +7,7 @@ import {
} from '@env' } from '@env'
import { WalletProfile, WalletProfileRecord } from "../models/WalletProfileStore" import { WalletProfile, WalletProfileRecord } from "../models/WalletProfileStore"
import { CurrencyCode } from "./wallet/currency" import { CurrencyCode } from "./wallet/currency"
// refresh // refresh
type MinibitsRequestArgs = { type MinibitsRequestArgs = {
method: 'POST' | 'PUT' | 'DELETE' | 'GET' method: 'POST' | 'PUT' | 'DELETE' | 'GET'
+5 -3
View File
@@ -12,9 +12,9 @@ import { neventEncode as nostrNeventEncode, npubEncode, decode as nip19Decode }
import {SimplePool} from 'nostr-tools/pool' import {SimplePool} from 'nostr-tools/pool'
import { hexToBytes } from '@noble/hashes/utils' import { hexToBytes } from '@noble/hashes/utils'
import { PrivateDirectMessage, Metadata } from 'nostr-tools/kinds' import { PrivateDirectMessage, Metadata } from 'nostr-tools/kinds'
import { /*import {
MINIBITS_RELAY_URL, MINIBITS_RELAY_URL,
} from '@env' } from '@env'*/
import {NostrKeyPair} from './keyChain' import {NostrKeyPair} from './keyChain'
import {log} from './logService' import {log} from './logService'
import AppError, { Err } from '../utils/AppError' import AppError, { Err } from '../utils/AppError'
@@ -22,6 +22,7 @@ import { MinibitsClient } from './minibitsService'
import { rootStoreInstance } from '../models' import { rootStoreInstance } from '../models'
import { WalletTask } from './walletService' import { WalletTask } from './walletService'
// refresh
export { export {
NostrEvent, NostrEvent,
@@ -49,9 +50,10 @@ export type Nip05VerificationRecord = {
} }
// TODO cleanup all this shit, move to RelayStore model // TODO cleanup all this shit, move to RelayStore model
// refresh
const _defaultPublicRelays: string[] = ['wss://relay.primal.net', 'wss://relay.damus.io'] const _defaultPublicRelays: string[] = ['wss://relay.primal.net', 'wss://relay.damus.io']
const _minibitsRelays: string[] = [MINIBITS_RELAY_URL] const _minibitsRelays: string[] = ['wss://relay.minibits.cash']
let _pool: any = undefined let _pool: any = undefined
+2 -4
View File
@@ -1,16 +1,14 @@
declare module '@env' { declare module '@env' {
export const APP_ENV: string export const APP_ENV: string
export const SENTRY_DSN: string export const SENTRY_DSN: string
export const CODEPUSH_PRODUCTION_DEPLOYMENT_KEY: string
export const CODEPUSH_STAGING_DEPLOYMENT_KEY: string
export const ANDROID_VERSION_NAME: string
export const ANDROID_VERSION_CODE: string
export const MINIBITS_SERVER_API_KEY: string export const MINIBITS_SERVER_API_KEY: string
export const MINIBITS_SERVER_API_HOST: string export const MINIBITS_SERVER_API_HOST: string
export const MINIBIT_SERVER_NOSTR_PUBKEY: string export const MINIBIT_SERVER_NOSTR_PUBKEY: string
export const MINIBITS_NIP05_DOMAIN: string export const MINIBITS_NIP05_DOMAIN: string
export const MINIBITS_RELAY_URL: string export const MINIBITS_RELAY_URL: string
export const MINIBITS_MINT_URL: string export const MINIBITS_MINT_URL: string
export const ANDROID_VERSION_NAME: string
export const ANDROID_VERSION_CODE: string
export const JS_BUNDLE_VERSION: string export const JS_BUNDLE_VERSION: string
export const COMMIT: string export const COMMIT: string
} }