๐Ÿ“ฆ manideepk90 / react-native-hyperswitch-sdk

๐Ÿ“„ CustomWidget.res ยท 83 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83open ReactNative
open Style

module WidgetError = {
  @react.component
  let make = () => {
    JsError.throwWithMessage("Payment Method not available")->ignore
    React.null
  }
}

@react.component
let make = (~walletType as _: SdkTypes.payment_method_type_wallet) => {
  let (nativeProp, _) = React.useContext(NativePropContext.nativePropContext)
  // let (allApiData, _) = React.useContext(AllApiDataContext.allApiDataContext)
  let (button, _setButton) = React.useState(_ => None)

  // React.useEffect1(() => {
  //   if nativeProp.publishableKey == "" {
  //     setLoading(ProcessingPayments)
  //   } else {
  //     // setButton(_ =>
  //     //   PMListModifier.widgetModifier(
  //     //     allApiData.paymentMethodList,
  //     //     allApiData.sessions,
  //     //     walletType,
  //     //     nativeProp.hyperParams.confirm,
  //     //   )
  //     // )
  //     ()
  //   }

  //   let handleWidgetEvent = (responseFromJava: NativeEventListener.widgetResponse) => {
  //     if (
  //       walletType ==
  //         switch responseFromJava.paymentMethodType {
  //         | "google_pay" => GOOGLE_PAY
  //         | "paypal" => PAYPAL
  //         | _ => NONE
  //         }
  //     ) {
  //       setNativeProp({
  //         ...nativeProp,
  //         publishableKey: responseFromJava.publishableKey,
  //         clientSecret: responseFromJava.clientSecret,
  //         hyperParams: {
  //           ...nativeProp.hyperParams,
  //           confirm: responseFromJava.confirm,
  //         },
  //         configuration: {
  //           ...nativeProp.configuration,
  //           appearance: {
  //             ...nativeProp.configuration.appearance,
  //             googlePay: {
  //               buttonType: PLAIN,
  //               buttonStyle: None,
  //             },
  //           },
  //         },
  //       })
  //     }
  //   }

  //   let cleanup = NativeEventListener.setupWidgetEventListener(
  //     ~onWidgetEvent=handleWidgetEvent,
  //     ~walletType,
  //   )

  //   Some(cleanup)
  // }, [allApiData.sessions])

  <ErrorBoundary level={FallBackScreen.Widget} rootTag=nativeProp.rootTag>
    <View
      style={s({flex: 1., width: 100.->pct, maxHeight: 45.->dp, backgroundColor: "transparent"})}
    >
      {switch button {
      | Some(component) => component === React.null ? <WidgetError /> : component
      | None => <LoadingOverlay />
      }}
    </View>
  </ErrorBoundary>
}