mirror of
https://github.com/selfxyz/self.git
synced 2026-04-27 03:01:15 -04:00
Merge pull request #1968 from selfxyz/release/staging-2026-04-13
Release to Staging v2.9.17 - 2026-04-13
This commit is contained in:
52
app/App.tsx
52
app/App.tsx
@@ -5,7 +5,7 @@
|
||||
// CI/CD Pipeline Test - July 31, 2025 - With Permissions Fix
|
||||
import React from 'react';
|
||||
import { Platform } from 'react-native';
|
||||
import { YStack } from 'tamagui';
|
||||
import { Theme, YStack } from 'tamagui';
|
||||
import type {
|
||||
TurnkeyCallbacks,
|
||||
TurnkeyProviderConfig,
|
||||
@@ -90,30 +90,32 @@ export const TURNKEY_CONFIG: TurnkeyProviderConfig = {
|
||||
function App(): React.JSX.Element {
|
||||
return (
|
||||
<ErrorBoundary>
|
||||
<YStack flex={1} height="100%" width="100%">
|
||||
<RemoteConfigProvider>
|
||||
<LoggerProvider>
|
||||
<SelfClientProvider>
|
||||
<AuthProvider>
|
||||
<PassportProvider>
|
||||
<DatabaseProvider>
|
||||
<NotificationTrackingProvider>
|
||||
<FeedbackProvider>
|
||||
<TurnkeyProvider
|
||||
config={TURNKEY_CONFIG}
|
||||
callbacks={TURNKEY_CALLBACKS}
|
||||
>
|
||||
<AppNavigation />
|
||||
</TurnkeyProvider>
|
||||
</FeedbackProvider>
|
||||
</NotificationTrackingProvider>
|
||||
</DatabaseProvider>
|
||||
</PassportProvider>
|
||||
</AuthProvider>
|
||||
</SelfClientProvider>
|
||||
</LoggerProvider>
|
||||
</RemoteConfigProvider>
|
||||
</YStack>
|
||||
<Theme name="light">
|
||||
<YStack flex={1} height="100%" width="100%">
|
||||
<RemoteConfigProvider>
|
||||
<LoggerProvider>
|
||||
<SelfClientProvider>
|
||||
<AuthProvider>
|
||||
<PassportProvider>
|
||||
<DatabaseProvider>
|
||||
<NotificationTrackingProvider>
|
||||
<FeedbackProvider>
|
||||
<TurnkeyProvider
|
||||
config={TURNKEY_CONFIG}
|
||||
callbacks={TURNKEY_CALLBACKS}
|
||||
>
|
||||
<AppNavigation />
|
||||
</TurnkeyProvider>
|
||||
</FeedbackProvider>
|
||||
</NotificationTrackingProvider>
|
||||
</DatabaseProvider>
|
||||
</PassportProvider>
|
||||
</AuthProvider>
|
||||
</SelfClientProvider>
|
||||
</LoggerProvider>
|
||||
</RemoteConfigProvider>
|
||||
</YStack>
|
||||
</Theme>
|
||||
</ErrorBoundary>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ android {
|
||||
applicationId "com.proofofpassportapp"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 142
|
||||
versionCode 146
|
||||
versionName "2.9.17"
|
||||
manifestPlaceholders = [appAuthRedirectScheme: 'com.proofofpassportapp']
|
||||
externalNativeBuild {
|
||||
|
||||
@@ -31,10 +31,8 @@
|
||||
<array>
|
||||
<string>proofofpassport</string>
|
||||
<string>com.warroom.proofofpassport</string>
|
||||
<!-- TODO: Replace with reversed iOS client ID from Google Cloud Console -->
|
||||
<!-- Format: com.googleusercontent.apps.YOUR-IOS-CLIENT-ID -->
|
||||
<!-- See: app/.env for instructions on creating the iOS client ID -->
|
||||
<string>com.googleusercontent.apps.YOUR_CLIENT_ID</string>
|
||||
<!-- TODO: Uncomment when social logins ship — replace with reversed iOS client ID -->
|
||||
<!-- <string>com.googleusercontent.apps.YOUR_CLIENT_ID</string> -->
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
|
||||
@@ -477,7 +477,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = OpenPassport/OpenPassportDebug.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 189;
|
||||
CURRENT_PROJECT_VERSION = 216;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_APP_SANDBOX = NO;
|
||||
ENABLE_BITCODE = NO;
|
||||
@@ -620,7 +620,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = OpenPassport/OpenPassport.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 189;
|
||||
CURRENT_PROJECT_VERSION = 216;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_APP_SANDBOX = NO;
|
||||
ENABLE_RESOURCE_ACCESS_CAMERA = YES;
|
||||
|
||||
@@ -21,14 +21,6 @@ export const TunnelProofReceiptScreen: React.FC = () => {
|
||||
const { backPath = '/tunnel/proof/result', backState } =
|
||||
(location.state as { backPath?: string; backState?: Record<string, unknown> } | null) ?? {};
|
||||
|
||||
const showConfirm = backPath !== '/tunnel/proof/result' || backState?.success === true;
|
||||
|
||||
const onConfirm = useCallback(() => {
|
||||
haptic.trigger('selection');
|
||||
analytics.trackEvent('tunnel_proof_receipt_confirmed');
|
||||
navigate('/tunnel/proof/disclose');
|
||||
}, [navigate, haptic, analytics]);
|
||||
|
||||
const proofItems = useMemo(() => {
|
||||
if (displayLabels && displayLabels.length > 0) {
|
||||
return displayLabels.map(label => ({ label }));
|
||||
@@ -49,7 +41,6 @@ export const TunnelProofReceiptScreen: React.FC = () => {
|
||||
{...WEB_SAFE_AREA}
|
||||
variant="default"
|
||||
onClose={onClose}
|
||||
onConfirm={showConfirm ? onConfirm : undefined}
|
||||
appIcon={<SelfLogo size={40} />}
|
||||
appName={appName}
|
||||
appEndpoint={appEndpoint}
|
||||
|
||||
@@ -31,18 +31,6 @@ const getTunnelBackPath = (source: TunnelResultState['source']): string => {
|
||||
}
|
||||
};
|
||||
|
||||
const getTunnelClosePath = (source: TunnelResultState['source']): string => {
|
||||
switch (source) {
|
||||
case 'disclose':
|
||||
return '/tunnel/proof/disclose';
|
||||
case 'kyc':
|
||||
return '/tunnel/kyc';
|
||||
case 'proving':
|
||||
default:
|
||||
return '/tunnel/tour/4';
|
||||
}
|
||||
};
|
||||
|
||||
export const TunnelResultScreen: React.FC = () => {
|
||||
const navigate = useNavigate();
|
||||
const location = useLocation();
|
||||
@@ -84,9 +72,27 @@ export const TunnelResultScreen: React.FC = () => {
|
||||
});
|
||||
}, [location.pathname, location.state, navigate]);
|
||||
|
||||
const onCancel = useCallback(() => {
|
||||
navigate(getTunnelClosePath(source), { replace: true });
|
||||
}, [navigate, source]);
|
||||
const onCancel = useCallback(async () => {
|
||||
try {
|
||||
const result: VerificationResult = {
|
||||
success: false,
|
||||
userId: request.userId,
|
||||
verificationId,
|
||||
error: {
|
||||
code: 'VERIFICATION_FAILED',
|
||||
message: error ?? 'Verification failed',
|
||||
},
|
||||
};
|
||||
await lifecycle.setResult(result);
|
||||
analytics.trackEvent('tunnel_result_cancelled', { source });
|
||||
lifecycle.dismiss();
|
||||
} catch (err) {
|
||||
analytics.trackEvent('tunnel_result_cancel_failed', {
|
||||
error: err instanceof Error ? err.message : 'Failed to send cancel result',
|
||||
});
|
||||
lifecycle.dismiss();
|
||||
}
|
||||
}, [request.userId, verificationId, error, lifecycle, analytics, source]);
|
||||
|
||||
if (success) {
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user