BaaS_Driver_Android_App/store/paymentSlice.ts

67 lines
1.6 KiB
TypeScript

// store/emiSlice.ts
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { MyPlan } from "@/app/(tabs)/payments";
interface PaymentOrder {
amount: number; // kept as number for math
id?: number; // optional if not always present
expiry_date?: string;
order_id: string;
payment_link?: string;
qr_code_url?: string;
status: string; // "confirmed", "pending", etc.
transaction_id?: string;
transaction_order_id?: string;
transaction_date?: string;
payment_mode?: string[]; // e.g. ["UPI"]
payment_reference_id?: string;
paid_by_upi_handle?: string;
upi_handle: string;
}
interface EmiState {
due_amount: number | null;
myPlan: MyPlan | null;
paymentOrder: PaymentOrder | null;
}
const initialState: EmiState = {
due_amount: null,
myPlan: null,
paymentOrder: null,
};
const emiSlice = createSlice({
name: "emi",
initialState,
reducers: {
setDueAmount(state, action: PayloadAction<number | null>) {
state.due_amount = action.payload;
},
setMyPlan(state, action: PayloadAction<MyPlan | null>) {
state.myPlan = action.payload;
},
setPaymentOrder(state, action: PayloadAction<PaymentOrder | null>) {
state.paymentOrder = action.payload;
},
clearPaymentOrder(state) {
state.paymentOrder = null;
},
updatePaymentStatus(state, action: PayloadAction<string>) {
if (state.paymentOrder) {
state.paymentOrder.status = action.payload;
}
},
},
});
export const {
setDueAmount,
setMyPlan,
setPaymentOrder,
clearPaymentOrder,
updatePaymentStatus,
} = emiSlice.actions;
export default emiSlice.reducer;