From 37d6d672a61dd7eddef37bb680549823af22f678 Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Thu, 5 Feb 2026 07:23:29 -0700 Subject: [PATCH 1/2] remove the verification widget --- src/components/ConnectWidgets.tsx | 6 ------ src/components/widgets.test.tsx | 2 -- 2 files changed, 8 deletions(-) diff --git a/src/components/ConnectWidgets.tsx b/src/components/ConnectWidgets.tsx index 0c27b5e..0a3bc67 100644 --- a/src/components/ConnectWidgets.tsx +++ b/src/components/ConnectWidgets.tsx @@ -6,7 +6,6 @@ import { import { Type, SsoUrlProps, ConnectWidgetConfigurationProps } from "../sso" import * as WebBrowser from "expo-web-browser" -import { makeWidgetComponentWithDefaults } from "./make_component" import { StylingProps, useWidgetRenderer } from "./renderer" export type ConnectWidgetProps = SsoUrlProps & @@ -15,11 +14,6 @@ export type ConnectWidgetProps = SsoUrlProps & ConnectWidgetConfigurationProps & JSX.IntrinsicAttributes -export const ConnectVerificationWidget = makeWidgetComponentWithDefaults(ConnectWidget, { - mode: "verification", - includeTransactions: false, -}) - export function ConnectWidget(props: ConnectWidgetProps) { const onOAuthRequested = (payload: ConnectOAuthRequestedPayload) => { const { url } = payload diff --git a/src/components/widgets.test.tsx b/src/components/widgets.test.tsx index 1452723..046e5a0 100644 --- a/src/components/widgets.test.tsx +++ b/src/components/widgets.test.tsx @@ -4,7 +4,6 @@ import { act } from "react-test-renderer" import { BudgetsWidget, MasterWidget } from "./MoneyMapWidgets" import { PulseWidget, MiniPulseCarouselWidget } from "./PulseWidgets" -import { ConnectVerificationWidget } from "./ConnectWidgets" import { Props } from "./make_component" import TestingErrorBoundary from "../../test/helpers/TestingErrorBoundary" @@ -18,7 +17,6 @@ jest.mock("expo-web-browser", () => { }) describe("BudgetsWidget", () => fullWidgetComponentTestSuite(BudgetsWidget)) -describe("ConnectVerificationWidget", () => fullWidgetComponentTestSuite(ConnectVerificationWidget)) describe("MasterWidget", () => fullWidgetComponentTestSuite(MasterWidget)) describe("MiniPulseCarouselWidget", () => fullWidgetComponentTestSuite(MiniPulseCarouselWidget)) describe("PulseWidget", () => fullWidgetComponentTestSuite(PulseWidget)) From 909cc802e0aba41c4de2d7e3dd06129a3bc2c080 Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Thu, 5 Feb 2026 13:28:21 -0700 Subject: [PATCH 2/2] simplifying the ConnectWidget --- example/src/app/connect.tsx | 6 ++- src/components/ConnectWidgets.tsx | 62 +++++++++++++++++++++---------- 2 files changed, 46 insertions(+), 22 deletions(-) diff --git a/example/src/app/connect.tsx b/example/src/app/connect.tsx index 39744ab..7ab7a8a 100644 --- a/example/src/app/connect.tsx +++ b/example/src/app/connect.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from "react" -import { StyleSheet } from "react-native" +import { StyleSheet, useWindowDimensions } from "react-native" import { SafeAreaView } from "react-native-safe-area-context" import * as Linking from "expo-linking" @@ -16,6 +16,8 @@ const styles = StyleSheet.create({ export default function Connect() { const clientRedirectUrl = Linking.createURL("connect") + const { height, width } = useWindowDimensions() + const [url, setUrl] = useState(null) useEffect(() => { @@ -25,7 +27,7 @@ export default function Connect() { }, [clientRedirectUrl]) return ( - + {url && ( & - ConnectWidgetConfigurationProps & - JSX.IntrinsicAttributes +export type ConnectWidgetProps = ConnectPostMessageCallbackProps & ExtraProps export function ConnectWidget(props: ConnectWidgetProps) { + const { url: webviewUrl, webViewProps, ...callbacks } = props + const onOAuthRequested = (payload: ConnectOAuthRequestedPayload) => { const { url } = payload WebBrowser.openAuthSessionAsync(url) @@ -22,20 +26,38 @@ export function ConnectWidget(props: ConnectWidgetProps) { props.onOAuthRequested?.(payload) } - props = { + const modifiedCallbacks = { + ...callbacks, onOAuthRequested, - ...props, } - const modifiedProps = { - ...props, - onOAuthRequested, - } - - const elem = useWidgetRenderer( - { ...modifiedProps, widgetType: Type.ConnectWidget }, - dispatchConnectLocationChangeEvent, + const handler = makeRequestInterceptor(webviewUrl, { + onIntercept: (url) => { + dispatchConnectLocationChangeEvent(url, modifiedCallbacks) + }, + }) + + const setReactNativeSDKVersionOnWindow = ` + window.MXReactNativeSDKVersion = "${sdkVersion}"; + ` + + return ( + { + WebBrowser.openBrowserAsync(event.nativeEvent.targetUrl) + }} + onShouldStartLoadWithRequest={handler} + originWhitelist={["*"]} + scrollEnabled={true} + source={{ uri: webviewUrl }} + testID="widget_webview" + {...webViewProps} + style={webViewProps?.style || { height: "100%", width: "100%" }} + /> ) - - return elem }