Skip to content
This repository was archived by the owner on Dec 12, 2024. It is now read-only.

Commit d129033

Browse files
authored
feat: add Status enum (#53)
1 parent 3c04496 commit d129033

File tree

3 files changed

+87
-7
lines changed

3 files changed

+87
-7
lines changed

lib/src/protocol/models/message_data.dart

+84-4
Original file line numberDiff line numberDiff line change
@@ -314,24 +314,104 @@ class OrderData extends MessageData {
314314
}
315315

316316
class OrderStatusData extends MessageData {
317-
final String orderStatus;
317+
final Status status;
318318

319-
OrderStatusData({required this.orderStatus});
319+
OrderStatusData({required this.status});
320320

321321
factory OrderStatusData.fromJson(Map<String, dynamic> json) {
322322
return OrderStatusData(
323-
orderStatus: json['orderStatus'],
323+
status: Status.fromJson(json['status']),
324324
);
325325
}
326326

327327
@override
328328
Map<String, dynamic> toJson() {
329329
return {
330-
'orderStatus': orderStatus,
330+
'status': status.toJson(),
331331
};
332332
}
333333
}
334334

335+
enum Status {
336+
payinPending,
337+
payinInitiated,
338+
payinSettled,
339+
payinFailed,
340+
payinExpired,
341+
payoutPending,
342+
payoutInitiated,
343+
payoutSettled,
344+
payoutFailed,
345+
refundPending,
346+
refundInitiated,
347+
refundFailed,
348+
refundSettled;
349+
350+
static Status fromJson(String json) {
351+
switch (json) {
352+
case 'PAYIN_PENDING':
353+
return Status.payinPending;
354+
case 'PAYIN_INITIATED':
355+
return Status.payinInitiated;
356+
case 'PAYIN_SETTLED':
357+
return Status.payinSettled;
358+
case 'PAYIN_FAILED':
359+
return Status.payinFailed;
360+
case 'PAYIN_EXPIRED':
361+
return Status.payinExpired;
362+
case 'PAYOUT_PENDING':
363+
return Status.payoutPending;
364+
case 'PAYOUT_INITIATED':
365+
return Status.payoutInitiated;
366+
case 'PAYOUT_SETTLED':
367+
return Status.payoutSettled;
368+
case 'PAYOUT_FAILED':
369+
return Status.payoutFailed;
370+
case 'REFUND_PENDING':
371+
return Status.refundPending;
372+
case 'REFUND_INITIATED':
373+
return Status.refundInitiated;
374+
case 'REFUND_FAILED':
375+
return Status.refundFailed;
376+
case 'REFUND_SETTLED':
377+
return Status.refundSettled;
378+
default:
379+
throw Exception('Unknown status: $json');
380+
}
381+
}
382+
383+
String toJson() {
384+
switch (this) {
385+
case Status.payinPending:
386+
return 'PAYIN_PENDING';
387+
case Status.payinInitiated:
388+
return 'PAYIN_INITIATED';
389+
case Status.payinSettled:
390+
return 'PAYIN_SETTLED';
391+
case Status.payinFailed:
392+
return 'PAYIN_FAILED';
393+
case Status.payinExpired:
394+
return 'PAYIN_EXPIRED';
395+
case Status.payoutPending:
396+
return 'PAYOUT_PENDING';
397+
case Status.payoutInitiated:
398+
return 'PAYOUT_INITIATED';
399+
case Status.payoutSettled:
400+
return 'PAYOUT_SETTLED';
401+
case Status.payoutFailed:
402+
return 'PAYOUT_FAILED';
403+
case Status.refundPending:
404+
return 'REFUND_PENDING';
405+
case Status.refundInitiated:
406+
return 'REFUND_INITIATED';
407+
case Status.refundFailed:
408+
return 'REFUND_FAILED';
409+
case Status.refundSettled:
410+
return 'REFUND_SETTLED';
411+
}
412+
}
413+
}
414+
335415
class OrderInstructionsData extends MessageData {
336416
final PaymentInstruction payin;
337417
final PaymentInstruction payout;

test/helpers/test_data.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ class TestData {
169169
aliceDid.uri,
170170
pfiDid.uri,
171171
TypeId.generate(MessageKind.rfq.name),
172-
OrderStatusData(orderStatus: 'order status'),
172+
OrderStatusData(status: Status.payinInitiated),
173173
);
174174
}
175175

test/protocol/models/order_status_test.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ void main() async {
1717
TestData.pfi,
1818
TestData.alice,
1919
TypeId.generate(MessageKind.rfq.name),
20-
OrderStatusData(orderStatus: 'my status'),
20+
OrderStatusData(status: Status.payinInitiated),
2121
);
2222

2323
expect(orderStatus.metadata.id, startsWith(MessageKind.orderstatus.name));
2424
expect(orderStatus.metadata.kind, equals(MessageKind.orderstatus));
2525
expect(orderStatus.metadata.protocol, equals('1.0'));
26-
expect(orderStatus.data.orderStatus, equals('my status'));
26+
expect(orderStatus.data.status, equals(Status.payinInitiated));
2727
});
2828

2929
test('can parse and verify order status from a json string', () async {

0 commit comments

Comments
 (0)