esoftplay-event 0.0.2-w → 0.0.2-x

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.
@@ -1,7 +1,9 @@
1
1
  // withHooks
2
2
 
3
+ import { ComponentDialog_custom } from 'esoftplay/cache/component/dialog_custom/import';
3
4
  import { EventDistribution_lock } from 'esoftplay/cache/event/distribution_lock/import';
4
5
  import { EventHeader } from 'esoftplay/cache/event/header/import';
6
+ import { EventPayment_subscribeProperty } from 'esoftplay/cache/event/payment_subscribe/import';
5
7
  import { EventRandomseat } from 'esoftplay/cache/event/randomseat/import';
6
8
  import { LibCurl } from 'esoftplay/cache/lib/curl/import';
7
9
  import { LibDialog } from 'esoftplay/cache/lib/dialog/import';
@@ -80,6 +82,64 @@ export default function m(props: EventLoading_pageProps): any {
80
82
  return () => LibNavigation.cancelBackResult(LibNavigation.getResultKey(props))
81
83
  }, [])
82
84
 
85
+ function handleError(error: any) {
86
+ LibProgress.hide()
87
+ LibNavigation.back()
88
+ loadingState.set(LibObject.unset(loadingState.get(), post.trx_id)())
89
+ const ticketNotAvailableCodes = ['EV034', 'EV036', 'EV038', 'EV039', 'EV040']
90
+ if (ticketNotAvailableCodes.includes(error.status_code)) {
91
+ LibNavigation.back()
92
+ // LibNavigation.navigate(post?.is_multi == 1 ? 'event/ticket_list2' : 'event/ticket_list')
93
+ }
94
+ if (error.status_code == 'EV033') {
95
+ LibDialog.custom(
96
+ <EventRandomseat
97
+ onPressOk={() => {
98
+ LibDialog.hide()
99
+ PaymentTicketProperty.stateRandomSeat.set("2")
100
+ EventPayment_subscribeProperty.reBooking.trigger()
101
+ }}
102
+ onPressNo={() => LibDialog.hide()}
103
+ />
104
+ )
105
+ } else if (error?.status_code == "EV045") {
106
+ EventDistribution_lock(() => {
107
+ EventPayment_subscribeProperty.reTryBooking.trigger(post)
108
+ })
109
+ // LibDialog.custom(
110
+ // <ComponentDialog_custom
111
+ // icon={"close-circle"}
112
+ // color={LibStyle.colorRed}
113
+ // msg={error?.message || esp.lang("bigbang/loading_page", "booking_not_complete")}
114
+ // onPressOK={() => {
115
+ // LibDialog.hide()
116
+ // PaymentTicketProperty.reTryBooking.trigger(post)
117
+ // }}
118
+ // onPressCancel={() => { LibDialog.hide() }}
119
+ // />
120
+ // )
121
+ } else if (error?.status_code == "PY0254") {
122
+ LibDialog.custom(
123
+ <ComponentDialog_custom
124
+ showCountdown
125
+ icon={"close-circle"}
126
+ color={LibStyle.colorRed}
127
+ msg={error?.message || esp.lang("bigbang/loading_page", "booking_not_complete")}
128
+ onPressOK={() => {
129
+ LibDialog.hide()
130
+ EventPayment_subscribeProperty.reTryBooking.trigger(post)
131
+ }}
132
+ onPressCancel={() => { LibDialog.hide() }}
133
+ />
134
+ )
135
+ } else {
136
+ if (error?.status_code != "GE043")
137
+ LibDialog.warningConfirm(esp.lang("event/loading_page", "oops"), error?.message, esp.lang("event/loading_page", "back"), () => {
138
+
139
+ }, "", () => { })
140
+ }
141
+ }
142
+
83
143
  function doAction() {
84
144
 
85
145
  if (isSecure && isSecure == 1) {
@@ -95,47 +155,7 @@ export default function m(props: EventLoading_pageProps): any {
95
155
  sendBackResult(dataSB)
96
156
 
97
157
  }, (error) => {
98
- LibProgress.hide()
99
- LibNavigation.back()
100
- loadingState.set(LibObject.unset(loadingState.get(), post.trx_id)())
101
- const ticketNotAvailableCodes = ['EV034', 'EV036', 'EV038', 'EV039', 'EV040']
102
- if (ticketNotAvailableCodes.includes(error.status_code)) {
103
- LibNavigation.back()
104
- // LibNavigation.navigate(post?.is_multi == 1 ? 'event/ticket_list2' : 'event/ticket_list')
105
- }
106
- if (error.status_code == 'EV033') {
107
- LibDialog.custom(
108
- <EventRandomseat
109
- onPressOk={() => {
110
- LibDialog.hide()
111
- PaymentTicketProperty.stateRandomSeat.set("2")
112
- PaymentTicketProperty.reBooking.trigger()
113
- }}
114
- onPressNo={() => LibDialog.hide()}
115
- />
116
- )
117
- } else if (error?.status_code == "EV045") {
118
- EventDistribution_lock(() => {
119
- PaymentTicketProperty.reTryBooking.trigger(post)
120
- })
121
- // LibDialog.custom(
122
- // <ComponentDialog_custom
123
- // icon={"close-circle"}
124
- // color={LibStyle.colorRed}
125
- // msg={error?.message || esp.lang("bigbang/loading_page", "booking_not_complete")}
126
- // onPressOK={() => {
127
- // LibDialog.hide()
128
- // PaymentTicketProperty.reTryBooking.trigger(post)
129
- // }}
130
- // onPressCancel={() => { LibDialog.hide() }}
131
- // />
132
- // )
133
- } else {
134
- if (error?.status_code != "GE043")
135
- LibDialog.warningConfirm(esp.lang("event/loading_page", "oops"), error?.message, esp.lang("event/loading_page", "back"), () => {
136
-
137
- }, "", () => { })
138
- }
158
+ handleError(error)
139
159
  }, 1)
140
160
  } else {
141
161
  new LibCurl(url, post ? post : null, (result, msg) => {
@@ -149,47 +169,7 @@ export default function m(props: EventLoading_pageProps): any {
149
169
 
150
170
  sendBackResult(dataSB)
151
171
  }, (error) => {
152
- LibProgress.hide()
153
- LibNavigation.back()
154
- loadingState.set(LibObject.unset(loadingState.get(), post.trx_id)())
155
- const ticketNotAvailableCodes = ['EV034', 'EV036', 'EV038', 'EV039', 'EV040']
156
- if (ticketNotAvailableCodes.includes(error.status_code)) {
157
- LibNavigation.back()
158
- // LibNavigation.navigate(post?.is_multi == 1 ? 'event/ticket_list2' : 'event/ticket_list')
159
- }
160
- if (error.status_code == 'EV033') {
161
- LibDialog.custom(
162
- <EventRandomseat
163
- onPressOk={() => {
164
- LibDialog.hide()
165
- PaymentTicketProperty.stateRandomSeat.set("2")
166
- PaymentTicketProperty.reBooking.trigger()
167
- }}
168
- onPressNo={() => LibDialog.hide()}
169
- />
170
- )
171
- } else if (error?.status_code == "EV045") {
172
- EventDistribution_lock(() => {
173
- PaymentTicketProperty.reTryBooking.trigger(post)
174
- })
175
- // LibDialog.custom(
176
- // <ComponentDialog_custom
177
- // icon={"close-circle"}
178
- // color={LibStyle.colorRed}
179
- // msg={error?.message || esp.lang("bigbang/loading_page", "booking_not_complete")}
180
- // onPressOK={() => {
181
- // LibDialog.hide()
182
- // PaymentTicketProperty.reTryBooking.trigger(post)
183
- // }}
184
- // onPressCancel={() => { LibDialog.hide() }}
185
- // />
186
- // )
187
- } else {
188
- if (error?.status_code != "GE043")
189
- LibDialog.warningConfirm(esp.lang("event/loading_page", "oops"), error?.message, esp.lang("event/loading_page", "back"), () => {
190
-
191
- }, "", () => { })
192
- }
172
+ handleError(error)
193
173
  }, 1)
194
174
  }
195
175
  }
@@ -36,6 +36,7 @@ import { LibObject } from 'esoftplay/cache/lib/object/import';
36
36
  import { LibSlidingup } from 'esoftplay/cache/lib/slidingup/import';
37
37
  import { UseCondition } from 'esoftplay/cache/use/condition/import';
38
38
  import esp from 'esoftplay/esp';
39
+ import useGlobalState from 'esoftplay/global';
39
40
  import moment from 'esoftplay/moment';
40
41
  import useSafeState from 'esoftplay/state';
41
42
  import useGlobalSubscriber, { useGlobalSubscriberReturn } from 'esoftplay/subscribe';
@@ -54,6 +55,8 @@ export function subscribe(): useGlobalSubscriberReturn {
54
55
  return subs
55
56
  }
56
57
 
58
+ const bookedAddons = useGlobalState<any>(undefined, { persistKey: 'event_detail_addons_booked', isUserData: true, inFile: true, loadOnInit: true })
59
+
57
60
  export default function m(props: EventOrder_detailProps): any {
58
61
  const LibCurl = esp.mod("lib/curl")
59
62
 
@@ -68,7 +71,6 @@ export default function m(props: EventOrder_detailProps): any {
68
71
 
69
72
  const [, setGroupAddon, getGroupAddon] = useSafeState()
70
73
  const [, setSelectedAddon, getSelectedAddon] = useSafeState()
71
- const [addonsBooked, setAddOnsBooked] = useSafeState()
72
74
  const [errorAddonsBooked, setErrorddOnsBooked] = useSafeState()
73
75
 
74
76
  const dataOfflineReview = EventReview_addProperty.state().get()
@@ -157,10 +159,10 @@ export default function m(props: EventOrder_detailProps): any {
157
159
 
158
160
  function loadDataAddonsBooked(url: string) {
159
161
  new LibCurl(url, null, (ress: any) => {
160
- setAddOnsBooked(ress)
162
+ bookedAddons?.set(ress)
161
163
  setErrorddOnsBooked(undefined)
162
164
  }, (error: any) => {
163
- setAddOnsBooked(undefined)
165
+ bookedAddons?.set(undefined)
164
166
  setErrorddOnsBooked(error)
165
167
  })
166
168
 
@@ -430,7 +432,7 @@ export default function m(props: EventOrder_detailProps): any {
430
432
  </View>
431
433
  {
432
434
  result?.hasOwnProperty('url_addons_booked') && result?.url_addons_booked != "" &&
433
- <EventOrder_detail_addons_booked addonsBooked={addonsBooked} errorAddonsBooked={errorAddonsBooked} onPress={loadData} />
435
+ <EventOrder_detail_addons_booked addonsBooked={bookedAddons?.get()} errorAddonsBooked={errorAddonsBooked} onPress={loadData} />
434
436
  }
435
437
  </View>
436
438
 
@@ -0,0 +1,18 @@
1
+ // withHooks
2
+
3
+ import useGlobalSubscriber from 'esoftplay/subscribe';
4
+
5
+
6
+ export interface EventPayment_subscribeArgs {
7
+
8
+ }
9
+ export interface EventPayment_subscribeProps {
10
+
11
+ }
12
+
13
+ export const reBooking = useGlobalSubscriber()
14
+ export const reTryBooking = useGlobalSubscriber()
15
+
16
+ export default function m(props: EventPayment_subscribeProps): any {
17
+ return null
18
+ }
@@ -0,0 +1,35 @@
1
+ // withHooks
2
+
3
+ import { EventButton } from 'esoftplay/cache/event/button/import';
4
+ import { EventHeader } from 'esoftplay/cache/event/header/import';
5
+ import { LibFont } from 'esoftplay/cache/lib/font/import';
6
+ import { LibNavigation } from 'esoftplay/cache/lib/navigation/import';
7
+ import { LibStyle } from 'esoftplay/cache/lib/style/import';
8
+ import React from 'react';
9
+ import { ScrollView, Text, View } from 'react-native';
10
+
11
+
12
+ export interface EventPoint_eventsArgs {
13
+
14
+ }
15
+ export interface EventPoint_eventsProps {
16
+
17
+ }
18
+ export default function m(props: EventPoint_eventsProps): any {
19
+ return (
20
+ <View style={{ flex: 1, backgroundColor: LibStyle.colorBgGrey }}>
21
+ <EventHeader title='Pilih Event Aktif' />
22
+ <ScrollView>
23
+ <View style={{ margin: 15, }}>
24
+ <Text allowFontScaling={false} style={{ marginTop: 20, fontSize: 20, fontFamily: LibFont('ArialBold') }}>Pilih Event Aktif</Text>
25
+ <Text allowFontScaling={false} style={{ fontFamily: LibFont('SFProText'), marginTop: 3 }}>Silahkan pilih event untuk melihat point anda</Text>
26
+ </View>
27
+
28
+ </ScrollView>
29
+ <EventButton style={{ margin: 15 }} label='Selanjutnya' backgroundColor='#002045' onPress={() => {
30
+ LibNavigation.navigate('event/point_summary')
31
+ }} />
32
+
33
+ </View>
34
+ )
35
+ }
@@ -0,0 +1,101 @@
1
+ // withHooks
2
+ import { EventButton } from 'esoftplay/cache/event/button/import';
3
+ import { EventHeader } from 'esoftplay/cache/event/header/import';
4
+ import { LibIcon } from 'esoftplay/cache/lib/icon/import';
5
+ import { LibNavigation } from 'esoftplay/cache/lib/navigation/import';
6
+ import { LibStyle } from 'esoftplay/cache/lib/style/import';
7
+ import { useEffect } from 'react';
8
+
9
+ import React from 'react';
10
+ import { ScrollView, Text, TouchableOpacity, View } from 'react-native';
11
+ import Animated, { useAnimatedStyle, useSharedValue, withRepeat, withTiming } from 'react-native-reanimated';
12
+
13
+
14
+ export interface EventPoint_redemptionArgs {
15
+
16
+ }
17
+ export interface EventPoint_redemptionProps {
18
+
19
+ }
20
+ export default function m(props: EventPoint_redemptionProps): any {
21
+ const opacity = useSharedValue(1)
22
+
23
+ useEffect(() => {
24
+ opacity.value = withRepeat(
25
+ withTiming(0.7, {
26
+ duration: 1000,
27
+ }),
28
+ -1, // infinite
29
+ true // reverse
30
+ )
31
+ }, [])
32
+ const animatedStyle = useAnimatedStyle(() => ({
33
+ opacity: opacity.value,
34
+ }))
35
+
36
+ let mainColor = /* exchange */"#059669" /* redem #002045 */
37
+
38
+ return (
39
+ <View style={{ flex: 1, backgroundColor: LibStyle.colorBgGrey }}>
40
+ <EventHeader title='Point Redemption' subtitle='NAMA EVENT NIH' />
41
+ <ScrollView>
42
+ <TouchableOpacity onPress={() => {
43
+ LibNavigation.navigateForResult('component/scanner').then((value) => {
44
+ LibNavigation.navigate('event/point_redemption_input', { qr: value })
45
+ })
46
+ }} style={{ margin: 10, backgroundColor: '#fff', borderRadius: 10, overflow: 'hidden', ...LibStyle.elevation(2) }}>
47
+ <View style={{ backgroundColor: '#002045', padding: 30 }}>
48
+ <Animated.View style={[
49
+ {
50
+ width: 50,
51
+ height: 50,
52
+ borderRadius: 25,
53
+ backgroundColor: '#4A607A',
54
+ justifyContent: 'center', alignContent: 'center', alignItems: 'center', alignSelf: 'center'
55
+ },
56
+ animatedStyle,
57
+ ]}>
58
+ <LibIcon name='qrcode-scan' color='#fff' size={30} />
59
+ </Animated.View>
60
+ </View>
61
+ <View style={{ padding: 10 }}>
62
+ <View style={{ flexDirection: 'row' }}>
63
+ <View style={{ flex: 1, marginRight: 10 }}>
64
+ <Text allowFontScaling={false} style={{ fontSize: 17, fontWeight: 'bold' }}>Penukaran Point</Text>
65
+ <Text allowFontScaling={false} style={{}}>Pindai QR member untuk menambahkan poin dari struk belanja{/* atau memproses penukaran poin. */}</Text>
66
+ </View>
67
+ <View>
68
+ <View style={{ padding: 5, borderRadius: 5, backgroundColor: '#FFEFD7' }}>
69
+ <LibIcon name='shield-key-outline' />
70
+ </View>
71
+ </View>
72
+ </View>
73
+ </View>
74
+ <EventButton style={{ margin: 10 }} label='Scan QR Member' backgroundColor='#001B3C' onPress={() => {
75
+ LibNavigation.navigateForResult('component/scanner').then((value) => {
76
+ // LibNavigation.navigate('event/point_redemption_input', { qr: value })
77
+ LibNavigation.navigate('event/point_redemption_exchange', { qr: value })
78
+ })
79
+ }} />
80
+ </TouchableOpacity>
81
+
82
+ <Text allowFontScaling={false} style={{ margin: 10, marginBottom: 0, letterSpacing: 1.5, fontWeight: 'bold' }}>RIWAYAT PENUKARAN</Text>
83
+
84
+ <View style={{ margin: 10, marginBottom: 0, borderWidth: 1, borderColor: '#C5C7C8', borderRadius: 10, padding: 10, flexDirection: 'row' }}>
85
+ <View>
86
+ <View style={{ padding: 5, borderRadius: 5, backgroundColor: '#B2C8E6' }}>
87
+ <LibIcon name={'file-document'} color='#fff' />
88
+ </View>
89
+ </View>
90
+ <View style={{ flex: 1, marginLeft: 10, alignContent: 'center', justifyContent: 'center' }}>
91
+ <Text allowFontScaling={false} style={{ fontSize: 16 }}>{"Redeem struk belanja"}</Text>
92
+ </View>
93
+ <View style={{ alignContent: 'center', justifyContent: 'center' }}>
94
+ <Text allowFontScaling={false} style={{ fontSize: 22, fontWeight: 'bold', color: LibStyle.colorGreen }}>{"+ 400"}</Text>
95
+ </View>
96
+ </View>
97
+
98
+ </ScrollView>
99
+ </View>
100
+ )
101
+ }
@@ -0,0 +1,60 @@
1
+ // withHooks
2
+ import { EventButton } from 'esoftplay/cache/event/button/import';
3
+ import { EventHeader } from 'esoftplay/cache/event/header/import';
4
+ import { LibFont } from 'esoftplay/cache/lib/font/import';
5
+ import { LibIcon } from 'esoftplay/cache/lib/icon/import';
6
+ import { LibPicture } from 'esoftplay/cache/lib/picture/import';
7
+ import { LibStyle } from 'esoftplay/cache/lib/style/import';
8
+
9
+ import React from 'react';
10
+ import { ScrollView, Text, TouchableOpacity, View } from 'react-native';
11
+
12
+
13
+ export interface EventPoint_redemption_exchangeArgs {
14
+
15
+ }
16
+ export interface EventPoint_redemption_exchangeProps {
17
+
18
+ }
19
+ export default function m(props: EventPoint_redemption_exchangeProps): any {
20
+ return (
21
+ <View style={{ flex: 1, backgroundColor: LibStyle.colorBgGrey }}>
22
+ <EventHeader />
23
+ <ScrollView>
24
+
25
+ <View style={{ margin: 15, marginBottom: 0, padding: 10, borderRadius: 10, backgroundColor: '#059669', overflow: 'hidden' }}>
26
+ <View style={{ opacity: 0.3, height: 100, width: 150, top: -40, right: -40, position: 'absolute', }}>
27
+ <LibIcon name='shield-check' size={150} color='#fff' />
28
+ </View>
29
+ <View style={{ marginBottom: 20, flexDirection: 'row' }}>
30
+ <LibPicture source={{ uri: 'https://0.soompi.io/wp-content/uploads/2025/11/17232014/karina-chanel-beauty-2.jpg' }} style={{ height: 50, width: 50, borderRadius: 30 }} />
31
+ <View style={{ marginLeft: 10, alignContent: 'center', justifyContent: 'center', }}>
32
+ <Text allowFontScaling={false} style={{ fontWeight: 'bold', fontSize: 16, color: '#fff' }}>{"KATARINABLUEEE"}</Text>
33
+ <Text allowFontScaling={false} style={{ letterSpacing: 1, color: '#fff' }}>{"katarinabluee@gmail.com"}</Text>
34
+ </View>
35
+ </View>
36
+ <Text allowFontScaling={false} style={{ color: '#fff', fontFamily: LibFont('SFProText'), letterSpacing: 1, fontSize: 12 }}>{"POINT TERSEDIA"}</Text>
37
+ <Text allowFontScaling={false} style={{ color: '#fff', marginTop: 5, fontFamily: LibFont('DecoNumbers'), fontSize: 36, letterSpacing: 1.5 }}>{"1000"}<Text style={{ fontSize: 14, fontWeight: 'normal' }}>{" POINT"}</Text> </Text>
38
+ </View>
39
+
40
+ <Text allowFontScaling={false} style={{ margin: 15, marginBottom: 0, letterSpacing: 1.5, fontWeight: 'bold' }}>REWARD TERSEDIA</Text>
41
+
42
+ <TouchableOpacity style={{ margin: 15, marginBottom: 0, borderWidth: 1, borderColor: '#C5C7C8', backgroundColor: '#fff', borderRadius: 10, padding: 10, flexDirection: 'row', alignContent: 'center', alignItems: 'center' }}>
43
+ <View>
44
+ <View style={{ padding: 5, borderRadius: 5, backgroundColor: '#4EDEA3' }}>
45
+ <LibIcon name={'medal'} color='#fff' />
46
+ </View>
47
+ </View>
48
+ <View style={{ flex: 1, marginLeft: 10, marginRight: 10, alignContent: 'center', justifyContent: 'center' }}>
49
+ <Text allowFontScaling={false} style={{ fontFamily: LibFont('ArialBold'), fontSize: 16 }}>{"Redeem struk belanja untuk tas bigbang besar warna kuning"}</Text>
50
+ <Text allowFontScaling={false} style={{ marginTop: 5, fontSize: 20, fontFamily: LibFont('DecoNumbers'), color: LibStyle.colorGreen }}>{"400 Point"}</Text>
51
+ </View>
52
+ <LibIcon name='checkbox-blank-circle-outline' color='#059669' />
53
+ </TouchableOpacity>
54
+
55
+ </ScrollView>
56
+ <EventButton style={{ margin: 10 }} backgroundColor={"#059669"} label='TUKARKAN' onPress={() => { }} />
57
+
58
+ </View>
59
+ )
60
+ }
@@ -0,0 +1,56 @@
1
+ // withHooks
2
+ import { EventButton } from 'esoftplay/cache/event/button/import';
3
+ import { EventHeader } from 'esoftplay/cache/event/header/import';
4
+ import { LibFont } from 'esoftplay/cache/lib/font/import';
5
+ import { LibInput } from 'esoftplay/cache/lib/input/import';
6
+ import { LibKeyboard_avoid } from 'esoftplay/cache/lib/keyboard_avoid/import';
7
+ import { LibNavigation } from 'esoftplay/cache/lib/navigation/import';
8
+ import { LibPicture } from 'esoftplay/cache/lib/picture/import';
9
+ import { LibStyle } from 'esoftplay/cache/lib/style/import';
10
+
11
+ import React from 'react';
12
+ import { ScrollView, Text, View } from 'react-native';
13
+
14
+
15
+ export interface EventPoint_redemption_inputArgs {
16
+
17
+ }
18
+ export interface EventPoint_redemption_inputProps {
19
+
20
+ }
21
+ export default function m(props: EventPoint_redemption_inputProps): any {
22
+ const { qr } = LibNavigation.getArgsAll(props)
23
+
24
+ return (
25
+ <View style={{ flex: 1, backgroundColor: LibStyle.colorBgGrey }}>
26
+ <EventHeader title='Input Kupon Member' />
27
+ <LibKeyboard_avoid>
28
+ <ScrollView>
29
+ <View style={{ margin: 15, marginBottom: 0, backgroundColor: '#fff', padding: 10, borderWidth: 1, borderRadius: 10, borderColor: '#7992BD', flexDirection: 'row' }}>
30
+ <LibPicture source={{ uri: 'https://0.soompi.io/wp-content/uploads/2025/11/17232014/karina-chanel-beauty-2.jpg' }} style={{ height: 50, width: 50, borderRadius: 30 }} />
31
+ <View style={{ marginLeft: 10, alignContent: 'center', justifyContent: 'center', }}>
32
+ <Text allowFontScaling={false} style={{ fontWeight: 'bold', fontSize: 16, color: '#002045' }}>{"KATARINABLUEEE"}</Text>
33
+ <Text allowFontScaling={false} style={{ letterSpacing: 1 }}>{"katarinabluee@gmail.com"}</Text>
34
+ </View>
35
+ </View>
36
+
37
+ <View style={{ margin: 15, backgroundColor: '#002045', padding: 10, borderRadius: 10 }}>
38
+ <Text allowFontScaling={false} style={{ color: '#fff', letterSpacing: 1 }}>{"Point saat ini"}</Text>
39
+ <Text allowFontScaling={false} style={{ color: '#fff', fontFamily: LibFont('DecoNumbers'), fontSize: 40, marginTop: 5, letterSpacing: 1.5 }}>{"1000"}</Text>
40
+ </View>
41
+
42
+ <Text allowFontScaling={false} style={{ alignSelf: 'center', fontWeight: 'bold', marginTop: 15, fontSize: 16, color: '#002045' }}>{"MASUKKAN TOTAL HARGA STRUK"}</Text>
43
+ <View style={{ flex: 1, width: LibStyle.width / 2, alignSelf: 'center' }}>
44
+ <LibInput
45
+ style={{ textAlign: 'center', fontSize: 30, marginTop: -10 }}
46
+ keyboardType='phone-pad'
47
+ />
48
+ </View>
49
+ </ScrollView>
50
+ <EventButton style={{ margin: 15 }} label='Lanjutkan Penukaran' backgroundColor='#002045' onPress={() => {
51
+ LibNavigation.navigate('event/point_redemption_success')
52
+ }} />
53
+ </LibKeyboard_avoid>
54
+ </View>
55
+ )
56
+ }
@@ -0,0 +1,50 @@
1
+ // withHooks
2
+ import { EventButton } from 'esoftplay/cache/event/button/import';
3
+ import { EventHeader } from 'esoftplay/cache/event/header/import';
4
+ import { LibFont } from 'esoftplay/cache/lib/font/import';
5
+ import { LibIcon } from 'esoftplay/cache/lib/icon/import';
6
+ import { LibPicture } from 'esoftplay/cache/lib/picture/import';
7
+ import { LibStyle } from 'esoftplay/cache/lib/style/import';
8
+
9
+ import React from 'react';
10
+ import { ScrollView, Text, View } from 'react-native';
11
+
12
+
13
+ export interface EventPoint_redemption_successArgs {
14
+
15
+ }
16
+ export interface EventPoint_redemption_successProps {
17
+
18
+ }
19
+ export default function m(props: EventPoint_redemption_successProps): any {
20
+ return (
21
+ <View style={{ flex: 1, backgroundColor: LibStyle.colorBgGrey }}>
22
+ <EventHeader />
23
+ <ScrollView>
24
+ <View style={{ padding: 10, marginTop: 30, alignContent: 'center', alignItems: 'center', justifyContent: 'center' }}>
25
+ <View style={{ height: 100, width: 100, alignContent: 'center', alignItems: 'center', justifyContent: 'center', borderRadius: 50, backgroundColor: '#002045' }}>
26
+ <LibIcon name='check-circle' color='#fff' size={50} />
27
+ </View>
28
+ <Text allowFontScaling={false} style={{ marginTop: 20, fontSize: 20, fontFamily: LibFont('ArialBold') }}>Point berhasil ditambahkan</Text>
29
+ <Text allowFontScaling={false} style={{ fontFamily: LibFont('SFProText'), marginTop: 3 }}>Transaksi telah berhasil diproses.</Text>
30
+ </View>
31
+
32
+ <View style={{ margin: 15, padding: 10, backgroundColor: '#fff', borderRadius: 10 }}>
33
+ <View style={{ paddingBottom: 10, flexDirection: 'row', borderBottomWidth: 1, borderBottomColor: LibStyle.colorBgGrey }}>
34
+ <LibPicture source={{ uri: 'https://0.soompi.io/wp-content/uploads/2025/11/17232014/karina-chanel-beauty-2.jpg' }} style={{ height: 50, width: 50, borderRadius: 30 }} />
35
+ <View style={{ marginLeft: 10, alignContent: 'center', justifyContent: 'center', }}>
36
+ <Text allowFontScaling={false} style={{ fontWeight: 'bold', fontSize: 16, color: '#002045' }}>{"KATARINABLUEEE"}</Text>
37
+ <Text allowFontScaling={false} style={{ letterSpacing: 1 }}>{"katarinabluee@gmail.com"}</Text>
38
+ </View>
39
+ </View>
40
+ <View style={{ marginTop: 15, borderRadius: 10, padding: 10, backgroundColor: '#AEC7F5' }}>
41
+ <Text allowFontScaling={false} style={{ color: '#000', letterSpacing: 1, fontFamily: LibFont('SFProText') }}>{"Point diperoleh"}</Text>
42
+ <Text allowFontScaling={false} style={{ color: '#002045', marginTop: 5, fontFamily: LibFont('DecoNumbers'), fontSize: 40, letterSpacing: 1.5 }}>{"+1000"}<Text style={{ fontSize: 14 }}> point</Text></Text>
43
+ </View>
44
+ </View>
45
+
46
+ </ScrollView>
47
+ <EventButton style={{ margin: 10 }} backgroundColor={"#002045"} label='Kembali' onPress={() => { }} />
48
+ </View>
49
+ )
50
+ }
@@ -0,0 +1,48 @@
1
+ // withHooks
2
+ import { EventHeader } from 'esoftplay/cache/event/header/import';
3
+ import { LibFont } from 'esoftplay/cache/lib/font/import';
4
+ import { LibIcon } from 'esoftplay/cache/lib/icon/import';
5
+ import { LibStyle } from 'esoftplay/cache/lib/style/import';
6
+
7
+ import React from 'react';
8
+ import { ScrollView, Text, View } from 'react-native';
9
+
10
+
11
+ export interface EventPoint_summaryArgs {
12
+
13
+ }
14
+ export interface EventPoint_summaryProps {
15
+
16
+ }
17
+ export default function m(props: EventPoint_summaryProps): any {
18
+ return (
19
+ <View style={{ flex: 1, backgroundColor: LibStyle.colorBgGrey }}>
20
+ <EventHeader title='Point Saya' />
21
+ <ScrollView>
22
+
23
+ <View style={{ margin: 15, marginBottom: 0, padding: 10, borderRadius: 10, backgroundColor: '#059669', height: 120, overflow: 'scroll' }}>
24
+ <View style={{ opacity: 0.3, height: 100, width: 150, top: -40, right: -40, position: 'absolute', }}>
25
+ <LibIcon name='star-circle' size={150} color='#fff' />
26
+ </View>
27
+ <Text allowFontScaling={false} style={{ color: '#fff', fontFamily: LibFont('SFProText'), letterSpacing: 1, fontSize: 12 }}>{"POINT SAAT INI"}</Text>
28
+ <Text allowFontScaling={false} style={{ color: '#fff', fontFamily: LibFont('SFProText'), fontWeight: 'bold', fontSize: 36, letterSpacing: 1.5 }}>{"1000"}<Text style={{ fontSize: 14, fontWeight: 'normal' }}>{" POINT"}</Text> </Text>
29
+ </View>
30
+
31
+ <View style={{ margin: 15, marginBottom: 0,backgroundColor:'#E1E3E4', borderWidth: 1, borderColor: '#C5C7C8', borderRadius: 10, padding: 10, flexDirection: 'row' }}>
32
+ <View>
33
+ <View style={{ padding: 5, borderRadius: 333, backgroundColor: '#059669' }}>
34
+ <LibIcon name={'piggy-bank-outline'} color='#fff' />
35
+ </View>
36
+ </View>
37
+ <View style={{ flex: 1, marginLeft: 10 }}>
38
+ <Text allowFontScaling={false} style={{ fontSize: 12, letterSpacing: 1.5, fontWeight: 'bold' }}>{"CARA DAPAT POINT"}</Text>
39
+ <Text allowFontScaling={false} style={{ fontSize: 12, letterSpacing: 1 }}>{"Dapatkan poin dengan melakukan pembelian di area event dan menukarka struk pembelian ke booth penukaran"}</Text>
40
+ </View>
41
+ </View>
42
+
43
+ <Text allowFontScaling={false} style={{ margin: 15, marginBottom: 0, letterSpacing: 1.5, fontWeight: 'bold' }}>RIWAYAT PENUKARAN</Text>
44
+
45
+ </ScrollView>
46
+ </View>
47
+ )
48
+ }
@@ -21,7 +21,7 @@ export interface EventScheduleProps {
21
21
 
22
22
  }
23
23
  export default function m(props: EventScheduleProps): any {
24
- const { schedule, dataBookingEvent, order_type, tax, is_multiprice } = LibNavigation.getArgsAll(props)
24
+ const { url, schedule, dataBookingEvent, order_type, tax, is_multiprice } = LibNavigation.getArgsAll(props)
25
25
  const [qty, setQty] = useSafeState<number>(dataBookingEvent?.qty || 1)
26
26
 
27
27
  function add(quota?: any, quota_used?: any): void {