Skip to content

Commit 6f64e45

Browse files
committed
refactor: rename useTransactionPaymentEvent to useTransactionEvent and update related references
1 parent e42a418 commit 6f64e45

File tree

6 files changed

+27
-158
lines changed

6 files changed

+27
-158
lines changed

README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ import {
2323
initializeAndActivatePinPad,
2424
doPayment,
2525
generatePixQRCode,
26-
useTransactionPaymentEvent,
26+
useTransactionEvent,
2727
PaymentType,
2828
ErrorCode
2929
} from 'react-native-plugpag-nitro';
3030

3131
function PaymentScreen() {
32-
const paymentEvent = useTransactionPaymentEvent();
32+
const paymentEvent = useTransactionEvent();
3333

3434
const handlePayment = async () => {
3535
// Initialize terminal
@@ -83,11 +83,11 @@ Generate PIX QR code string.
8383
const qrString = await generatePixQRCode(2500); // R$ 25.00
8484
```
8585

86-
#### `useTransactionPaymentEvent()`
86+
#### `useTransactionEvent()`
8787
Real-time payment event monitoring hook.
8888

8989
```typescript
90-
const paymentEvent = useTransactionPaymentEvent();
90+
const paymentEvent = useTransactionEvent();
9191
// Returns: { code: number, message: string, customMessage?: string }
9292
```
9393

@@ -217,11 +217,11 @@ const result = await refundPayment({
217217
```
218218

219219
### 🎣 React Hooks
220-
#### `useTransactionPaymentEvent()`
220+
#### `useTransactionEvent()`
221221
Real-time payment event monitoring hook to track status updates during transactions.
222222

223223
```typescript
224-
const paymentEvent = useTransactionPaymentEvent();
224+
const paymentEvent = useTransactionEvent();
225225

226226
useEffect(() => {
227227
if (paymentEvent.code > 0) {
@@ -231,11 +231,11 @@ useEffect(() => {
231231
```
232232

233233
### 🎣 React Hooks
234-
#### `useTransactionPaymentEvent()`
234+
#### `useTransactionEvent()`
235235
Real-time payment event monitoring hook to track status updates during transactions.
236236

237237
```typescript
238-
const paymentEvent = useTransactionPaymentEvent();
238+
const paymentEvent = useTransactionEvent();
239239

240240
// paymentEvent contains:
241241
// {
@@ -279,15 +279,15 @@ import {
279279
PaymentType,
280280
ErrorCode,
281281
doPayment,
282-
useTransactionPaymentEvent,
282+
useTransactionEvent,
283283
initializeAndActivatePinPad,
284284
generatePixQRCode
285285
} from 'react-native-plugpag-nitro';
286286

287287
function PaymentScreen() {
288288
const [isInitialized, setIsInitialized] = useState(false);
289289
const [isProcessing, setIsProcessing] = useState(false);
290-
const paymentEvent = useTransactionPaymentEvent();
290+
const paymentEvent = useTransactionEvent();
291291

292292
// Initialize terminal on mount
293293
useEffect(() => {

android/src/main/java/com/margelo/nitro/plugpagnitro/PlugpagEventEmitter.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ import com.facebook.react.modules.core.DeviceEventManagerModule
55

66
class PlugpagEventEmitter(private val reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
77

8+
init {
9+
// Save instance for emitting events
10+
setInstance(this)
11+
}
12+
813
override fun getName(): String {
914
return "PlugpagEventEmitter"
1015
}

android/src/main/java/com/margelo/nitro/plugpagnitro/PlugpagNitro.kt

Lines changed: 1 addition & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -105,84 +105,8 @@ class PlugpagNitro : HybridPlugpagNitroSpec() {
105105
}
106106
}
107107

108-
override fun doPayment(
109-
amount: Double,
110-
type: PaymentType,
111-
installmentType: InstallmentType,
112-
installments: Double,
113-
printReceipt: Boolean,
114-
userReference: String
115-
): Promise<PlugpagTransactionResult> {
116-
return Promise.async {
117-
withContext(Dispatchers.IO) {
118-
try {
119-
initializePlugPag()
120-
121-
// Convert enum to PlugPag SDK constants
122-
val paymentType = when (type) {
123-
PaymentType.CREDIT -> PlugPag.TYPE_CREDITO
124-
PaymentType.DEBIT -> PlugPag.TYPE_DEBITO
125-
PaymentType.VOUCHER -> PlugPag.TYPE_VOUCHER
126-
PaymentType.PIX -> PlugPag.TYPE_PIX
127-
}
128-
129-
val installmentTypeInt = when (installmentType) {
130-
InstallmentType.NO_INSTALLMENT -> PlugPag.INSTALLMENT_TYPE_A_VISTA
131-
InstallmentType.SELLER_INSTALLMENT -> PlugPag.INSTALLMENT_TYPE_PARC_VENDEDOR
132-
InstallmentType.BUYER_INSTALLMENT -> PlugPag.INSTALLMENT_TYPE_PARC_COMPRADOR
133-
}
134-
135-
val plugPagPaymentData = PlugPagPaymentData(
136-
paymentType,
137-
amount.toInt(),
138-
installmentTypeInt,
139-
installments.toInt(),
140-
userReference,
141-
printReceipt
142-
)
143-
144-
val result = plugPag.doPayment(plugPagPaymentData)
145-
146-
val errorCode = when (result.result) {
147-
PlugPag.RET_OK -> ErrorCode.OK
148-
PlugPag.OPERATION_ABORTED -> ErrorCode.OPERATION_ABORTED
149-
PlugPag.AUTHENTICATION_FAILED -> ErrorCode.AUTHENTICATION_FAILED
150-
PlugPag.COMMUNICATION_ERROR -> ErrorCode.COMMUNICATION_ERROR
151-
PlugPag.NO_PRINTER_DEVICE -> ErrorCode.NO_PRINTER_DEVICE
152-
PlugPag.NO_TRANSACTION_DATA -> ErrorCode.NO_TRANSACTION_DATA
153-
else -> ErrorCode.COMMUNICATION_ERROR
154-
}
155-
156-
PlugpagTransactionResult(
157-
result = errorCode,
158-
errorCode = result.errorCode ?: "",
159-
message = result.message ?: "",
160-
transactionCode = result.transactionCode ?: "",
161-
transactionId = result.transactionId ?: "",
162-
hostNsu = result.hostNsu ?: "",
163-
date = result.date ?: "",
164-
time = result.time ?: "",
165-
cardBrand = result.cardBrand ?: "",
166-
bin = result.bin ?: "",
167-
holder = result.holder ?: "",
168-
userReference = result.userReference ?: "",
169-
terminalSerialNumber = result.terminalSerialNumber ?: "",
170-
amount = result.amount ?: "",
171-
availableBalance = result.availableBalance ?: "",
172-
cardApplication = result.cardApplication ?: "",
173-
label = result.label ?: "",
174-
holderName = result.holderName ?: "",
175-
extendedHolderName = result.extendedHolderName ?: ""
176-
)
177-
} catch (e: Exception) {
178-
Log.e(TAG, "Error processing payment", e)
179-
throw Exception("PAYMENT_ERROR: ${e.message ?: "Unknown error"}")
180-
}
181-
}
182-
}
183-
}
184108

185-
override fun doPaymentWithEvents(
109+
override fun doPayment(
186110
amount: Double,
187111
type: PaymentType,
188112
installmentType: InstallmentType,

example/src/App.tsx

Lines changed: 5 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,14 @@ import {
77
Text,
88
TouchableOpacity,
99
View,
10-
DeviceEventEmitter,
1110
} from 'react-native';
1211
import {
1312
type PlugpagTransactionResult,
1413
initializeAndActivatePinPad,
1514
doPayment,
1615
refundPayment,
1716
generatePixQRCode,
18-
useTransactionPaymentEvent,
17+
useTransactionEvent,
1918
getTerminalSerialNumber,
2019
PaymentType,
2120
ErrorCode,
@@ -24,23 +23,16 @@ import {
2423

2524
export default function App() {
2625
const [isProcessing, setIsProcessing] = useState(false);
26+
2727
const [terminalSerial, setTerminalSerial] = useState<string>('N/A');
28+
2829
const [lastPayment, setLastPayment] =
2930
useState<PlugpagTransactionResult | null>(null);
31+
3032
const [isInitialized, setIsInitialized] = useState(false);
3133

3234
// Real-time payment events
33-
const paymentEvent = useTransactionPaymentEvent();
34-
35-
// Test event emitter
36-
const testEventEmitter = () => {
37-
console.log('Testing event emission...');
38-
DeviceEventEmitter.emit('paymentEvent', {
39-
code: 1001,
40-
message: 'Teste manual de evento',
41-
customMessage: 'Evento disparado do app',
42-
});
43-
};
35+
const paymentEvent = useTransactionEvent();
4436

4537
// Get terminal serial on mount
4638
useEffect(() => {
@@ -224,18 +216,6 @@ export default function App() {
224216
</Text>
225217
</View>
226218

227-
{/* Real-time Event Display */}
228-
<View style={styles.debugContainer}>
229-
<Text style={styles.debugTitle}>Estado do Evento:</Text>
230-
<Text style={styles.debugText}>Código: {paymentEvent.code}</Text>
231-
<Text style={styles.debugText}>Mensagem: {paymentEvent.message}</Text>
232-
{paymentEvent.customMessage && (
233-
<Text style={styles.debugText}>
234-
Custom: {paymentEvent.customMessage}
235-
</Text>
236-
)}
237-
</View>
238-
239219
{paymentEvent.code > 0 && (
240220
<View
241221
style={[
@@ -297,10 +277,6 @@ export default function App() {
297277
<Text style={styles.buttonText}>Gerar QR PIX - R$ 50,00</Text>
298278
</TouchableOpacity>
299279

300-
<TouchableOpacity style={styles.button} onPress={testEventEmitter}>
301-
<Text style={styles.buttonText}>🧪 Testar Evento</Text>
302-
</TouchableOpacity>
303-
304280
<TouchableOpacity
305281
style={[styles.button, styles.refundButton]}
306282
onPress={handleRefund}
@@ -414,23 +390,4 @@ const styles = StyleSheet.create({
414390
fontWeight: 'bold',
415391
marginBottom: 5,
416392
},
417-
debugContainer: {
418-
backgroundColor: '#f9f9f9',
419-
padding: 10,
420-
borderRadius: 5,
421-
marginBottom: 10,
422-
borderWidth: 1,
423-
borderColor: '#ddd',
424-
},
425-
debugTitle: {
426-
fontSize: 14,
427-
fontWeight: 'bold',
428-
color: '#333',
429-
marginBottom: 5,
430-
},
431-
debugText: {
432-
fontSize: 12,
433-
color: '#666',
434-
marginBottom: 2,
435-
},
436393
});

src/PlugpagNitro.nitro.ts

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -183,25 +183,6 @@ export interface PlugpagNitro extends HybridObject<{ android: 'kotlin' }> {
183183
userReference: string
184184
): Promise<PlugpagTransactionResult>;
185185

186-
/**
187-
* Process a payment transaction with real-time events
188-
* This method emits payment events during the transaction flow
189-
* @param amount Payment amount in cents
190-
* @param type Payment type (PaymentType.CREDIT, PaymentType.DEBIT, etc.)
191-
* @param installmentType Installment type (InstallmentType.NO_INSTALLMENT, etc.)
192-
* @param installments Number of installments
193-
* @param printReceipt Whether to print receipt
194-
* @param userReference Optional user reference
195-
*/
196-
doPaymentWithEvents(
197-
amount: number,
198-
type: PaymentType,
199-
installmentType: InstallmentType,
200-
installments: number,
201-
printReceipt: boolean,
202-
userReference: string
203-
): Promise<PlugpagTransactionResult>;
204-
205186
/**
206187
* Refund a previous payment transaction
207188
* @param transactionCode Transaction code to refund

src/index.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ export async function doPayment(options: {
113113
};
114114

115115
return safeModuleCall('doPayment', () =>
116+
// Use native doPayment (with built-in events)
116117
PlugpagNitroModule.doPayment(
117118
paymentOptions.amount,
118119
paymentOptions.type,
@@ -133,7 +134,9 @@ export async function doPayment(options: {
133134
* - Error notifications
134135
* - Transaction completion status
135136
*/
136-
export function useTransactionPaymentEvent(): PaymentEvent {
137+
export function useTransactionEvent(): PaymentEvent & {
138+
resetEvent: () => void;
139+
} {
137140
const [paymentEvent, setPaymentEvent] = useState<PaymentEvent>({
138141
code: PaymentEventCode.WAITING_CARD,
139142
message: 'Aguardando cartão...',
@@ -146,7 +149,6 @@ export function useTransactionPaymentEvent(): PaymentEvent {
146149
setPaymentEvent(event);
147150
}
148151
);
149-
150152
return () => {
151153
subscription.remove();
152154
};
@@ -162,7 +164,7 @@ export function useTransactionPaymentEvent(): PaymentEvent {
162164
return {
163165
...paymentEvent,
164166
resetEvent,
165-
} as PaymentEvent & { resetEvent: () => void };
167+
};
166168
}
167169

168170
/**
@@ -250,7 +252,7 @@ export default {
250252
reprintCustomerReceipt,
251253

252254
// Enhanced payment event listener
253-
useTransactionPaymentEvent,
255+
useTransactionEvent,
254256

255257
// Enums
256258
PaymentType,

0 commit comments

Comments
 (0)