Skip to content

Commit

Permalink
debug getOfflineStatus method.
Browse files Browse the repository at this point in the history
  • Loading branch information
ianlin-bbpos committed Nov 15, 2023
1 parent 3effb32 commit 0b128d7
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -691,22 +691,35 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) :
}

@OptIn(OfflineMode::class)
@ReactMethod
@Suppress("unused")
fun getOfflineStatus(promise: Promise) {
promise.resolve(
nativeMapOf {
var mutableMap = terminal.offlineStatus.sdk.offlinePaymentAmountsByCurrency.toMutableMap()
val sdkMap = mutableMapOf(
"offlinePaymentsCount" to terminal.offlineStatus.sdk.offlinePaymentsCount,
"offlinePaymentAmountsByCurrency" to mutableMap
)
putString("sdk", sdkMap.toString())
val sdkMap = nativeMapOf {
putInt("offlinePaymentsCount", terminal.offlineStatus.sdk.offlinePaymentsCount)

mutableMap = terminal.offlineStatus.reader?.offlinePaymentAmountsByCurrency?.toMutableMap()!!
val readerMap = mutableMapOf(
"offlinePaymentsCount" to terminal.offlineStatus.sdk.offlinePaymentsCount,
"offlinePaymentAmountsByCurrency" to mutableMap
)
putString("reader", readerMap.toString())
val map = nativeMapOf {
terminal.offlineStatus.sdk.offlinePaymentAmountsByCurrency.forEach {
putInt(it.key, it.value.toInt())
}
}
putMap("offlinePaymentAmountsByCurrency", map)
}

val readerMap = nativeMapOf {
putInt("offlinePaymentsCount", terminal.offlineStatus.reader?.offlinePaymentsCount?:0)

val map = nativeMapOf {
terminal.offlineStatus.reader?.offlinePaymentAmountsByCurrency?.forEach {
putInt(it.key, it.value.toInt())
}
}
putMap("offlinePaymentAmountsByCurrency", map)
}

putMap("sdk", sdkMap)
putMap("reader", readerMap)
}
)
}
Expand Down
25 changes: 17 additions & 8 deletions dev-app/src/screens/CollectCardPaymentScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import {
PaymentIntent,
StripeError,
CommonError,
OfflineStatus,
} from '@stripe/stripe-terminal-react-native';
import { colors } from '../colors';
import List from '../components/List';
Expand Down Expand Up @@ -84,7 +83,6 @@ export default function CollectCardPaymentScreen() {
const { simulated, discoveryMethod } = params;
const { addLogs, clearLogs, setCancel } = useContext(LogContext);
const navigation = useNavigation();
let offlineStatus: OfflineStatus | undefined;

const {
createPaymentIntent,
Expand All @@ -93,6 +91,7 @@ export default function CollectCardPaymentScreen() {
retrievePaymentIntent,
cancelCollectPaymentMethod,
setSimulatedCard,
getOfflineStatus,
} = useStripeTerminal({
onDidRequestReaderInput: (input) => {
// @ts-ignore
Expand All @@ -119,9 +118,6 @@ export default function CollectCardPaymentScreen() {
],
});
},
onDidChangeOfflineStatus: (status: OfflineStatus) => {
offlineStatus = status;
},
});

const _createPaymentIntent = async () => {
Expand Down Expand Up @@ -203,12 +199,25 @@ export default function CollectCardPaymentScreen() {
paymentIntent = response.paymentIntent;
paymentIntentError = response.error;
} else {
const offlineStatus = await getOfflineStatus();
let paymentAmountsByCurrency = 0;
for (let currency in offlineStatus.sdk.offlinePaymentAmountsByCurrency) {
if (currency === inputValues.currency) {
paymentAmountsByCurrency =
offlineStatus.sdk.offlinePaymentAmountsByCurrency[currency];
}
}
console.log(
'currency = ' +
inputValues.currency +
' paymentAmountsByCurrency = ' +
paymentAmountsByCurrency
);
if (
Number(inputValues.amount) >
Number(inputValues.offlineModeTransactionLimit) ||
(offlineStatus
? offlineStatus.offlinePaymentAmountsByCurrency[0].amount
: 0) > Number(inputValues.offlineModeStoredTransactionLimit)
paymentAmountsByCurrency >
Number(inputValues.offlineModeStoredTransactionLimit)
) {
inputValues.offlineBehavior = 'require_online';
}
Expand Down
3 changes: 2 additions & 1 deletion src/StripeTerminalSdk.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import type {
CollectPaymentMethodParams,
PaymentIntent,
SetupIntent,
OfflinePaymentStatus,
} from './types';

const { StripeTerminalReactNative } = NativeModules;
Expand Down Expand Up @@ -138,7 +139,7 @@ export interface StripeTerminalSdkType {
setSimulatedCard(cardNumber: string): Promise<{
error?: StripeError;
}>;
getOfflineStatus(): Promise<{}>;
getOfflineStatus(): Promise<OfflinePaymentStatus>;
}

export default StripeTerminalReactNative as StripeTerminalSdkType;
8 changes: 4 additions & 4 deletions src/functions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import type {
CollectPaymentMethodParams,
PaymentIntent,
SetupIntent,
OfflineStatusEx,
OfflinePaymentStatus,
} from './types';

export async function initialize(
Expand Down Expand Up @@ -742,11 +742,11 @@ export async function cancelCollectSetupIntent(): Promise<{
}, 'cancelCollectSetupIntent')();
}

export async function getOfflineStatus(): Promise<OfflineStatusEx> {
export async function getOfflineStatus(): Promise<OfflinePaymentStatus> {
return Logger.traceSdkMethod(async () => {
try {
await StripeTerminalSdk.getOfflineStatus();
return {};
const offlineStatus = await StripeTerminalSdk.getOfflineStatus();
return offlineStatus;
} catch (error) {
return {
error: error as any,
Expand Down
22 changes: 9 additions & 13 deletions src/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -271,25 +271,21 @@ export type ConfirmRefundResultType = {
error?: StripeError;
};

export type OfflinePaymentAmountByCurrency = {
currency: string;
amount: number;
};

export type OfflineStatus = {
networkStatus: 'online' | 'offline' | 'unknown';
offlinePaymentsCount: number;
offlinePaymentAmountsByCurrency: OfflinePaymentAmountByCurrency[];
offlinePaymentAmountsByCurrency: { [key: string]: number };
};

export type OfflinePaymentStatus = {
offlinePaymentsCount: number;
offlinePaymentAmountsByCurrency: OfflinePaymentAmountByCurrency[];
};

export type OfflineStatusEx = {
sdk: OfflinePaymentStatus;
reader: OfflinePaymentStatus;
sdk: {
offlinePaymentsCount: number;
offlinePaymentAmountsByCurrency: { [key: string]: number };
};
reader: {
offlinePaymentsCount: number;
offlinePaymentAmountsByCurrency: { [key: string]: number };
};
};

type CardDetails = {
Expand Down

0 comments on commit 0b128d7

Please sign in to comment.