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:
Justin Hernandez
2026-04-13 16:34:40 -07:00
committed by GitHub
6 changed files with 53 additions and 56 deletions

View File

@@ -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>
);
}

View File

@@ -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 {

View File

@@ -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>

View File

@@ -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;

View File

@@ -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}

View File

@@ -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 (