esoftplay-event 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/event/additional.tsx +1 -1
  2. package/event/additional_input.tsx +15 -0
  3. package/event/additional_new.tsx +565 -0
  4. package/event/artist.tsx +14 -34
  5. package/event/artist_detail.tsx +336 -239
  6. package/event/artist_detail_multi.tsx +266 -157
  7. package/event/artist_detailv2.tsx +129 -69
  8. package/event/artistv2.tsx +5 -13
  9. package/event/button.tsx +2 -2
  10. package/event/button_order_detail.tsx +20 -8
  11. package/event/capture.tsx +2 -0
  12. package/event/checkout.ts +135 -0
  13. package/event/countdown.tsx +13 -9
  14. package/event/countdown_base.tsx +88 -48
  15. package/event/countdown_event.tsx +3 -0
  16. package/event/countdown_timestamp.tsx +106 -0
  17. package/event/coupon.tsx +1 -1
  18. package/event/coupon_generate.tsx +35 -22
  19. package/event/detail.tsx +9 -15
  20. package/event/detail2.tsx +63 -61
  21. package/event/dialog_custom.tsx +67 -0
  22. package/event/exchange_ticket_list.tsx +23 -14
  23. package/event/exchange_ticket_result.tsx +1 -1
  24. package/event/firebase_socket.ts +14 -12
  25. package/event/htmltext.tsx +40 -28
  26. package/event/index.tsx +8 -2
  27. package/event/label_input.tsx +2 -2
  28. package/event/layout.tsx +312 -0
  29. package/event/loading_page.tsx +62 -82
  30. package/event/message.tsx +2 -2
  31. package/event/order_detail.tsx +408 -477
  32. package/event/order_detail_addons.tsx +60 -0
  33. package/event/order_detail_addons_booked.tsx +61 -0
  34. package/event/order_detail_coupon.tsx +66 -0
  35. package/event/order_detail_instruction.tsx +96 -0
  36. package/event/order_detail_payment.tsx +1 -1
  37. package/event/order_detail_reschedule.tsx +109 -0
  38. package/event/order_detail_return.tsx +231 -0
  39. package/event/order_detail_review.tsx +174 -0
  40. package/event/order_detail_share.tsx +304 -0
  41. package/event/order_detail_tnc.tsx +76 -0
  42. package/event/order_detail_upgrade.tsx +140 -90
  43. package/event/order_detail_upgrade_payment.tsx +120 -38
  44. package/event/order_detail_visitor.tsx +21 -10
  45. package/event/order_detail_waiting.tsx +3 -3
  46. package/event/order_history.tsx +1 -1
  47. package/event/order_item.tsx +1 -1
  48. package/event/order_lottery.tsx +1 -1
  49. package/event/order_reschedule.tsx +29 -16
  50. package/event/order_share_to.tsx +14 -0
  51. package/event/order_waiting.tsx +1 -1
  52. package/event/payment_subscribe.tsx +18 -0
  53. package/event/point_events.tsx +35 -0
  54. package/event/point_redemption.tsx +101 -0
  55. package/event/point_redemption_exchange.tsx +60 -0
  56. package/event/point_redemption_input.tsx +56 -0
  57. package/event/point_redemption_success.tsx +50 -0
  58. package/event/point_summary.tsx +48 -0
  59. package/event/popup.tsx +4 -4
  60. package/event/queue.tsx +111 -0
  61. package/event/queue_pricing.tsx +17 -6
  62. package/event/review_add.tsx +2 -2
  63. package/event/scan_item.tsx +1 -1
  64. package/event/schedule.tsx +33 -30
  65. package/event/schedule2.tsx +86 -0
  66. package/event/seat.tsx +135 -374
  67. package/event/seat_map.tsx +8 -8
  68. package/event/seat_map_new.tsx +211 -38
  69. package/event/step.tsx +1 -1
  70. package/event/test.tsx +8 -8
  71. package/event/ticket.tsx +326 -0
  72. package/event/ticket_list.tsx +316 -258
  73. package/event/ticket_list2.tsx +349 -224
  74. package/event/ticket_list_item.tsx +61 -0
  75. package/event/ticket_list_new.tsx +710 -0
  76. package/event/tms_add_result.tsx +10 -5
  77. package/event/tms_check_ticket_result.tsx +16 -7
  78. package/event/tms_dashboard.tsx +87 -12
  79. package/event/tms_gate.tsx +32 -15
  80. package/event/tms_home.tsx +178 -92
  81. package/event/tms_idcard.tsx +43 -26
  82. package/event/tms_in.tsx +2 -3
  83. package/event/tms_in_failed.tsx +1 -1
  84. package/event/tms_in_hall.tsx +4 -1
  85. package/event/tms_in_hall_failed.tsx +36 -16
  86. package/event/tms_in_log.tsx +9 -11
  87. package/event/tms_in_success.tsx +13 -8
  88. package/event/tms_log.tsx +16 -17
  89. package/event/tms_out_hall_failed.tsx +1 -1
  90. package/event/tms_out_temporary.tsx +3 -4
  91. package/event/token_order.tsx +103 -0
  92. package/event/token_payment.tsx +79 -0
  93. package/event/visitor_index.tsx +60 -49
  94. package/event/visitor_input.tsx +336 -54
  95. package/event/visitor_inputv2.tsx +173 -88
  96. package/event/voucher.tsx +1 -1
  97. package/id.json +76 -4
  98. package/package.json +1 -1
  99. package/event/secure_page.debug.tsx +0 -34
  100. package/event/secure_page.live.tsx +0 -35
@@ -20,18 +20,16 @@ import { useEffect, useRef } from 'react';
20
20
 
21
21
  import { EventAlert } from 'esoftplay/cache/event/alert/import';
22
22
  import { EventConfigProperty } from 'esoftplay/cache/event/config/import';
23
- import { EventCountdownProperty } from 'esoftplay/cache/event/countdown/import';
24
- import { EventCountdown_base } from 'esoftplay/cache/event/countdown_base/import';
25
- import { EventFirebase_socket, EventFirebase_socketProperty } from 'esoftplay/cache/event/firebase_socket/import';
23
+ import { EventCountdown_event } from 'esoftplay/cache/event/countdown_event/import';
26
24
  import { EventHtmltext } from 'esoftplay/cache/event/htmltext/import';
27
25
  import { EventLoading_pageProperty } from 'esoftplay/cache/event/loading_page/import';
28
- import { EventQueue_pricingProperty } from 'esoftplay/cache/event/queue_pricing/import';
29
- import { LibTextstyle } from 'esoftplay/cache/lib/textstyle/import';
26
+ import { EventOrder_itemProperty } from 'esoftplay/cache/event/order_item/import';
27
+ import { EventQueue, EventQueueProperty } from 'esoftplay/cache/event/queue/import';
30
28
  import { UseCondition } from 'esoftplay/cache/use/condition/import';
31
29
  import { UseTasks } from 'esoftplay/cache/use/tasks/import';
32
30
  import moment from 'esoftplay/moment';
33
31
  import React from 'react';
34
- import { Pressable, RefreshControl, ScrollView, Text, TouchableOpacity, View } from 'react-native';
32
+ import { ActivityIndicator, Pressable, RefreshControl, ScrollView, Text, TouchableOpacity, View } from 'react-native';
35
33
 
36
34
 
37
35
  export interface EventTicket_list2Args {
@@ -55,6 +53,7 @@ type Result = {
55
53
  "status": string,
56
54
  "quota_checkout": string,
57
55
  "show_price": string,
56
+ "countdown_booking": string,
58
57
  "config_queue": {
59
58
  "limit": number,
60
59
  "time": number,
@@ -125,30 +124,28 @@ type Result = {
125
124
  "more_url": string,
126
125
  },
127
126
  "url_share": string,
127
+ "url_price_config": string
128
128
  }
129
129
 
130
130
  const taskSeat = UseTasks()
131
131
  const taskAdditional = UseTasks()
132
132
 
133
133
  export default function m(props: EventTicket_list2Props): any {
134
- const checkCounter = useRef<number>(0)
135
- let refTimeout = useRef<any>()
136
- const { doneQueue, isInPricingQueueConfig, updateQueueExp } = EventFirebase_socket();
137
-
138
134
  const [pendingData] = EventLoading_pageProperty.state().useState()
139
135
 
140
136
  const { url, is_multiprice, fee_platform, subscribed, show_fee_percentage }: any = useRef(LibNavigation.getArgsAll(props)).current
141
137
 
142
138
  const [deeplinkParams] = UseDeeplinkProperty.params.useState()
143
- const [timer] = EventCountdownProperty.countdownTime.useState()
139
+
144
140
  const [unAvailableResult, setUnavailableResult] = useLazyState<any>()
145
141
  const [, setHasAdditionGlobal, getHasAdditionGlobal] = useLazyState<any>()
146
- const [availableResult, setAvailableResult, getAvailableResult] = useSafeState<Result>()
142
+ const [availableResult, setAvailableResult, getAvailableResult] = useSafeState<any>()
147
143
  const [, setDataPostBooking, getDataPostBooking] = useLazyState<any>([])
148
144
  const [dataAddition, setDataAddition] = useSafeState<any>([])
149
145
  const [isPass, setIsPass] = useSafeState(true)
150
146
  const [showAll, setShowAll] = useSafeState<any>({});
151
147
  const [urlPayment, setUrlPayment] = useLazyState<any>()
148
+ const [loading, setLoading] = useSafeState<boolean>(false)
152
149
 
153
150
  let dataEvent: any = {
154
151
  event_id: availableResult?.id,
@@ -254,45 +251,70 @@ export default function m(props: EventTicket_list2Props): any {
254
251
  dataEvent.addition = dataAddition
255
252
  }
256
253
 
257
- LibNavigation.navigate('payment/ticket_multi', {
258
- order_type: EventConfigProperty?.state()?.get()?.order_type?.ticket,
259
- fee_platform: fee_platform,
260
- dataEvent: dataEvent,
261
- dataTicket: getDataPostBooking(),
262
- subscribed: subscribed,
263
- url_payment: urlPayment,
264
- show_fee_percentage
254
+ const selectedPriceIds = getDataPostBooking().filter((x: any) => x.selected == 1).map((x: any) => x.price_id)
255
+
256
+ curlPriceConfig(selectedPriceIds, (filteredFee) => {
257
+ const editedDataTicket = getDataPostBooking().map((item: any) => {
258
+ const priceId = item.price_id;
259
+ if (filteredFee?.[priceId]) {
260
+ return {
261
+ ...item,
262
+ ...filteredFee?.[priceId]
263
+ };
264
+ }
265
+ return item;
266
+ })
267
+
268
+ // esp.log({
269
+ // order_type: EventConfigProperty?.state()?.get()?.order_type?.ticket,
270
+ // dataEvent: dataEvent,
271
+ // dataTicket: editedDataTicket.filter((x: any) => x.selected == 1),
272
+ // subscribed: subscribed,
273
+ // url_payment: urlPayment,
274
+ // show_fee_percentage
275
+ // });
276
+
277
+ LibNavigation.navigate('payment/ticket_multi', {
278
+ order_type: EventConfigProperty?.state()?.get()?.order_type?.ticket,
279
+ dataEvent: dataEvent,
280
+ dataTicket: editedDataTicket?.filter((item: any) => item.selected == 1),
281
+ subscribed: subscribed,
282
+ url_payment: urlPayment,
283
+ show_fee_percentage
284
+ })
265
285
  })
286
+
266
287
  })
267
288
 
289
+ function curlPriceConfig(price_ids: string[], onDone: (data: any) => void) {
290
+ setLoading(true)
291
+ if (getAvailableResult()?.url_price_config) {
292
+ new LibCurl(getAvailableResult()?.url_price_config, null, (res, msg) => {
293
+ setLoading(false)
294
+ let filteredFee: any = {}
295
+ if (res) {
296
+ filteredFee = Object.fromEntries(
297
+ price_ids.flatMap(k => res[k] ? [[k, res[k]]] : [])
298
+ )
299
+ }
300
+ onDone(filteredFee)
301
+ }, (err) => {
302
+ setLoading(false)
303
+ LibToastProperty.show(err?.message)
304
+ })
305
+ } else {
306
+ setLoading(false)
307
+ onDone({})
308
+ }
309
+ }
310
+
268
311
  useEffect(() => {
269
312
  EventConfigProperty.curlConfig('v2/config_order_type')
270
- const { event_id } = EventQueue_pricingProperty.state().get()
271
313
  loadData()
272
- if (isInPricingQueueConfig(event_id))
273
- EventCountdownProperty.countdownTime.set(moment().add(EventFirebase_socketProperty.eventQueueConfig.get(event_id).time, 'seconds').localeFormat('YYYY-MM-DD HH:mm:ss'))
274
- getCheckCounter()
275
- return () => {
276
- clearTimeout(refTimeout.current)
277
- EventCountdownProperty.releaseQueue.trigger()
278
- }
279
314
  }, [])
280
315
 
281
- function getCheckCounter() {
282
- clearTimeout(refTimeout.current)
283
- const { pathQueue, event_id, key } = EventQueue_pricingProperty.state().get()
284
- if (event_id && isInPricingQueueConfig(event_id)) {
285
- updateQueueExp(pathQueue, event_id)
286
- checkCounter.current++
287
- refTimeout.current = setTimeout(() => {
288
- getCheckCounter()
289
- }, 6000);
290
- }
291
- }
292
-
293
316
  function loadData() {
294
317
  new LibCurl(url, null, (res, msg) => {
295
- esp.log(res, url);
296
318
  const availablePriceType = LibObject.update(res, (arr: any[]) => arr.filter((x) => x.status != 0))('price_type')
297
319
  const unAvailablePriceType = LibObject.update(res, (arr: any[]) => arr.filter((x) => x.status == 0))('price_type')
298
320
 
@@ -301,10 +323,10 @@ export default function m(props: EventTicket_list2Props): any {
301
323
  setUrlPayment(res?.url_payment)
302
324
  setHasAdditionGlobal(res?.has_addition_global)
303
325
 
304
- if (res.form_allotment == 1) {
305
- releaseQueue()
306
- LibNavigation.push('event/queue_out', { event_id: res.id, notes: res.form_allotment_text })
307
- }
326
+ // if (res.form_allotment == 1) {
327
+ // releaseQueue()
328
+ // LibNavigation.push('event/queue_out', { event_id: res.id, notes: res.form_allotment_text })
329
+ // }
308
330
 
309
331
  }, (error) => {
310
332
  LibDialog.warningConfirm(esp.lang("event/ticket_list", "warn"), error?.message, "Ok", () => {
@@ -313,15 +335,15 @@ export default function m(props: EventTicket_list2Props): any {
313
335
  }, 1)
314
336
  }
315
337
 
316
- function releaseQueue() {
317
- const { pathQueue, event_id, key } = EventQueue_pricingProperty.state().get()
318
- if (event_id && isInPricingQueueConfig(event_id)) {
319
- doneQueue(pathQueue, event_id, key, () => { })
320
- EventQueue_pricingProperty.state().reset()
321
- setIsPass(false)
322
- EventCountdownProperty.releaseQueue.trigger()
323
- }
324
- }
338
+ // function releaseQueue() {
339
+ // const { pathQueue, event_id, key } = EventQueue_pricingProperty.state().get()
340
+ // if (event_id && isInPricingQueueConfig(event_id)) {
341
+ // doneQueue(pathQueue, event_id, key, () => { })
342
+ // EventQueue_pricingProperty.state().reset()
343
+ // setIsPass(false)
344
+ // EventCountdownProperty.releaseQueue.trigger()
345
+ // }
346
+ // }
325
347
 
326
348
  function onRefresh() {
327
349
  loadData()
@@ -343,6 +365,8 @@ export default function m(props: EventTicket_list2Props): any {
343
365
  image_map: priceType?.image_map,
344
366
  use_seat: priceType?.use_seat,
345
367
  adjacent_seats: priceType?.config?.seat_autopick,
368
+ fee_amount: priceType?.fee_amount,
369
+ fee_type: priceType?.fee_type,
346
370
  }))
347
371
 
348
372
  newResult = newResult.concat(filteredList);
@@ -399,6 +423,12 @@ export default function m(props: EventTicket_list2Props): any {
399
423
  let colorBackground = item.status != 1 ? LibStyle.colorLightGrey : itemC.status != 1 ? LibStyle.colorLightGrey : colorDefault
400
424
  let textOpacity = /* item.status == 1 ? 1 : */itemC?.status == 1 ? 1 : 0.3
401
425
 
426
+ let showCountDown = getAvailableResult()?.countdown_booking == "1" && itemC?.status == 1 && item?.status == 1 && item?.date_start != "0000-00-00 00:00:00" && item?.date_end != "0000-00-00 00:00:00" && moment(item?.date_end).format("YYYY-MM-DD HH:mm:ss") >= moment().format("YYYY-MM-DD HH:mm:ss")
427
+ let dateShowed = item?.price_date == 1 ?
428
+ moment(item?.date_end).format("YYYY-MM-DD HH:mm:ss") > moment(itemC?.ondate).format("YYYY-MM-DD HH:mm:ss") ? moment(itemC?.ondate).add(1, "days").format("YYYY-MM-DD HH:mm:ss") : item?.date_end
429
+ : item?.date_end
430
+
431
+
402
432
  return (
403
433
  <TouchableOpacity key={iC} onPress={() => {
404
434
  let msg = ""
@@ -463,11 +493,22 @@ export default function m(props: EventTicket_list2Props): any {
463
493
  </View>
464
494
  </View>
465
495
  }
466
- <Text allowFontScaling={false} style={applyStyle({ opacity: textOpacity, fontFamily: "Arial", fontSize: 14, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: _selectedTicket ? "#3ea4dc" : '#999' })}>{LibUtils.moment(itemC.ondate).localeFormat('dddd')}</Text>
467
- <View style={applyStyle({ flexDirection: 'row' })}>
468
- <Text allowFontScaling={false} style={applyStyle({ opacity: textOpacity, fontFamily: "Arial", fontSize: 12, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: _selectedTicket ? "#3ea4dc" : '#999' })}>{LibUtils.moment(itemC.ondate).localeFormat('MMMM')}</Text>
469
- <Text allowFontScaling={false} style={applyStyle({ opacity: textOpacity, marginLeft: 7, fontFamily: "Arial", fontSize: 12, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: _selectedTicket ? "#3ea4dc" : '#999' })}>{LibUtils.moment(itemC.ondate).localeFormat('YYYY')}</Text>
470
- </View>
496
+ {
497
+ showCountDown ?
498
+ <Text allowFontScaling={false} style={applyStyle({ opacity: textOpacity, fontFamily: "Arial", fontSize: 12, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: _selectedTicket ? "#3ea4dc" : '#999' })}>{LibUtils.moment(itemC?.ondate).localeFormat('dddd, MMMM YYYY')}</Text>
499
+ :
500
+ <>
501
+ <Text allowFontScaling={false} style={applyStyle({ opacity: textOpacity, fontFamily: "Arial", fontSize: 14, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: _selectedTicket ? "#3ea4dc" : '#999' })}>{LibUtils.moment(itemC.ondate).localeFormat('dddd')}</Text>
502
+ <View style={applyStyle({ flexDirection: 'row' })}>
503
+ <Text allowFontScaling={false} style={applyStyle({ opacity: textOpacity, fontFamily: "Arial", fontSize: 12, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: _selectedTicket ? "#3ea4dc" : '#999' })}>{LibUtils.moment(itemC.ondate).localeFormat('MMMM')}</Text>
504
+ <Text allowFontScaling={false} style={applyStyle({ opacity: textOpacity, marginLeft: 7, fontFamily: "Arial", fontSize: 12, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: _selectedTicket ? "#3ea4dc" : '#999' })}>{LibUtils.moment(itemC.ondate).localeFormat('YYYY')}</Text>
505
+ </View>
506
+ </>
507
+ }
508
+ {
509
+ showCountDown &&
510
+ <EventCountdown_event date={dateShowed} containerStyle={{ marginVertical: -5 }} />
511
+ }
471
512
  </View>
472
513
  </View>
473
514
  :
@@ -501,18 +542,45 @@ export default function m(props: EventTicket_list2Props): any {
501
542
  (ticketWithDate || ticketSpecial) && itemC.selected == 1 &&
502
543
  <View style={applyStyle({ marginTop: 4, flexDirection: 'row', marginLeft: 8, alignContent: 'center', alignItems: 'center' })}>
503
544
  <Pressable hitSlop={{ top: 15, left: 15, right: 15, bottom: 15 }} testID='minus_btn' onPress={() => {
504
- // min()
545
+
505
546
  let qty = 1
506
- if (itemC.qty <= item.qty_min) {
507
- qty = Number(item.qty_min)
547
+
548
+ if (Number(itemC.qty) - 1 <= 0) {
549
+ // set 0 & unselect tiket
550
+ qty = 0
551
+
552
+ const data = new LibObject(getAvailableResult())
553
+ .update((itemList) => {
554
+ itemList.selected = 0 // langsung unselect
555
+ itemList.qty = 0
556
+ itemList.adjacent_seats = item.config?.seat_autopick
557
+ itemList.use_seat = item.use_seat
558
+ return itemList
559
+ })('price_type', i, 'list', iC)
560
+ .update((priceTypeItem) => {
561
+ return ({
562
+ ...priceTypeItem,
563
+ selected: priceTypeItem.list.some((item: any) => item.selected == 1) ? 1 : 0
564
+ })
565
+ })('price_type', i)
566
+ .value()
567
+
568
+ setAvailableResult(data)
569
+
508
570
  } else {
509
- qty = Number(itemC.qty) == 1 ? 1 : Number(itemC.qty) - 1
510
- }
571
+ // patuhi qty_min
572
+ if (itemC.qty <= item.qty_min) {
573
+ qty = Number(item.qty_min)
574
+ } else {
575
+ qty = Number(itemC.qty) - 1
576
+ }
511
577
 
512
- setAvailableResult(LibObject.set(getAvailableResult(), qty)('price_type', i, 'list', iC, 'qty'))
578
+ // set qty baru
579
+ setAvailableResult(LibObject.set(getAvailableResult(), qty)('price_type', i, 'list', iC, 'qty'))
580
+ }
513
581
 
514
582
  }}>
515
- <View style={applyStyle({ padding: 1, borderRadius: 6, backgroundColor: "#ecf0f1", alignContent: 'center', alignItems: 'center' })}>
583
+ <View style={applyStyle({ padding: 1, borderRadius: 6, backgroundColor: "#ecf0f1", alignContent: 'center', alignItems: 'center', justifyContent: 'center' })}>
516
584
  <LibIcon name="minus" color="#e74c3c" />
517
585
  </View>
518
586
  </Pressable>
@@ -529,7 +597,7 @@ export default function m(props: EventTicket_list2Props): any {
529
597
  }
530
598
  setAvailableResult(LibObject.set(getAvailableResult(), qty)('price_type', i, 'list', iC, 'qty'))
531
599
  }}>
532
- <View style={applyStyle({ padding: 1, borderRadius: 6, backgroundColor: "#ecf0f1", alignContent: 'center', alignItems: 'center' })}>
600
+ <View style={applyStyle({ padding: 1, borderRadius: 6, backgroundColor: "#ecf0f1", alignContent: 'center', alignItems: 'center', justifyContent: 'center' })}>
533
601
  <LibIcon name="plus" color="#16a085" />
534
602
  </View>
535
603
  </Pressable>
@@ -537,6 +605,45 @@ export default function m(props: EventTicket_list2Props): any {
537
605
  }
538
606
  </View>
539
607
 
608
+ {
609
+ ticketWithDate && itemC.schedule?.artist?.length > 0 &&
610
+ <TouchableOpacity onPress={() => {
611
+ if (item.status == 1 && itemC.status == 1) {
612
+ let itemTicket = {
613
+ ...item
614
+ }
615
+ let replaceList = LibObject.set(itemTicket, itemC)('list')
616
+ // ini jika dia gajadi beli dari halaman schedule.
617
+ // setSelectedTicket(replaceList)
618
+ // setQtyGlobal(itemT)
619
+ // releaseQueue()
620
+ // ini untuk dikirim ke halaman schedule
621
+ let dataPost: any = {
622
+ event_id: availableResult?.id,
623
+ event_title: availableResult?.title,
624
+ charge_payment: availableResult?.charge_payment,
625
+ charge_payment_type: availableResult?.charge_payment_type,
626
+ images: availableResult?.images,
627
+ selected_ticket: replaceList,
628
+ qty: itemC.hasOwnProperty("qty") ? itemC?.qty : 1,
629
+ }
630
+
631
+ LibNavigation.navigate('event/schedule', {
632
+ schedule: itemC.schedule,
633
+ order_type: EventConfigProperty?.state()?.get()?.order_type?.ticket,
634
+ tax: item?.tax,
635
+ dataBookingEvent: dataPost,
636
+ is_multiprice: 1
637
+ })
638
+ }
639
+
640
+
641
+ }} activeOpacity={itemC.status == 1 ? 0 : 1} style={applyStyle({ padding: 5, opacity: 1 })} hitSlop={{ top: 15, left: 15, right: 15, bottom: 15 }} >
642
+ <LibIcon name="information-outline" size={18} color={"#434343"} style={{ opacity: textOpacity }} />
643
+ </TouchableOpacity>
644
+ }
645
+
646
+
540
647
  </View>
541
648
  </TouchableOpacity>
542
649
  )
@@ -553,36 +660,41 @@ export default function m(props: EventTicket_list2Props): any {
553
660
  }));
554
661
  };
555
662
 
556
- return (
557
- <View style={{ flex: 1, backgroundColor: '#fff' }}>
558
- {/* <LibFocus onFocus={onRefresh} /> */}
559
- <EventHeader title={esp.lang("event/ticket_list", "buy_ticket")} subtitle={esp.lang("event/ticket_list", "choose_date")} />
560
- {
561
- !availableResult ?
562
- <LibSkeleton>
563
- {
564
- listLength.map((item: any, i: number) => {
565
- return (
566
- <View key={i}>
567
- <View style={{ height: 30, width: '100%', backgroundColor: '#fff' }} />
568
- <View style={{ padding: 10, width: '100%', flexDirection: 'row', justifyContent: 'space-between', alignContent: 'center', alignItems: 'center' }}>
569
- <View style={{ flexDirection: 'row' }}>
570
- <View style={{ backgroundColor: '#fff', height: 42, width: 42, borderRadius: 3, marginRight: 10 }} />
571
- <View style={{ width: '60%' }}>
572
- <View style={{ backgroundColor: '#fff', height: 20, width: '40%' }} />
573
- <View style={{ backgroundColor: '#fff', marginTop: 7, height: 14, width: '70%' }} />
574
- </View>
663
+ if (!availableResult) {
664
+ return (
665
+ <View style={{ flex: 1, backgroundColor: '#fff' }}>
666
+ <EventHeader title={esp.lang("event/ticket_list", "buy_ticket")} subtitle={esp.lang("event/ticket_list", "choose_date")} />
667
+ <LibSkeleton>
668
+ {
669
+ listLength.map((item: any, i: number) => {
670
+ return (
671
+ <View key={i}>
672
+ <View style={{ height: 30, width: '100%', backgroundColor: '#fff' }} />
673
+ <View style={{ padding: 10, width: '100%', flexDirection: 'row', justifyContent: 'space-between', alignContent: 'center', alignItems: 'center' }}>
674
+ <View style={{ flexDirection: 'row' }}>
675
+ <View style={{ backgroundColor: '#fff', height: 42, width: 42, borderRadius: 3, marginRight: 10 }} />
676
+ <View style={{ width: '60%' }}>
677
+ <View style={{ backgroundColor: '#fff', height: 20, width: '40%' }} />
678
+ <View style={{ backgroundColor: '#fff', marginTop: 7, height: 14, width: '70%' }} />
575
679
  </View>
576
- <View style={{ backgroundColor: '#fff', height: 20, width: '10%' }} />
577
680
  </View>
681
+ <View style={{ backgroundColor: '#fff', height: 20, width: '10%' }} />
578
682
  </View>
579
- )
580
- })
581
- }
582
- </LibSkeleton>
583
- :
584
- <>
585
- {/* {
683
+ </View>
684
+ )
685
+ })
686
+ }
687
+ </LibSkeleton>
688
+ </View>
689
+ )
690
+ }
691
+
692
+ return (
693
+ <EventQueue event_id={Number(availableResult?.id)} >
694
+ <View style={{ flex: 1, backgroundColor: '#fff' }}>
695
+ {/* <LibFocus onFocus={onRefresh} /> */}
696
+ <EventHeader title={esp.lang("event/ticket_list", "buy_ticket")} subtitle={esp.lang("event/ticket_list", "choose_date")} />
697
+ {/* {
586
698
  Object.values(pendingData).filter((item: any) => item?.order_type == "ticket").length > 0 &&
587
699
  <EventPending_trx
588
700
  onPress={() => {
@@ -594,149 +706,163 @@ export default function m(props: EventTicket_list2Props): any {
594
706
  title={esp.lang("event/ticket_list", "pending", String(Object.values(pendingData).filter((item: any) => item?.order_type == "ticket").length))}
595
707
  />
596
708
  } */}
709
+
710
+ <EventQueueProperty.QueueCountdown
711
+ onExpired={() => {
712
+ LibNavigation.back()
713
+ }}
714
+ />
715
+
716
+ <ScrollView refreshControl={<RefreshControl refreshing={false} onRefresh={onRefresh} />}>
717
+ <UseCondition if={is_multiprice == 1} >
718
+ <EventAlert
719
+ color={LibStyle.colorPrimary}
720
+ msg={esp.lang("event/ticket_list2", "u_can_choose_multiple")}
721
+ style={{ marginHorizontal: 15 }}
722
+ useIcon
723
+ />
724
+ </UseCondition>
725
+ {
726
+ availableResult?.image_map != "" &&
727
+ <TouchableOpacity onPress={() => {
728
+ LibNavigation.navigate('lib/gallery', { image: availableResult?.image_map })
729
+ }} style={{ marginBottom: 10, marginTop: 20 }}>
730
+ <LibPicture source={{ uri: availableResult?.image_map }} style={applyStyle({ alignSelf: 'center', height: LibStyle.width * 0.5, width: LibStyle.width })} resizeMode="contain" />
731
+ </TouchableOpacity>
732
+ }
733
+ <View style={{ flex: 1 }}>
597
734
  {
598
- isInPricingQueueConfig(availableResult?.id) && isPass ?
599
- <View style={{ backgroundColor: LibStyle.colorGreen, margin: 16, borderRadius: 5, padding: 10, ...LibStyle.elevation(2) }} >
600
- <LibTextstyle text={esp.lang("event/ticket_list", "select_ticket")} textStyle='caption1' style={{ color: 'white' }} />
601
- <EventCountdown_base
602
- onExpired={() => {
603
- LibNavigation.back(1)
604
- }}
605
- expired={timer}
606
- style={{ color: "#fff", fontWeight: 'bold' }} />
607
- </View>
608
- : null
609
- }
735
+ availableResult?.price_type?.map?.((item: any, i: number) => {
736
+ let textOpacity = item?.status == 1 ? 1 : 0.3
737
+ let filterFullData = availableResult?.price_type?.filter((it: any) => it.status != 0)
738
+ const displayedData = showAll[item.price_id] ? item?.list : item?.list.slice(0, maxDisplay);
610
739
 
611
- <ScrollView refreshControl={<RefreshControl refreshing={false} onRefresh={onRefresh} />}>
612
- <UseCondition if={is_multiprice == 1} >
613
- <EventAlert
614
- color={LibStyle.colorPrimary}
615
- msg={esp.lang("event/ticket_list2", "u_can_choose_multiple")}
616
- style={{ marginHorizontal: 15 }}
617
- useIcon
618
- />
619
- </UseCondition>
620
- {
621
- availableResult?.image_map != "" &&
622
- <TouchableOpacity onPress={() => {
623
- LibNavigation.navigate('lib/gallery', { image: availableResult?.image_map })
624
- }} style={{ marginBottom: 10, marginTop: 20 }}>
625
- <LibPicture source={{ uri: availableResult?.image_map }} style={applyStyle({ alignSelf: 'center', height: LibStyle.width * 0.5, width: LibStyle.width })} resizeMode="contain" />
626
- </TouchableOpacity>
627
- }
628
- <View style={{ flex: 1 }}>
629
- {
630
- availableResult?.price_type?.map?.((item: any, i: number) => {
631
- let textOpacity = item?.status == 1 ? 1 : 0.3
632
- let filterFullData = availableResult?.price_type?.filter((it: any) => it.status != 0)
633
- const displayedData = showAll[item.price_id] ? item?.list : item?.list.slice(0, maxDisplay);
634
-
635
- let ticketWithDate = item.price_date == 1 && item.use_code == 0
636
-
637
- return (
638
- <Pressable onPress={() => {
639
-
640
- }} key={i} style={{ overflow: 'hidden', margin: 15, marginBottom: 5, marginTop: 10, backgroundColor: '#fff', borderRadius: 10, ...LibStyle.elevation(2), borderWidth: 1, borderColor: item.selected == 1 ? LibStyle.colorBlue : LibStyle.colorBgGrey }}>
641
- <View style={{ padding: 10, backgroundColor: '#f1f2f3', borderTopLeftRadius: 10, borderTopRightRadius: 10 }}>
642
- <View style={{ alignContent: 'center', alignItems: 'center', flexDirection: 'row', justifyContent: 'space-between', }}>
643
- <View>
644
- <EventHtmltext allowFontScaling={false} style={{ opacity: textOpacity, fontWeight: 'bold' }}>{item.type}
645
- {
646
- item.qty_min > 1 &&
647
- <Text style={{ color: LibStyle.colorRed, fontSize: 10, fontWeight: 'normal' }}> {"(" + esp.lang("event/ticket_list", "min_order") + LibUtils.number(item.qty_min) + ")"}</Text>
648
- }
649
- </EventHtmltext>
650
- {
651
- deeplinkParams?.type == 'event-voucher' && deeplinkParams?.price_id == item.price_id ?
652
- <Text allowFontScaling={false} style={{ color: "coral", fontSize: 12, fontWeight: 'bold' }}>{esp.lang("event/ticket_list", "applied_code", deeplinkParams?.code)}</Text>
653
- : null
654
- }
655
- </View>
740
+ let ticketWithDate = item.price_date == 1 && item.use_code == 0
656
741
 
742
+ return (
743
+ <Pressable onPress={() => {
744
+
745
+ }} key={i} style={{ overflow: 'hidden', margin: 15, marginBottom: 5, marginTop: 10, backgroundColor: '#fff', borderRadius: 10, ...LibStyle.elevation(2), borderWidth: 1, borderColor: item.selected == 1 ? LibStyle.colorBlue : LibStyle.colorBgGrey }}>
746
+ <View style={{ padding: 10, backgroundColor: '#f1f2f3', borderTopLeftRadius: 10, borderTopRightRadius: 10 }}>
747
+ {
748
+ item?.hasOwnProperty('label') && (item?.label != "" && item?.label != null) &&
749
+ <View style={applyStyle({ flexDirection: 'row' })}>
750
+ <View style={applyStyle({ alignContent: 'center', alignItems: 'center', justifyContent: 'center', borderWidth: 1, backgroundColor: item?.label_color, borderColor: item?.label_color, borderRadius: 3, padding: 2, paddingHorizontal: 5, opacity: 1 })}>
751
+ <Text allowFontScaling={false} style={{ fontSize: 10, fontStyle: "normal", letterSpacing: 0.5, color: EventOrder_itemProperty.textColor(item?.label_color), fontWeight: 'bold' }}>{item?.label}</Text>
752
+ </View>
753
+ </View>
754
+ }
755
+ <View style={{ alignContent: 'center', alignItems: 'center', flexDirection: 'row', justifyContent: 'space-between', }}>
756
+ <View style={{ flex: 2 }}>
757
+ <EventHtmltext allowFontScaling={false} style={{ opacity: textOpacity, fontWeight: 'bold' }}>{item.type}
657
758
  {
658
- item?.status != 1 &&
659
- <View style={applyStyle({ flexDirection: 'row' })}>
660
- <View style={applyStyle({ alignContent: 'center', alignItems: 'center', justifyContent: 'center', borderWidth: 1, backgroundColor: item.status == 0 ? LibStyle.colorRed : "#4cd964", borderColor: item.status == 0 ? LibStyle.colorRed : "#4cd964", borderRadius: 5, padding: 3, opacity: 0.8 })}>
661
- <Text allowFontScaling={false} style={applyStyle({ fontSize: 10, fontStyle: "normal", letterSpacing: 0, color: item.status == 2 ? "#000" : "#fff", fontWeight: 'bold' })}>{item.status == 0 ? esp.lang("event/ticket_list", "sold_out") : esp.lang("event/ticket_list", "coming_soon")}</Text>
662
- </View>
663
- </View>
759
+ item.qty_min > 1 &&
760
+ <Text style={{ color: LibStyle.colorRed, fontSize: 10, fontWeight: 'normal' }}> {"(" + esp.lang("event/ticket_list", "min_order") + LibUtils.number(item.qty_min) + ")"}</Text>
664
761
  }
665
- </View>
762
+ </EventHtmltext>
666
763
  {
667
- item.info != "" && ticketWithDate &&
668
- <View style={{ marginTop: 3, alignContent: 'center', alignItems: 'center', flexDirection: 'row', marginRight: 5 }}>
669
- <Text allowFontScaling={false} style={{ fontSize: 12, color: LibStyle.colorBlue }}>{item.info}</Text>
670
- </View>
764
+ availableResult?.countdown_booking == "1" && displayedData?.length == 1 && item?.status == 1 && item?.date_start != "0000-00-00 00:00:00" && item?.date_end != "0000-00-00 00:00:00" && moment(item?.date_end).format("YYYY-MM-DD HH:mm:ss") >= moment().format("YYYY-MM-DD HH:mm:ss") &&
765
+ <EventCountdown_event date={item?.date_end} containerStyle={{ marginVertical: -5 }} />
766
+ }
767
+
768
+ {
769
+ deeplinkParams?.type == 'event-voucher' && deeplinkParams?.price_id == item.price_id ?
770
+ <Text allowFontScaling={false} style={{ color: "coral", fontSize: 12, fontWeight: 'bold' }}>{esp.lang("event/ticket_list", "applied_code", deeplinkParams?.code)}</Text>
771
+ : null
671
772
  }
672
773
  </View>
673
- {
674
- displayedData?.map((itemC: any, iC: number) => renderItem(itemC, iC, item, i))
675
- }
676
774
 
677
775
  {
678
- filterFullData[i].list?.length > 3 &&
679
- <TouchableOpacity onPress={() => {
680
- handleShowAll(item.price_id)
681
- }} style={{ borderTopColor: LibStyle.colorGrey, borderTopWidth: 0.8, flex: 1, padding: 8, flexDirection: 'row', alignContent: 'center', alignItems: 'center', justifyContent: 'center' }}>
682
- <Text allowFontScaling={false} style={{ marginRight: 5, fontFamily: "Arial", fontSize: 12, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: LibStyle.colorBlue }}>{showAll[item.price_id] ? esp.lang("event/ticket_list", "see_less") : esp.lang("event/ticket_list", "see_more")}</Text>
683
- <LibIcon name={showAll[item.price_id] ? 'chevron-double-up' : 'chevron-double-down'} color={LibStyle.colorBlue} size={18} />
684
- </TouchableOpacity>
776
+ item?.status != 1 &&
777
+ <View style={applyStyle({ flex: 1, justifyContent: 'flex-end', flexDirection: 'row' })}>
778
+ <View style={applyStyle({ alignContent: 'center', alignItems: 'center', justifyContent: 'center', borderWidth: 1, backgroundColor: item.status == 0 ? LibStyle.colorRed : "#4cd964", borderColor: item.status == 0 ? LibStyle.colorRed : "#4cd964", borderRadius: 5, padding: 3, opacity: 0.8 })}>
779
+ <Text allowFontScaling={false} style={applyStyle({ fontSize: 10, fontStyle: "normal", letterSpacing: 0, color: item.status == 2 ? "#000" : "#fff", fontWeight: 'bold' })}>{item.status == 0 ? esp.lang("event/ticket_list", "sold_out") : esp.lang("event/ticket_list", "coming_soon")}</Text>
780
+ </View>
781
+ </View>
685
782
  }
783
+ </View>
784
+ {
785
+ item.info != "" && ticketWithDate &&
786
+ <View style={{ marginTop: 3, alignContent: 'center', alignItems: 'center', flexDirection: 'row', marginRight: 5 }}>
787
+ <Text allowFontScaling={false} style={{ fontSize: 12, color: LibStyle.colorBlue }}>{item.info}</Text>
788
+ </View>
789
+ }
790
+ </View>
791
+ {
792
+ displayedData?.map((itemC: any, iC: number) => renderItem(itemC, iC, item, i))
793
+ }
686
794
 
687
- </Pressable>
688
- )
689
- })
690
- }
795
+ {
796
+ filterFullData[i].list?.length > 3 &&
797
+ <TouchableOpacity onPress={() => {
798
+ handleShowAll(item.price_id)
799
+ }} style={{ borderTopColor: LibStyle.colorGrey, borderTopWidth: 0.8, flex: 1, padding: 8, flexDirection: 'row', alignContent: 'center', alignItems: 'center', justifyContent: 'center' }}>
800
+ <Text allowFontScaling={false} style={{ marginRight: 5, fontFamily: "Arial", fontSize: 12, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: LibStyle.colorBlue }}>{showAll[item.price_id] ? esp.lang("event/ticket_list", "see_less") : esp.lang("event/ticket_list", "see_more")}</Text>
801
+ <LibIcon name={showAll[item.price_id] ? 'chevron-double-up' : 'chevron-double-down'} color={LibStyle.colorBlue} size={18} />
802
+ </TouchableOpacity>
803
+ }
691
804
 
692
- {/* ini view yang dibawah */}
693
- <View style={{ marginTop: 30 }}>
694
- {
695
- unAvailableResult?.price_type?.length > 0 &&
696
- <View style={{ margin: 15, marginTop: 0, marginBottom: 0, paddingBottom: 10, borderBottomWidth: 1, borderBottomColor: LibStyle.colorGrey }}>
697
- <Text allowFontScaling={false} style={{ fontWeight: 'bold', fontSize: 16 }}>{esp.lang("event/ticket_list", "ticket_not_available")}</Text>
698
- </View>
699
- }
700
- {
701
- unAvailableResult?.price_type?.map?.((item: any, i: number) => {
702
- let textOpacity = item?.status == 1 ? 1 : 0.3
703
- let ticketWithDate = item.price_date == 1 && item.use_code == 0
704
- return (
705
- <View key={i} style={{ overflow: 'hidden', margin: 15, marginBottom: 5, backgroundColor: '#fff', borderRadius: 10, ...LibStyle.elevation(2), borderWidth: 1, borderColor: item.selected == 1 ? LibStyle.colorBlue : LibStyle.colorBgGrey }}>
706
- <View style={{ padding: 10, backgroundColor: '#f1f2f3', borderTopLeftRadius: 10, borderTopRightRadius: 10 }}>
707
- <View style={{ alignContent: 'center', alignItems: 'center', flexDirection: 'row', justifyContent: 'space-between', }}>
708
- <Text allowFontScaling={false} style={{ opacity: textOpacity, fontWeight: 'bold' }}>{item.type}</Text>
709
- {
710
- item?.status != 1 &&
711
- <View style={applyStyle({ flexDirection: 'row' })}>
712
- <View style={applyStyle({ alignContent: 'center', alignItems: 'center', justifyContent: 'center', borderWidth: 1, backgroundColor: item.status == 0 ? LibStyle.colorRed : "#4cd964", borderColor: item.status == 0 ? LibStyle.colorRed : "#4cd964", borderRadius: 5, padding: 3, opacity: 0.8 })}>
713
- <Text allowFontScaling={false} style={applyStyle({ fontSize: 10, fontStyle: "normal", letterSpacing: 0, color: item.status == 2 ? "#000" : "#fff", fontWeight: 'bold' })}>{item.status == 0 ? esp.lang("event/ticket_list", "sold_out") : esp.lang("event/ticket_list", "coming_soon")}</Text>
714
- </View>
715
- </View>
716
- }
717
- </View>
718
- {
719
- item.info != "" && ticketWithDate &&
720
- <View style={{ marginTop: 3, alignContent: 'center', alignItems: 'center', flexDirection: 'row', marginRight: 5 }}>
721
- <Text allowFontScaling={false} style={{ fontSize: 12, color: LibStyle.colorBlue }}>{item.info}</Text>
722
- </View>
723
- }
724
- </View>
805
+ </Pressable>
806
+ )
807
+ })
808
+ }
809
+
810
+ {/* ini view yang dibawah */}
811
+ <View style={{ marginTop: 30 }}>
812
+ {
813
+ unAvailableResult?.price_type?.length > 0 &&
814
+ <View style={{ margin: 15, marginTop: 0, marginBottom: 0, paddingBottom: 10, borderBottomWidth: 1, borderBottomColor: LibStyle.colorGrey }}>
815
+ <Text allowFontScaling={false} style={{ fontWeight: 'bold', fontSize: 16 }}>{esp.lang("event/ticket_list", "ticket_not_available")}</Text>
816
+ </View>
817
+ }
818
+ {
819
+ unAvailableResult?.price_type?.map?.((item: any, i: number) => {
820
+ let textOpacity = item?.status == 1 ? 1 : 0.3
821
+ let ticketWithDate = item.price_date == 1 && item.use_code == 0
822
+ return (
823
+ <View key={i} style={{ overflow: 'hidden', margin: 15, marginBottom: 5, backgroundColor: '#fff', borderRadius: 10, ...LibStyle.elevation(2), borderWidth: 1, borderColor: item.selected == 1 ? LibStyle.colorBlue : LibStyle.colorBgGrey }}>
824
+ <View style={{ padding: 10, backgroundColor: '#f1f2f3', borderTopLeftRadius: 10, borderTopRightRadius: 10 }}>
825
+ <View style={{ alignContent: 'center', alignItems: 'center', flexDirection: 'row', justifyContent: 'space-between', }}>
826
+ <Text allowFontScaling={false} style={{ opacity: textOpacity, fontWeight: 'bold' }}>{item.type}</Text>
725
827
  {
726
- item.list.slice(0, 3).map((itemC: any, iC: number) => renderItem(itemC, iC, item, i))
828
+ item?.status != 1 &&
829
+ <View style={applyStyle({ flexDirection: 'row' })}>
830
+ <View style={applyStyle({ alignContent: 'center', alignItems: 'center', justifyContent: 'center', borderWidth: 1, backgroundColor: item.status == 0 ? LibStyle.colorRed : "#4cd964", borderColor: item.status == 0 ? LibStyle.colorRed : "#4cd964", borderRadius: 5, padding: 3, opacity: 0.8 })}>
831
+ <Text allowFontScaling={false} style={applyStyle({ fontSize: 10, fontStyle: "normal", letterSpacing: 0, color: item.status == 2 ? "#000" : "#fff", fontWeight: 'bold' })}>{item.status == 0 ? esp.lang("event/ticket_list", "sold_out") : esp.lang("event/ticket_list", "coming_soon")}</Text>
832
+ </View>
833
+ </View>
727
834
  }
728
835
  </View>
729
- )
730
- })
731
- }
836
+ {
837
+ item.info != "" && ticketWithDate &&
838
+ <View style={{ marginTop: 3, alignContent: 'center', alignItems: 'center', flexDirection: 'row', marginRight: 5 }}>
839
+ <Text allowFontScaling={false} style={{ fontSize: 12, color: LibStyle.colorBlue }}>{item.info}</Text>
840
+ </View>
841
+ }
842
+ </View>
843
+ {
844
+ item.list.slice(0, 3).map((itemC: any, iC: number) => renderItem(itemC, iC, item, i))
845
+ }
846
+ </View>
847
+ )
848
+ })
849
+ }
850
+ </View>
851
+ </View>
852
+ </ScrollView>
853
+ <View style={applyStyle({ margin: 10, marginVertical: 5 })}>
854
+ {
855
+ availableResult?.price_type_info != "" &&
856
+ <Text allowFontScaling={false} style={applyStyle({ marginBottom: 10, fontFamily: "Arial", fontSize: 13, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: LibStyle.colorBlue })} >{availableResult && availableResult?.hasOwnProperty("price_type_info") && availableResult?.price_type_info}</Text>
857
+ }
858
+ {
859
+ loading ?
860
+ <View style={{ minWidth: '100%', alignSelf: 'center' }} >
861
+ <View style={{ borderWidth: 1, borderColor: 'rgba(0, 0, 0, 0)', height: 40, borderRadius: 16, backgroundColor: "#e6e6e6", alignItems: 'center', justifyContent: 'center', paddingHorizontal: 9 }} >
862
+ <ActivityIndicator size={"small"} color={LibStyle.colorPrimary} />
732
863
  </View>
733
864
  </View>
734
- </ScrollView>
735
- <View style={applyStyle({ margin: 10, marginVertical: 5 })}>
736
- {
737
- availableResult?.price_type_info != "" &&
738
- <Text allowFontScaling={false} style={applyStyle({ marginBottom: 10, fontFamily: "Arial", fontSize: 13, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: LibStyle.colorBlue })} >{availableResult && availableResult?.hasOwnProperty("price_type_info") && availableResult?.price_type_info}</Text>
739
- }
865
+ :
740
866
  <EventButton testID={"next_btn"} label={esp.lang("event/ticket_list", "next")} onPress={() => {
741
867
  if (availableResult?.price_type.some((item: any) => item.selected == 1)) {
742
868
  checkSeatMap();
@@ -746,10 +872,9 @@ export default function m(props: EventTicket_list2Props): any {
746
872
  }
747
873
 
748
874
  }} style={applyStyle({ backgroundColor: LibStyle.colorPrimary })} />
749
- </View>
750
- </>
751
- }
752
-
753
- </View>
875
+ }
876
+ </View>
877
+ </View>
878
+ </EventQueue>
754
879
  )
755
880
  }