@subiz/widget-v4 4.0.59 → 4.0.64
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.
- package/assets/img/caret.svg +1 -0
- package/assets/img/done_green.svg +4 -0
- package/assets/img/empty_1.svg +11 -0
- package/assets/img/ghn.svg +17 -0
- package/assets/img/ghtk.svg +18 -0
- package/assets/img/home.svg +1 -0
- package/assets/img/info.svg +1 -0
- package/assets/img/loader.svg +1 -0
- package/assets/img/map-pin.svg +1 -0
- package/assets/img/not_found_search.png +0 -0
- package/assets/img/package.svg +5 -0
- package/assets/img/package_fade.svg +1 -0
- package/assets/img/phone.svg +1 -0
- package/assets/img/search.svg +1 -0
- package/assets/img/shop.svg +1 -0
- package/assets/img/shop_faded.svg +1 -0
- package/assets/img/user.svg +1 -0
- package/assets/img/x.svg +5 -0
- package/assets/less/chatbox.less +35 -0
- package/assets/less/dropdown_select.less +130 -0
- package/assets/less/form.less +7 -20
- package/assets/less/order.less +489 -0
- package/assets/less/rating.less +3 -8
- package/babel.config.js +2 -4
- package/compiled_src/bot.js +7 -1
- package/compiled_src/chatbox/DropdownSelect.js +248 -0
- package/compiled_src/chatbox/Event.js +4 -2
- package/compiled_src/chatbox/Events.js +1 -0
- package/compiled_src/chatbox/Order.js +285 -0
- package/compiled_src/chatbox/OrderAttachments.js +2 -1
- package/compiled_src/chatbox/TextMessage.js +9 -2
- package/compiled_src/chatbox/Widget.js +44 -3
- package/compiled_src/chatbox/main.js +2 -1
- package/compiled_src/chatbox/spinner.js +1 -1
- package/compiled_src/chatbox/time.js +3 -1
- package/compiled_src/common.js +40 -1
- package/compiled_src/contact/contact.js +1 -3
- package/compiled_src/order/address_picker.js +249 -0
- package/compiled_src/order/icon.js +62 -0
- package/compiled_src/order/index.js +113 -0
- package/compiled_src/order/order.js +1234 -0
- package/compiled_src/plugin.js +9 -42
- package/compiled_src/popup/popup.js +2 -2
- package/compiled_src/store/api.js +20 -0
- package/compiled_src/store/store.js +42 -0
- package/compiled_src/util/common.js +36 -2
- package/dist/0b82fa7e5c3b07b40a44.png +1 -0
- package/dist/0f4af006e38ee8b93633.png +1 -0
- package/dist/{74.js → 132.js} +2322 -279
- package/dist/178.js +341 -174
- package/dist/17ee31b89ac.132.js +1 -0
- package/dist/17ee31b89ac.178.js +1 -0
- package/dist/17ee31b89ac.213.js +1 -0
- package/dist/17ee31b89ac.335.js +1 -0
- package/dist/17ee31b89ac.362.js +1 -0
- package/dist/17ee31b89ac.441.js +1 -0
- package/dist/17ee31b89ac.605.js +1 -0
- package/dist/17ee31b89ac.678.js +1 -0
- package/dist/17ee31b89ac.782.js +1 -0
- package/dist/17ee31b89ac.app.js +1 -0
- package/dist/{17d939953e0.index.html → 17ee31b89ac.index.html} +3 -18
- package/dist/{17d939953e0.library.html → 17ee31b89ac.library.html} +3 -18
- package/dist/17ee31b89ac.library.js +1 -0
- package/dist/{17d939953e0.preview.html → 17ee31b89ac.preview.html} +1 -1
- package/dist/17ee31b89ac.preview.js +1 -0
- package/dist/17ee31b89ac.screenshoot.js +1 -0
- package/dist/1ea1c6cd21d25176810c.png +1 -0
- package/dist/213.js +35 -70
- package/dist/292d42404e1b03398f61.png +1 -0
- package/dist/312d376370831b7bea83.png +1 -0
- package/dist/313d1bfc1cf776d1aefe.png +1 -0
- package/dist/335.js +411 -0
- package/dist/362.js +71 -21
- package/dist/441.js +70 -44
- package/dist/4aa58bb7a66bb44975aa.png +1 -0
- package/dist/56ce063bc6c81adb7322.png +1 -0
- package/dist/605.js +1 -64
- package/dist/678.js +70 -20
- package/dist/6a411166ef5cc79e0714.png +1 -0
- package/dist/6faf403782fefacc1649.png +1 -0
- package/dist/782.js +118 -21
- package/dist/79dca33c68fab79c067f.png +1 -0
- package/dist/82da1578fa84f9debaeb.png +1 -0
- package/dist/8b8e0f0824743974b282.png +1 -0
- package/dist/8d551390d81e39130a3c.png +1 -0
- package/dist/9fc61b9479877ebdb6c7.png +1 -0
- package/dist/HASH +1 -1
- package/dist/a165d31dcb3dc90f1057.png +1 -0
- package/dist/a98d4a5698812c4426b3.png +1 -0
- package/dist/assets/img/caret.998eb8f.svg +1 -0
- package/dist/assets/img/done_green.b817fd4.svg +4 -0
- package/dist/assets/img/empty_1.0b98af0.svg +11 -0
- package/dist/assets/img/ghn.070f8e3.svg +17 -0
- package/dist/assets/img/ghtk.326eac1.svg +18 -0
- package/dist/assets/img/info.ebce7ea.svg +1 -0
- package/dist/assets/img/loader.37000a7.svg +1 -0
- package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
- package/dist/assets/img/package.8d37d0f.svg +5 -0
- package/dist/assets/img/package_fade.763c001.svg +1 -0
- package/dist/assets/img/search.f9705ff.svg +1 -0
- package/dist/assets/img/shop.f7dc7d8.svg +1 -0
- package/dist/assets/img/shop_faded.df7845a.svg +1 -0
- package/dist/assets/img/x.26fdfa3.svg +5 -0
- package/dist/c41606bf9d1b604e46d5.png +1 -0
- package/dist/ce1f7450ce6c1aacd330.png +1 -0
- package/dist/cf8c01e88f4770a6e3e5.png +1 -0
- package/dist/dfbcfeab1d5622a737e2.png +1 -0
- package/dist/e4893ed8c2f7b8329919.png +1 -0
- package/dist/ec2ab4eb4ef73d186186.png +1 -0
- package/dist/screenshoot.html +1 -1
- package/dist/screenshoot.js +211 -48
- package/index.html +3 -18
- package/order.html +32 -0
- package/package.json +14 -15
- package/src/bot.js +2 -1
- package/src/chatbox/DropdownSelect.js +229 -0
- package/src/chatbox/Event.js +2 -2
- package/src/chatbox/Events.js +43 -42
- package/src/chatbox/Order.js +232 -0
- package/src/chatbox/OrderAttachments.js +2 -1
- package/src/chatbox/TextMessage.js +21 -12
- package/src/chatbox/Widget.js +34 -4
- package/src/chatbox/main.js +2 -2
- package/src/chatbox/spinner.js +1 -1
- package/src/chatbox/time.js +1 -1
- package/src/common.js +52 -8
- package/src/contact/contact.js +1 -1
- package/src/order/address_picker.js +235 -0
- package/src/order/icon.js +32 -0
- package/src/order/index.js +86 -0
- package/src/order/order.js +1157 -0
- package/src/order/scratch +211 -0
- package/src/plugin.js +7 -52
- package/src/popup/popup.js +2 -2
- package/src/store/api.js +26 -1
- package/src/store/store.js +46 -9
- package/src/util/common.js +48 -2
- package/webpack.dev.js +2 -0
- package/dist/17d939953e0.178.js +0 -1
- package/dist/17d939953e0.213.js +0 -1
- package/dist/17d939953e0.362.js +0 -1
- package/dist/17d939953e0.441.js +0 -1
- package/dist/17d939953e0.605.js +0 -1
- package/dist/17d939953e0.619.js +0 -1
- package/dist/17d939953e0.678.js +0 -1
- package/dist/17d939953e0.74.js +0 -1
- package/dist/17d939953e0.782.js +0 -1
- package/dist/17d939953e0.app.js +0 -1
- package/dist/17d939953e0.library.js +0 -1
- package/dist/17d939953e0.preview.js +0 -1
- package/dist/17d939953e0.screenshoot.js +0 -1
- package/dist/619.js +0 -777
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import sb from '../util/index.js'
|
|
2
|
+
import {Com, Clickaway} from '../common.js'
|
|
3
|
+
import {h, createRef} from 'preact'
|
|
4
|
+
import Spinner from '../chatbox/spinner.js'
|
|
5
|
+
|
|
6
|
+
// props: ['items', 'mode', 'has_search', selected, loading, width, full],
|
|
7
|
+
export default class AddressPicker extends Com {
|
|
8
|
+
state = {
|
|
9
|
+
show: false,
|
|
10
|
+
searchValue: '',
|
|
11
|
+
addresses: [],
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
filterRef = createRef()
|
|
15
|
+
overlayRef = createRef()
|
|
16
|
+
|
|
17
|
+
constructor(props) {
|
|
18
|
+
super(props)
|
|
19
|
+
|
|
20
|
+
document.addEventListener('touchmove', function(e) {
|
|
21
|
+
// e.preventDefault();
|
|
22
|
+
// e.stopPropagation();
|
|
23
|
+
// alert('2')
|
|
24
|
+
// return false
|
|
25
|
+
})
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
onTouchMove = (e) => {
|
|
29
|
+
if (e.target === this.overlayRef.current) {
|
|
30
|
+
e.preventDefault()
|
|
31
|
+
e.stopPropagation()
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
hideDropdown = () => {
|
|
36
|
+
this.setState({show: false, searchValue: ''})
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
onKeydown = (e) => {
|
|
40
|
+
if (e.key === 'Escape') {
|
|
41
|
+
if (!this.state.show) return
|
|
42
|
+
if (this.state.searchValue) this.setState({searchValue: ''})
|
|
43
|
+
else this.hideDropdown()
|
|
44
|
+
e.preventDefault()
|
|
45
|
+
e.stopPropagation()
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (e.key == 'Enter') {
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
doSearch = sb.throttle(async () => {
|
|
53
|
+
// flag to detect rat race
|
|
54
|
+
let requestId = Date.now()
|
|
55
|
+
this.requestId = requestId
|
|
56
|
+
|
|
57
|
+
let res = await this.props.store.suggest_addresses(this.state.searchValue)
|
|
58
|
+
|
|
59
|
+
// avoid previouse request render after
|
|
60
|
+
if (this.requestId !== requestId) return
|
|
61
|
+
this.setState({addresses: sb.get(res, 'body.addresses', [])})
|
|
62
|
+
}, 100)
|
|
63
|
+
|
|
64
|
+
componentDidMount() {
|
|
65
|
+
window.addEventListener('keydown', this.onKeydown)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
componentWillUnmount() {
|
|
69
|
+
window.removeEventListener('keydown', this.onKeydown)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
onChangeSearchValue = (e) => {
|
|
73
|
+
this.setState({searchValue: e.target.value})
|
|
74
|
+
this.props.onChangeAddress(e.target.value)
|
|
75
|
+
this.doSearch()
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
renderEmpty() {
|
|
79
|
+
return (
|
|
80
|
+
<div class='dropdown_select_filter__empty'>
|
|
81
|
+
<img class='dropdown_select_filter__empty_img' src={require('../../assets/img/not_found_search.png')} />
|
|
82
|
+
<div class='muted' style='text-align: center !important;'>
|
|
83
|
+
Không có kết quả
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
renderLoading() {
|
|
90
|
+
return (
|
|
91
|
+
<div class='dropdown_select_filter__empty pt-3'>
|
|
92
|
+
<Spinner size='40' static />
|
|
93
|
+
<div class='muted mt-2' style='text-align: center !important;'>
|
|
94
|
+
Đang tải dữ liệu
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
toogleDropdown = async () => {
|
|
101
|
+
await this.setState({show: true, searchValue: this.props.initAddress || ''})
|
|
102
|
+
|
|
103
|
+
this.focusFilter()
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
focusFilter() {
|
|
107
|
+
if (!this.filterRef.current) return
|
|
108
|
+
this.filterRef.current.focus()
|
|
109
|
+
setTimeout(() => {
|
|
110
|
+
if (!this.filterRef.current) return
|
|
111
|
+
this.filterRef.current.focus()
|
|
112
|
+
}, 100)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
onSelect = (item) => {
|
|
116
|
+
this.props.onSelect(item)
|
|
117
|
+
this.hideDropdown()
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
renderDropdown() {
|
|
121
|
+
if (!this.state.show) return null
|
|
122
|
+
|
|
123
|
+
let $items = sb.map(this.state.addresses, (addr, i) => {
|
|
124
|
+
let label = [((addr.address || '') + ' ' + normalize(addr.street)).trim()].join(', ')
|
|
125
|
+
let desc = [normalize(addr.ward), normalize(addr.district), normalize(addr.province)].join(', ')
|
|
126
|
+
|
|
127
|
+
return (
|
|
128
|
+
<div class='dropdown_select__item' onClick={(_) => this.onSelect(addr)} key={i}>
|
|
129
|
+
<div>
|
|
130
|
+
<b>{label}</b>
|
|
131
|
+
</div>
|
|
132
|
+
<div style='opacity: 0.7 !important;'>{desc}</div>
|
|
133
|
+
</div>
|
|
134
|
+
)
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
let $filter = null
|
|
138
|
+
let $img = <img class='dropdown_select_filter__icon' src={require('../../assets/img/search.svg')} />
|
|
139
|
+
if (this.props.loading) {
|
|
140
|
+
$img = <img class='dropdown_select_filter__icon' src={require('../../assets/img/loader.svg')} />
|
|
141
|
+
}
|
|
142
|
+
$filter = (
|
|
143
|
+
<div class='dropdown_select_filter'>
|
|
144
|
+
{$img}
|
|
145
|
+
<input
|
|
146
|
+
ref={this.filterRef}
|
|
147
|
+
value={this.state.searchValue}
|
|
148
|
+
onInput={this.onChangeSearchValue}
|
|
149
|
+
type='text'
|
|
150
|
+
class='dropdown_select_filter_input '
|
|
151
|
+
/>
|
|
152
|
+
</div>
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
if ($items.length == 0) $items = this.renderEmpty()
|
|
156
|
+
if (this.props.loading) $items = this.renderLoading()
|
|
157
|
+
|
|
158
|
+
let style = `width: ${this.props.width || '150px'} !important;`
|
|
159
|
+
if (this.props.full) {
|
|
160
|
+
style = ` top: 20px !important; left: 20px !important; right: 20px !important; width: unset !important; `
|
|
161
|
+
return (
|
|
162
|
+
<div
|
|
163
|
+
class='dropdown_select__overlay'
|
|
164
|
+
ref={this.overlayRef}
|
|
165
|
+
onClick={this.hideDropdown}
|
|
166
|
+
onTouchMove={this.onTouchMove}>
|
|
167
|
+
<div
|
|
168
|
+
class='dropdown_select'
|
|
169
|
+
style={style}
|
|
170
|
+
onClick={(e) => {
|
|
171
|
+
e.preventDefault()
|
|
172
|
+
e.stopPropagation()
|
|
173
|
+
}}>
|
|
174
|
+
{$filter}
|
|
175
|
+
<div class='dropdown_select__items'>{$items}</div>
|
|
176
|
+
</div>
|
|
177
|
+
</div>
|
|
178
|
+
)
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
return (
|
|
182
|
+
<div class='dropdown_select' style={style}>
|
|
183
|
+
{$filter}
|
|
184
|
+
<div class='dropdown_select__items'>{$items}</div>
|
|
185
|
+
</div>
|
|
186
|
+
)
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
onBackgroundScroll = (e) => {
|
|
190
|
+
console.log('EEEEEEE', e)
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
render() {
|
|
194
|
+
let $name = (
|
|
195
|
+
<div class='text-truncate' style='flex: 1 !important;'>
|
|
196
|
+
{this.props.initAddress}
|
|
197
|
+
</div>
|
|
198
|
+
)
|
|
199
|
+
|
|
200
|
+
let style = 'position: relative !important;'
|
|
201
|
+
if (this.props.full) {
|
|
202
|
+
style = ''
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return (
|
|
206
|
+
<div style={style}>
|
|
207
|
+
<Clickaway onClickaway={this.hideDropdown}>
|
|
208
|
+
<div type='text' class={'dropdown_select_input ' + this.props.extra_cls} onClick={this.toogleDropdown}>
|
|
209
|
+
{$name}
|
|
210
|
+
</div>
|
|
211
|
+
{this.renderDropdown()}
|
|
212
|
+
</Clickaway>
|
|
213
|
+
</div>
|
|
214
|
+
)
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
function normalize(s) {
|
|
219
|
+
let ls = (s + '').toLowerCase()
|
|
220
|
+
if (ls.startsWith('tp ')) return s.substr(3)
|
|
221
|
+
|
|
222
|
+
if (ls.startsWith('thanh pho ')) return s.substr('thanh pho '.length)
|
|
223
|
+
if (ls.startsWith('thành phố ')) return s.substr('thành phố '.length)
|
|
224
|
+
if (ls.startsWith('tỉnh ')) return s.substr('tỉnh '.length)
|
|
225
|
+
if (ls.startsWith('huyện ')) return s.substr('huyện '.length)
|
|
226
|
+
if (ls.startsWith('tỉnh ')) return s.substr('tỉnh '.length)
|
|
227
|
+
if (ls.startsWith('xã ')) return s.substr('xã '.length)
|
|
228
|
+
if (ls.startsWith('thị trấn ')) return s.substr('thị trấn '.length)
|
|
229
|
+
if (ls.startsWith('thị xã ')) return s.substr('thị xã '.length)
|
|
230
|
+
// phuong khuong dinh => khuong dinh; phuong 1 => phuong 1
|
|
231
|
+
if (ls.startsWith('đường ') && (s[7] < '0' || s[7] > '9')) return s.substr('đường '.length)
|
|
232
|
+
if (ls.startsWith('phường ') && (s[7] < '0' || s[7] > '9')) return s.substr('phường '.length)
|
|
233
|
+
if (ls.startsWith('quận ') && (s[7] < '0' || s[7] > '9')) return s.substr('quận '.length)
|
|
234
|
+
return s
|
|
235
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import sb from '../util/index.js'
|
|
2
|
+
let promiseMainCSS = (() => import(/*webpackChunkName: "main-css" */ '../chatbox/css.js'))()
|
|
3
|
+
|
|
4
|
+
var $link = document.createElement('link')
|
|
5
|
+
$link.href = 'https://fonts.googleapis.com/css2?family=Roboto:wght@400;500&display=swap'
|
|
6
|
+
$link.rel = 'stylesheet'
|
|
7
|
+
document.head.append($link)
|
|
8
|
+
|
|
9
|
+
sb.preloadWebfonts(['Roboto'], [400, 500])
|
|
10
|
+
|
|
11
|
+
import Time from '../chatbox/time.js'
|
|
12
|
+
let defaultAvatar = require('../../assets/img/default_avatar.png')
|
|
13
|
+
import * as common from '../common.js'
|
|
14
|
+
import DropdownSelect from '../chatbox/DropdownSelect.js'
|
|
15
|
+
import {h, createRef, render, Fragment} from 'preact'
|
|
16
|
+
|
|
17
|
+
export default class Icon extends common.Com {
|
|
18
|
+
render() {
|
|
19
|
+
if (this.props.name == 'package') {
|
|
20
|
+
if (this.props.active)
|
|
21
|
+
return <img style='width: 18px !important;' src={require('../../assets/img/package.svg')} />
|
|
22
|
+
|
|
23
|
+
return <img style='width: 18px !important;' src={require('../../assets/img/package_fade.svg')} />
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (this.props.name === 'shop') {
|
|
27
|
+
if (this.props.active) return <img style='width: 18px !important;' src={require('../../assets/img/shop.svg')} />
|
|
28
|
+
|
|
29
|
+
return <img style='width: 18px !important;' src={require('../../assets/img/shop_faded.svg')} />
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import Store from '../store/store.js'
|
|
2
|
+
import * as common from '../common.js'
|
|
3
|
+
import sb from '../util/index.js'
|
|
4
|
+
import {h, render} from 'preact'
|
|
5
|
+
import Order from './order.js'
|
|
6
|
+
// find the body
|
|
7
|
+
let promiseMainCSS = (() => import(/*webpackChunkName: "main-css" */ '../chatbox/css.js'))()
|
|
8
|
+
|
|
9
|
+
var config = require('../../config.js')
|
|
10
|
+
|
|
11
|
+
function findChatbox(store) {
|
|
12
|
+
var pluginM = store.matchPlugin()
|
|
13
|
+
let chatboxs = sb.filter(pluginM, (plugin) => plugin.type === 'chatbox')
|
|
14
|
+
if (sb.size(chatboxs) === 0) {
|
|
15
|
+
console.error('no chatbox found.')
|
|
16
|
+
return
|
|
17
|
+
}
|
|
18
|
+
return chatboxs[0]
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function getUrlParameter(name) {
|
|
22
|
+
name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]')
|
|
23
|
+
var regex = new RegExp('[\\?&]' + name + '=([^&#]*)')
|
|
24
|
+
var results = regex.exec(location.search)
|
|
25
|
+
return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '))
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
var $link = document.createElement('link')
|
|
29
|
+
$link.href = 'https://fonts.googleapis.com/css2?family=Roboto:wght@400;500&display=swap'
|
|
30
|
+
$link.rel = 'stylesheet'
|
|
31
|
+
document.head.append($link)
|
|
32
|
+
|
|
33
|
+
sb.preloadWebfonts(['Roboto'], [400, 500])
|
|
34
|
+
|
|
35
|
+
async function load() {
|
|
36
|
+
let store = new Store(config.ApiURL, config.FileURL, config.RealtimeURL, true)
|
|
37
|
+
let signkey = getUrlParameter('x-signed-key')
|
|
38
|
+
let {body, error} = await store.lookupOrder(signkey)
|
|
39
|
+
let order = body
|
|
40
|
+
// order.status = 'confirmed'
|
|
41
|
+
let accid = sb.get(order, 'ctx.credential.account_id')
|
|
42
|
+
let user_id = sb.get(order, 'ctx.credential.issuer')
|
|
43
|
+
let mask = accid + '@' + user_id
|
|
44
|
+
await store.init(accid, mask)
|
|
45
|
+
|
|
46
|
+
window.store = store
|
|
47
|
+
|
|
48
|
+
let t = (key) => {
|
|
49
|
+
if (_locale === 'debug') return `{{${key}}}`
|
|
50
|
+
|
|
51
|
+
let messages = sb.get(common.langMessages, _locale, [])
|
|
52
|
+
let message = sb.find(messages, (message) => message.key === key)
|
|
53
|
+
return sb.get(message, 'message', key)
|
|
54
|
+
}
|
|
55
|
+
let acc = store.matchAccount()
|
|
56
|
+
let plugin = findChatbox(store)
|
|
57
|
+
|
|
58
|
+
// make sure you are still alive
|
|
59
|
+
let css = (await promiseMainCSS).default.default.toString()
|
|
60
|
+
var outcss = sb.replaceCssVariable(css, plugin.chatbox)
|
|
61
|
+
|
|
62
|
+
let $cssStyleDiv = document.createElement('style')
|
|
63
|
+
document.head.appendChild($cssStyleDiv)
|
|
64
|
+
$cssStyleDiv.type = 'text/css'
|
|
65
|
+
$cssStyleDiv.id = 'subiz-style-for-order'
|
|
66
|
+
|
|
67
|
+
sb.setCss('order', $cssStyleDiv, outcss)
|
|
68
|
+
|
|
69
|
+
// auto detect language first
|
|
70
|
+
let _locale = plugin.locale || acc.locale || 'vi-VN'
|
|
71
|
+
t.i18n = (i18nText) => {
|
|
72
|
+
if (!i18nText) return ''
|
|
73
|
+
let fallbackLocale = plugin.locale || acc.locale || 'vi-VN'
|
|
74
|
+
fallbackLocale = fallbackLocale.replace('-', '_')
|
|
75
|
+
let locale = _locale.replace('-', '_')
|
|
76
|
+
|
|
77
|
+
return i18nText[locale] || i18nText[fallbackLocale]
|
|
78
|
+
}
|
|
79
|
+
t.locale = () => _locale
|
|
80
|
+
|
|
81
|
+
common.downloadLanguage(store, _locale).then(() => {
|
|
82
|
+
render(<Order store={store} t={t} order_id={order.id} />, document.getElementById('order'))
|
|
83
|
+
})
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
load()
|