Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dist/bundle.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@juspay-tech/react-hyper-js",
"version": "2.6.0",
"version": "2.7.0",
"main": "dist/bundle.js",
"files": [
"dist/",
Expand Down
122 changes: 117 additions & 5 deletions src/Context.bs.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

62 changes: 62 additions & 0 deletions src/Context.res
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ type rec elementsType = {
fetchUpdates: unit => Promise.t<JSON.t>,
create: (string, JSON.t) => OrcaJs.paymentElement, // return a react component instead by doing new Payment Element.
updateIntent: (unit => promise<JSON.t>) => promise<JSON.t>,
cardForm: unit => OrcaJs.cardForm,
isReady: bool,
}

type rec paymentMethodsManagementElementsType = {
Expand Down Expand Up @@ -192,6 +194,15 @@ let fetchUpdates = () => {
let create = (_componentType, _options) => {
OrcaJs.defaultPaymentElement
}
let defaultCardForm: OrcaJs.cardForm = {
create: (_fieldType, _options) => OrcaJs.defaultFieldHandle,
on: (_str, _func) => (),
confirmPayment: () => Promise.resolve(OrcaJs.sdkNotReadyError()),
deinit: () => (),
update: _x => (),
fields: ref(Dict.make()->JSON.Encode.object),
}

let defaultElementsContext: elementsType = {
options: {
fonts: [],
Expand All @@ -205,6 +216,8 @@ let defaultElementsContext: elementsType = {
fetchUpdates,
create,
updateIntent: _ => Promise.resolve(Dict.make()->JSON.Encode.object),
cardForm: () => defaultCardForm,
isReady: false,
}

let elementsContext = React.createContext(defaultElementsContext)
Expand All @@ -213,6 +226,55 @@ module ElementsContextProvider = {
let make = React.Context.provider(elementsContext)
}

type cardFormContextType = {
createField: (string, JSON.t) => OrcaJs.fieldHandle,
confirmPayment: unit => Promise.t<JSON.t>,
tokenize: unit => Promise.t<JSON.t>,
on: (string, JSON.t => unit) => unit,
update: JSON.t => unit,
deinit: unit => unit,
getFields: unit => JSON.t,
isReady: bool,
}

let defaultCardFormContext: cardFormContextType = {
createField: (_fieldType, _options) => OrcaJs.defaultFieldHandle,
confirmPayment: () => Promise.resolve(OrcaJs.sdkNotReadyError()),
tokenize: () => Promise.resolve(OrcaJs.sdkNotReadyError()),
on: (_str, _func) => (),
update: _x => (),
deinit: () => (),
getFields: () => Dict.make()->JSON.Encode.object,
isReady: false,
}

let cardFormContext = React.createContext(defaultCardFormContext)

module CardFormContextProvider = {
let make = React.Context.provider(cardFormContext)
}

type paymentMethodsSessionContextType = {
session: option<OrcaJs.paymentMethodsSession>,
isPresent: bool,
}

let defaultPaymentMethodsSessionContext: paymentMethodsSessionContextType = {
session: None,
isPresent: false,
}

let pendingPaymentMethodsSessionContext: paymentMethodsSessionContextType = {
...defaultPaymentMethodsSessionContext,
isPresent: true,
}

let paymentMethodsSessionContext = React.createContext(defaultPaymentMethodsSessionContext)

module PaymentMethodsSessionContextProvider = {
let make = React.Context.provider(paymentMethodsSessionContext)
}

let paymentMethodsManagementElementsOptionObjMapper = (options: JSON.t) => {
let dict = options->JSON.Decode.object->Option.getOr(Dict.make())
{
Expand Down
30 changes: 30 additions & 0 deletions src/Index.bs.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading