@necrolab/dashboard 0.4.54 → 0.4.55
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/backend/endpoints.js +0 -3
- package/backend/mock-data.js +2 -10
- package/config/configs.json +0 -1
- package/package.json +1 -1
- package/src/components/Editors/Account/AccountCreator.vue +22 -24
- package/src/components/Editors/Account/CreateAccount.vue +9 -9
- package/src/components/Editors/Profile/CreateProfile.vue +64 -50
- package/src/components/Tasks/CreateTaskAXS.vue +58 -37
- package/src/components/Tasks/CreateTaskTM.vue +70 -56
- package/src/stores/sampleData.js +4 -25
- package/src/stores/ui.js +1 -1
- package/src/stores/utils.js +25 -2
- package/src/types/index.js +1 -2
package/backend/endpoints.js
CHANGED
|
@@ -170,7 +170,6 @@ const scrapeMap = async (data) => {
|
|
|
170
170
|
taskId: "SCRAPER-" + eventId,
|
|
171
171
|
account: utils.pickAccount(),
|
|
172
172
|
eventId: eventId,
|
|
173
|
-
incapsulaBypass: true,
|
|
174
173
|
hidden: true,
|
|
175
174
|
presaleCode: presaleCode
|
|
176
175
|
});
|
|
@@ -188,7 +187,6 @@ const checkStock = async (data) => {
|
|
|
188
187
|
var taskObj = new TicketMaster({
|
|
189
188
|
taskId: "SCRAPER-" + eventId,
|
|
190
189
|
eventId: eventId,
|
|
191
|
-
incapsulaBypass: true,
|
|
192
190
|
hidden: true
|
|
193
191
|
});
|
|
194
192
|
taskObj.scrapeSeats();
|
|
@@ -197,7 +195,6 @@ const checkStock = async (data) => {
|
|
|
197
195
|
|
|
198
196
|
async function createPresaleModeTasks(eventId, ticketQty) {
|
|
199
197
|
const presaleModeSettings = {
|
|
200
|
-
incapsulaBypass: false,
|
|
201
198
|
agedAccount: false,
|
|
202
199
|
manual: false,
|
|
203
200
|
openCart: false,
|
package/backend/mock-data.js
CHANGED
|
@@ -1,22 +1,14 @@
|
|
|
1
1
|
const users = [
|
|
2
2
|
{
|
|
3
3
|
event: "auth",
|
|
4
|
-
botChannels: {
|
|
5
|
-
splash: "-",
|
|
6
|
-
carts: "-",
|
|
7
|
-
checkouts: "-",
|
|
8
|
-
declines: "-",
|
|
9
|
-
stockChecker: "-",
|
|
10
|
-
venueMaps: "-"
|
|
11
|
-
},
|
|
12
4
|
_id: "641a5292b561088b64fe390b",
|
|
13
5
|
name: "Admin",
|
|
14
6
|
password: "admin",
|
|
15
7
|
profilePicture: "https://cdn.discordapp.com/avatars/435549216304267264/6cfd74ad7c5939a0bcbf218aa08be8cb.png",
|
|
16
8
|
admin: true,
|
|
17
9
|
proxyList: { checkout: "admin-proxies" },
|
|
18
|
-
profileTags: ["
|
|
19
|
-
|
|
10
|
+
profileTags: ["Citi", "Mercury", "Slash"],
|
|
11
|
+
tags: ["admin"]
|
|
20
12
|
}
|
|
21
13
|
];
|
|
22
14
|
|
package/config/configs.json
CHANGED
package/package.json
CHANGED
|
@@ -6,26 +6,25 @@
|
|
|
6
6
|
</template>
|
|
7
7
|
|
|
8
8
|
<div>
|
|
9
|
-
<div class="form-grid mt-7
|
|
10
|
-
<div class="input-wrapper
|
|
11
|
-
<label class="label-override mb-2"
|
|
12
|
-
|
|
9
|
+
<div class="form-grid mb-4 mt-7">
|
|
10
|
+
<div class="input-wrapper relative-positioned z-tooltip col-span-8">
|
|
11
|
+
<label class="label-override mb-2">
|
|
12
|
+
Account Tag
|
|
13
13
|
<TagIcon />
|
|
14
14
|
</label>
|
|
15
15
|
<Dropdown
|
|
16
|
-
class="input-default dropdown p-4
|
|
17
|
-
:default="ui.profile.
|
|
18
|
-
:options="ui.profile.
|
|
16
|
+
class="input-default dropdown w-full p-4"
|
|
17
|
+
:default="ui.profile.tags[0]"
|
|
18
|
+
:options="ui.profile.tags"
|
|
19
19
|
:onClick="(f) => (creatorConfig.tag = f)"
|
|
20
20
|
:capitalize="true"
|
|
21
21
|
:allowDefault="false"
|
|
22
|
-
:chosen="creatorConfig.tag"
|
|
23
|
-
/>
|
|
22
|
+
:chosen="creatorConfig.tag" />
|
|
24
23
|
</div>
|
|
25
24
|
|
|
26
25
|
<div class="input-wrapper col-span-4">
|
|
27
|
-
<label class="label-override mb-2"
|
|
28
|
-
|
|
26
|
+
<label class="label-override mb-2">
|
|
27
|
+
Threads
|
|
29
28
|
<EditIcon />
|
|
30
29
|
</label>
|
|
31
30
|
<div :class="`input-default ${errors.includes('threads') ? 'error' : ''}`">
|
|
@@ -41,8 +40,8 @@
|
|
|
41
40
|
</div>
|
|
42
41
|
</div>
|
|
43
42
|
<div class="input-wrapper col-span-8">
|
|
44
|
-
<label class="label-override mb-2"
|
|
45
|
-
|
|
43
|
+
<label class="label-override mb-2">
|
|
44
|
+
Email catchall
|
|
46
45
|
<MailIcon />
|
|
47
46
|
</label>
|
|
48
47
|
<div :class="`input-default ${errors.includes('catchall') ? 'error' : ''}`">
|
|
@@ -50,8 +49,8 @@
|
|
|
50
49
|
</div>
|
|
51
50
|
</div>
|
|
52
51
|
<div class="input-wrapper col-span-4">
|
|
53
|
-
<label class="label-override mb-2"
|
|
54
|
-
|
|
52
|
+
<label class="label-override mb-2">
|
|
53
|
+
Catchall amount
|
|
55
54
|
<BagIcon />
|
|
56
55
|
</label>
|
|
57
56
|
<div :class="`input-default ${errors.includes('number') ? 'error' : ''}`">
|
|
@@ -67,8 +66,8 @@
|
|
|
67
66
|
</div>
|
|
68
67
|
</div>
|
|
69
68
|
<div class="input-wrapper col-span-12">
|
|
70
|
-
<label class="label-override mb-2"
|
|
71
|
-
|
|
69
|
+
<label class="label-override mb-2">
|
|
70
|
+
Emails
|
|
72
71
|
<MailIcon />
|
|
73
72
|
</label>
|
|
74
73
|
<div :class="`${errors.includes('emails') ? 'error-border' : ''}`">
|
|
@@ -77,16 +76,15 @@
|
|
|
77
76
|
class="proxy-editor"
|
|
78
77
|
spellcheck="false"
|
|
79
78
|
style="max-height: 250px; min-height: 150px"
|
|
80
|
-
placeholder="Enter emails here - One per line"
|
|
81
|
-
></textarea>
|
|
79
|
+
placeholder="Enter emails here - One per line"></textarea>
|
|
82
80
|
</div>
|
|
83
81
|
</div>
|
|
84
82
|
</div>
|
|
85
83
|
<button
|
|
86
|
-
class="button-default
|
|
87
|
-
@click="done()"
|
|
88
|
-
|
|
89
|
-
|
|
84
|
+
class="button-default ml-auto mt-4 flex w-48 items-center justify-center gap-x-2 bg-dark-400 text-xs hover:opacity-70 active:opacity-50"
|
|
85
|
+
@click="done()">
|
|
86
|
+
Start
|
|
87
|
+
<EditIcon />
|
|
90
88
|
</button>
|
|
91
89
|
</div>
|
|
92
90
|
</Modal>
|
|
@@ -147,7 +145,7 @@ const creatorConfig = ref({
|
|
|
147
145
|
threads: 5,
|
|
148
146
|
catchall: "",
|
|
149
147
|
emails: "",
|
|
150
|
-
tag: ui.profile.
|
|
148
|
+
tag: ui.profile.tags[0],
|
|
151
149
|
number: 0
|
|
152
150
|
});
|
|
153
151
|
|
|
@@ -7,17 +7,17 @@
|
|
|
7
7
|
</template>
|
|
8
8
|
|
|
9
9
|
<div>
|
|
10
|
-
<div class="grid grid-cols-12 gap-3
|
|
10
|
+
<div class="my-3 grid grid-cols-12 gap-3">
|
|
11
11
|
<!-- Profile tag -->
|
|
12
|
-
<div class="input-wrapper
|
|
12
|
+
<div class="input-wrapper relative-positioned z-tooltip col-span-4">
|
|
13
13
|
<label class="label-override mb-2">
|
|
14
14
|
Profile Tag
|
|
15
15
|
<TagIcon />
|
|
16
16
|
</label>
|
|
17
17
|
<Dropdown
|
|
18
|
-
:class="`input-default dropdown p-4
|
|
19
|
-
:default="ui.profile.
|
|
20
|
-
:options="ui.profile.
|
|
18
|
+
:class="`input-default dropdown w-full p-4 ${errors.includes('profileTag') ? 'error' : ''}`"
|
|
19
|
+
:default="ui.profile.tags[0]"
|
|
20
|
+
:options="ui.profile.tags"
|
|
21
21
|
:onClick="(f) => (account.tag = f)"
|
|
22
22
|
:capitalize="true"
|
|
23
23
|
:allowDefault="false"
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
</div>
|
|
26
26
|
|
|
27
27
|
<!-- Email -->
|
|
28
|
-
<div class="input-wrapper col-span-8
|
|
28
|
+
<div class="input-wrapper z-0 col-span-8">
|
|
29
29
|
<label class="label-override mb-2">
|
|
30
30
|
Email
|
|
31
31
|
<MailIcon />
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
</div>
|
|
49
49
|
|
|
50
50
|
<!-- Password -->
|
|
51
|
-
<div class="input-wrapper col-span-12
|
|
51
|
+
<div class="input-wrapper z-0 col-span-12">
|
|
52
52
|
<label class="label-override mb-2">
|
|
53
53
|
Password
|
|
54
54
|
<KeyIcon />
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
</div>
|
|
68
68
|
|
|
69
69
|
<button
|
|
70
|
-
class="button-default
|
|
70
|
+
class="button-default ml-auto mt-4 flex w-48 items-center justify-center gap-x-2 bg-dark-400 text-xs hover:opacity-70 active:opacity-50"
|
|
71
71
|
@click="done()">
|
|
72
72
|
Save
|
|
73
73
|
<EditIcon />
|
|
@@ -116,7 +116,7 @@ const ui = useUIStore();
|
|
|
116
116
|
const account = ref({
|
|
117
117
|
email: "",
|
|
118
118
|
password: "",
|
|
119
|
-
tag: ui.profile.
|
|
119
|
+
tag: ui.profile.tags[0]
|
|
120
120
|
});
|
|
121
121
|
|
|
122
122
|
if (ui.currentlyEditing?.email) account.value = ui.currentlyEditing;
|
|
@@ -7,24 +7,25 @@
|
|
|
7
7
|
</template>
|
|
8
8
|
|
|
9
9
|
<div>
|
|
10
|
-
<div class="grid grid-cols-12 gap-3
|
|
10
|
+
<div class="my-3 grid grid-cols-12 gap-3">
|
|
11
11
|
<!-- Profile tag -->
|
|
12
|
-
<div class="input-wrapper col-span-4
|
|
13
|
-
<label class="label-override mb-2">
|
|
12
|
+
<div class="input-wrapper z-dropdown col-span-4">
|
|
13
|
+
<label class="label-override mb-2">
|
|
14
|
+
Profile Tag
|
|
14
15
|
<TagIcon />
|
|
15
16
|
</label>
|
|
16
17
|
<Dropdown
|
|
17
18
|
:class="`input-default dropdown w-full ${errors.includes('profileTag') ? 'error' : ''}`"
|
|
18
|
-
:default="ui.profile.
|
|
19
|
-
:options="ui.profile.
|
|
19
|
+
:default="ui.profile.tags[0]"
|
|
20
|
+
:options="ui.profile.tags"
|
|
20
21
|
:onClick="(f) => (profile.tag = f)"
|
|
21
|
-
:capitalize="true"
|
|
22
|
-
/>
|
|
22
|
+
:capitalize="true" />
|
|
23
23
|
</div>
|
|
24
24
|
|
|
25
25
|
<!-- Card Number -->
|
|
26
|
-
<div class="input-wrapper col-span-8
|
|
27
|
-
<label class="label-override mb-2">
|
|
26
|
+
<div class="input-wrapper z-0 col-span-8">
|
|
27
|
+
<label class="label-override mb-2">
|
|
28
|
+
Card Number
|
|
28
29
|
<CartIcon />
|
|
29
30
|
</label>
|
|
30
31
|
<div :class="`input-default ${errors.includes('cardNumber') ? 'error' : ''}`">
|
|
@@ -35,27 +36,27 @@
|
|
|
35
36
|
maxlength="23"
|
|
36
37
|
inputmode="numeric"
|
|
37
38
|
@input="handleCreditCardUpdate"
|
|
38
|
-
@focus="formatCardNumberDisplay"
|
|
39
|
-
/>
|
|
39
|
+
@focus="formatCardNumberDisplay" />
|
|
40
40
|
</div>
|
|
41
41
|
</div>
|
|
42
42
|
|
|
43
43
|
<!-- Country chooser -->
|
|
44
44
|
<div class="input-wrapper col-span-2">
|
|
45
|
-
<label class="label-override mb-2">
|
|
45
|
+
<label class="label-override mb-2">
|
|
46
|
+
Country
|
|
46
47
|
<SandclockIcon />
|
|
47
48
|
</label>
|
|
48
49
|
<ProfileCountryChooser
|
|
49
50
|
class="h-8"
|
|
50
51
|
:value="profile.country"
|
|
51
52
|
:onClick="chooseCountry"
|
|
52
|
-
:disabled="true"
|
|
53
|
-
/>
|
|
53
|
+
:disabled="true" />
|
|
54
54
|
</div>
|
|
55
55
|
|
|
56
56
|
<!-- Exp Year -->
|
|
57
57
|
<div class="input-wrapper col-span-5">
|
|
58
|
-
<label class="label-override mb-2
|
|
58
|
+
<label class="label-override z-0 mb-2">
|
|
59
|
+
Expiry Year
|
|
59
60
|
<TimerIcon />
|
|
60
61
|
</label>
|
|
61
62
|
<Dropdown
|
|
@@ -65,17 +66,17 @@
|
|
|
65
66
|
profile.expYear && !profile?.expYear?.startsWith('20')
|
|
66
67
|
? '20' + profile.expYear
|
|
67
68
|
: profile.expYear
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
? profile.expYear
|
|
70
|
+
: undefined
|
|
70
71
|
"
|
|
71
72
|
:options="['2025', '2026', '2027', '2028', '2029', '2030', '2031']"
|
|
72
|
-
:onClick="(f) => (profile.expYear = f)"
|
|
73
|
-
/>
|
|
73
|
+
:onClick="(f) => (profile.expYear = f)" />
|
|
74
74
|
</div>
|
|
75
75
|
|
|
76
76
|
<!-- Exp Month -->
|
|
77
|
-
<div class="input-wrapper col-span-5
|
|
78
|
-
<label class="label-override mb-2">
|
|
77
|
+
<div class="input-wrapper z-2 col-span-5">
|
|
78
|
+
<label class="label-override mb-2">
|
|
79
|
+
Expiry Month
|
|
79
80
|
<TimerIcon />
|
|
80
81
|
</label>
|
|
81
82
|
<Dropdown
|
|
@@ -83,13 +84,13 @@
|
|
|
83
84
|
default="Expiry Month"
|
|
84
85
|
:value="profile.expMonth ? profile.expMonth : undefined"
|
|
85
86
|
:options="['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']"
|
|
86
|
-
:onClick="(f) => (profile.expMonth = f)"
|
|
87
|
-
/>
|
|
87
|
+
:onClick="(f) => (profile.expMonth = f)" />
|
|
88
88
|
</div>
|
|
89
89
|
|
|
90
90
|
<!-- CVV -->
|
|
91
|
-
<div class="input-wrapper col-span-6 md:col-span-4
|
|
92
|
-
<label class="label-override mb-2">
|
|
91
|
+
<div class="input-wrapper z-0 col-span-6 md:col-span-4">
|
|
92
|
+
<label class="label-override mb-2">
|
|
93
|
+
CVV
|
|
93
94
|
<ShieldIcon />
|
|
94
95
|
</label>
|
|
95
96
|
<div :class="`input-default ${errors.includes('cvv') ? 'error' : ''}`">
|
|
@@ -99,14 +100,14 @@
|
|
|
99
100
|
max="9999"
|
|
100
101
|
maxlength="4"
|
|
101
102
|
minlength="3"
|
|
102
|
-
v-model="profile.cvv"
|
|
103
|
-
/>
|
|
103
|
+
v-model="profile.cvv" />
|
|
104
104
|
</div>
|
|
105
105
|
</div>
|
|
106
106
|
|
|
107
107
|
<!-- City -->
|
|
108
|
-
<div class="input-wrapper col-span-6 md:col-span-4
|
|
109
|
-
<label class="label-override mb-2">
|
|
108
|
+
<div class="input-wrapper z-0 col-span-6 md:col-span-4">
|
|
109
|
+
<label class="label-override mb-2">
|
|
110
|
+
City
|
|
110
111
|
<StadiumIcon />
|
|
111
112
|
</label>
|
|
112
113
|
<div :class="`input-default ${errors.includes('city') ? 'error' : ''}`">
|
|
@@ -115,8 +116,9 @@
|
|
|
115
116
|
</div>
|
|
116
117
|
|
|
117
118
|
<!-- State -->
|
|
118
|
-
<div class="input-wrapper col-span-6 md:col-span-4
|
|
119
|
-
<label class="label-override mb-2">
|
|
119
|
+
<div class="input-wrapper z-1 col-span-6 md:col-span-4">
|
|
120
|
+
<label class="label-override mb-2">
|
|
121
|
+
State
|
|
120
122
|
<SandclockIcon />
|
|
121
123
|
</label>
|
|
122
124
|
<div v-if="profile.country === 'US'" :class="`${errors.includes('state') ? 'error' : ''}`">
|
|
@@ -127,8 +129,7 @@
|
|
|
127
129
|
:options="usStates"
|
|
128
130
|
:allowDefault="false"
|
|
129
131
|
rightAmount="right-2"
|
|
130
|
-
:value="profile.state"
|
|
131
|
-
/>
|
|
132
|
+
:value="profile.state" />
|
|
132
133
|
</div>
|
|
133
134
|
<div v-else :class="`input-default ${errors.includes('state') ? 'error' : ''}`">
|
|
134
135
|
<input disabled placeholder="N/A" value="" />
|
|
@@ -136,8 +137,9 @@
|
|
|
136
137
|
</div>
|
|
137
138
|
|
|
138
139
|
<!-- Zip -->
|
|
139
|
-
<div class="input-wrapper col-span-6 md:col-span-4
|
|
140
|
-
<label class="label-override mb-2">
|
|
140
|
+
<div class="input-wrapper z-0 col-span-6 md:col-span-4">
|
|
141
|
+
<label class="label-override mb-2">
|
|
142
|
+
Zip
|
|
141
143
|
<KeyIcon />
|
|
142
144
|
</label>
|
|
143
145
|
<div :class="`input-default ${errors.includes('zipCode') ? 'error' : ''}`">
|
|
@@ -146,8 +148,9 @@
|
|
|
146
148
|
</div>
|
|
147
149
|
|
|
148
150
|
<!-- Address -->
|
|
149
|
-
<div class="input-wrapper col-span-6 md:col-span-4
|
|
150
|
-
<label class="label-override mb-2">
|
|
151
|
+
<div class="input-wrapper z-0 col-span-6 md:col-span-4">
|
|
152
|
+
<label class="label-override mb-2">
|
|
153
|
+
Address
|
|
151
154
|
<HandIcon />
|
|
152
155
|
</label>
|
|
153
156
|
<div :class="`input-default ${errors.includes('address') ? 'error' : ''}`">
|
|
@@ -156,15 +159,15 @@
|
|
|
156
159
|
</div>
|
|
157
160
|
|
|
158
161
|
<!-- Generate -->
|
|
159
|
-
<div class="input-wrapper col-span-6 md:col-span-4
|
|
160
|
-
<label class="label-override mb-2">
|
|
162
|
+
<div class="input-wrapper z-0 col-span-6 md:col-span-4">
|
|
163
|
+
<label class="label-override mb-2">
|
|
164
|
+
Fake ID
|
|
161
165
|
<WildcardIcon />
|
|
162
166
|
</label>
|
|
163
|
-
<div class="input-default mt-2
|
|
167
|
+
<div class="input-default mt-2 flex h-10 w-full items-center">
|
|
164
168
|
<button
|
|
165
169
|
@click="generate"
|
|
166
|
-
class="
|
|
167
|
-
>
|
|
170
|
+
class="flex w-full items-center justify-center gap-2 text-xs text-white">
|
|
168
171
|
<svg
|
|
169
172
|
xmlns="http://www.w3.org/2000/svg"
|
|
170
173
|
width="14"
|
|
@@ -174,8 +177,7 @@
|
|
|
174
177
|
stroke="currentColor"
|
|
175
178
|
stroke-width="2"
|
|
176
179
|
stroke-linecap="round"
|
|
177
|
-
stroke-linejoin="round"
|
|
178
|
-
>
|
|
180
|
+
stroke-linejoin="round">
|
|
179
181
|
<rect x="3" y="4" width="18" height="16" rx="2" />
|
|
180
182
|
<line x1="7" y1="2" x2="7" y2="6" />
|
|
181
183
|
<line x1="17" y1="2" x2="17" y2="6" />
|
|
@@ -188,10 +190,10 @@
|
|
|
188
190
|
</div>
|
|
189
191
|
|
|
190
192
|
<button
|
|
191
|
-
class="button-default
|
|
192
|
-
@click="done()"
|
|
193
|
-
|
|
194
|
-
|
|
193
|
+
class="button-default ml-auto mt-4 flex w-48 items-center justify-center gap-x-2 bg-dark-400 text-xs hover:opacity-70 active:opacity-50"
|
|
194
|
+
@click="done()">
|
|
195
|
+
Save
|
|
196
|
+
<EditIcon />
|
|
195
197
|
</button>
|
|
196
198
|
</Modal>
|
|
197
199
|
</template>
|
|
@@ -218,7 +220,19 @@
|
|
|
218
220
|
</style>
|
|
219
221
|
<script setup>
|
|
220
222
|
import Modal from "@/components/ui/Modal.vue";
|
|
221
|
-
import {
|
|
223
|
+
import {
|
|
224
|
+
MailIcon,
|
|
225
|
+
CartIcon,
|
|
226
|
+
ShieldIcon,
|
|
227
|
+
StadiumIcon,
|
|
228
|
+
KeyIcon,
|
|
229
|
+
HandIcon,
|
|
230
|
+
ProfileIcon,
|
|
231
|
+
SandclockIcon,
|
|
232
|
+
TimerIcon,
|
|
233
|
+
TagIcon,
|
|
234
|
+
WildcardIcon
|
|
235
|
+
} from "@/components/icons";
|
|
222
236
|
import { EditIcon } from "@/components/icons";
|
|
223
237
|
import ProfileCountryChooser from "@/components/Editors/Profile/ProfileCountryChooser.vue";
|
|
224
238
|
import { useUIStore } from "@/stores/ui";
|
|
@@ -288,7 +302,7 @@ const profile = ref({
|
|
|
288
302
|
cvv: "",
|
|
289
303
|
cardNumber: "",
|
|
290
304
|
city: "",
|
|
291
|
-
tag: ui.profile.
|
|
305
|
+
tag: ui.profile.tags[0],
|
|
292
306
|
state: "",
|
|
293
307
|
country: "US",
|
|
294
308
|
zipCode: ""
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<Modal class="overflow-y-scroll
|
|
2
|
+
<Modal class="max-w-screen overflow-y-scroll">
|
|
3
3
|
<template #header>
|
|
4
4
|
Create Task
|
|
5
5
|
<img src="@/assets/img/pencil.svg" class="ml-4" />
|
|
6
6
|
</template>
|
|
7
7
|
|
|
8
8
|
<!-- Task Form -->
|
|
9
|
-
<div class="form-grid
|
|
9
|
+
<div class="form-grid mb-4 mt-4">
|
|
10
10
|
<!-- Event ID -->
|
|
11
11
|
<div class="input-wrapper">
|
|
12
|
-
<label class="label-override mb-2"
|
|
13
|
-
|
|
12
|
+
<label class="label-override mb-2">
|
|
13
|
+
Event ID
|
|
14
14
|
<StadiumIcon />
|
|
15
15
|
</label>
|
|
16
16
|
<div class="input-default required">
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
</div>
|
|
20
20
|
<!-- Email -->
|
|
21
21
|
<div class="input-wrapper">
|
|
22
|
-
<label class="label-override mb-2"
|
|
23
|
-
|
|
22
|
+
<label class="label-override mb-2">
|
|
23
|
+
Email
|
|
24
24
|
<MailIcon />
|
|
25
25
|
</label>
|
|
26
26
|
<div class="input-default">
|
|
@@ -29,14 +29,13 @@
|
|
|
29
29
|
v-model="task.email"
|
|
30
30
|
autocomplete="off"
|
|
31
31
|
data-form-type="other"
|
|
32
|
-
name="axs_email_not_for_auth"
|
|
33
|
-
/>
|
|
32
|
+
name="axs_email_not_for_auth" />
|
|
34
33
|
</div>
|
|
35
34
|
</div>
|
|
36
35
|
<!-- Proxy -->
|
|
37
36
|
<div class="input-wrapper">
|
|
38
|
-
<label class="label-override mb-2"
|
|
39
|
-
|
|
37
|
+
<label class="label-override mb-2">
|
|
38
|
+
Proxy
|
|
40
39
|
<CameraIcon />
|
|
41
40
|
</label>
|
|
42
41
|
<div class="input-default">
|
|
@@ -45,8 +44,8 @@
|
|
|
45
44
|
</div>
|
|
46
45
|
<!-- Presale Code -->
|
|
47
46
|
<div class="input-wrapper">
|
|
48
|
-
<label class="label-override mb-2"
|
|
49
|
-
|
|
47
|
+
<label class="label-override mb-2">
|
|
48
|
+
Presale Code
|
|
50
49
|
<AwardIcon />
|
|
51
50
|
</label>
|
|
52
51
|
<div class="input-default">
|
|
@@ -55,8 +54,8 @@
|
|
|
55
54
|
</div>
|
|
56
55
|
<!-- Ticket Quantity -->
|
|
57
56
|
<div class="input-wrapper">
|
|
58
|
-
<label class="label-override mb-2"
|
|
59
|
-
|
|
57
|
+
<label class="label-override mb-2">
|
|
58
|
+
Ticket Quantity
|
|
60
59
|
<BagIcon />
|
|
61
60
|
</label>
|
|
62
61
|
<div class="input-default">
|
|
@@ -73,7 +72,10 @@
|
|
|
73
72
|
</div>
|
|
74
73
|
<!-- Ticket Quantity -->
|
|
75
74
|
<div class="input-wrapper">
|
|
76
|
-
<label class="label-override mb-2">
|
|
75
|
+
<label class="label-override mb-2">
|
|
76
|
+
Amount
|
|
77
|
+
<span class="ml-2 h-[18px]">#</span>
|
|
78
|
+
</label>
|
|
77
79
|
<div class="input-default">
|
|
78
80
|
<input placeholder="20" min="1" type="number" pattern="\d*" v-model="task.taskQuantity" />
|
|
79
81
|
<div class="input-incrementer">
|
|
@@ -88,27 +90,26 @@
|
|
|
88
90
|
</div>
|
|
89
91
|
|
|
90
92
|
<!-- Profile Tag(s) -->
|
|
91
|
-
|
|
92
|
-
<label class="label-override mb-2"
|
|
93
|
-
|
|
93
|
+
<div class="input-wrapper relative-positioned z-tooltip">
|
|
94
|
+
<label class="label-override mb-2">
|
|
95
|
+
Profile Tag(s)
|
|
94
96
|
<TagIcon />
|
|
95
97
|
</label>
|
|
96
98
|
<MultiDropdown
|
|
97
|
-
class="w-full will-change-auto
|
|
99
|
+
class="input-default w-full will-change-auto"
|
|
98
100
|
:onSelect="(v) => (task.profileTags = v)"
|
|
99
101
|
default="Any"
|
|
100
102
|
:options="
|
|
101
103
|
profileTagsOptions.map((opt) => {
|
|
102
104
|
return { label: opt, value: opt };
|
|
103
105
|
})
|
|
104
|
-
"
|
|
105
|
-
/>
|
|
106
|
+
" />
|
|
106
107
|
</div>
|
|
107
108
|
|
|
108
109
|
<!-- Account Tag -->
|
|
109
|
-
|
|
110
|
-
<label class="label-override mb-2"
|
|
111
|
-
|
|
110
|
+
<div class="input-wrapper relative-positioned z-dropdown">
|
|
111
|
+
<label class="label-override mb-2">
|
|
112
|
+
Account Tag
|
|
112
113
|
<ScannerIcon />
|
|
113
114
|
</label>
|
|
114
115
|
|
|
@@ -119,20 +120,22 @@
|
|
|
119
120
|
:options="accountTagOptions"
|
|
120
121
|
:allowDefault="false"
|
|
121
122
|
:capitalize="true"
|
|
122
|
-
class="input-default dropdown p-4
|
|
123
|
-
/>
|
|
123
|
+
class="input-default dropdown w-full p-4" />
|
|
124
124
|
</div>
|
|
125
125
|
|
|
126
126
|
<div class="input-wrapper">
|
|
127
|
-
<label class="label-override mb-2">
|
|
127
|
+
<label class="label-override mb-2">
|
|
128
|
+
Start Offset (Minutes)
|
|
129
|
+
<ShieldIcon />
|
|
130
|
+
</label>
|
|
128
131
|
<div class="input-default">
|
|
129
132
|
<input placeholder="120" type="number" pattern="\d*" v-model="task.startOffset" />
|
|
130
133
|
</div>
|
|
131
134
|
</div>
|
|
132
135
|
|
|
133
136
|
<div class="input-wrapper">
|
|
134
|
-
<label class="label-override mb-2"
|
|
135
|
-
|
|
137
|
+
<label class="label-override mb-2">
|
|
138
|
+
Promo ID
|
|
136
139
|
<AwardIcon />
|
|
137
140
|
</label>
|
|
138
141
|
<div class="input-default">
|
|
@@ -140,9 +143,9 @@
|
|
|
140
143
|
</div>
|
|
141
144
|
</div>
|
|
142
145
|
</div>
|
|
143
|
-
<div class="border border-dark-650
|
|
146
|
+
<div class="mb-3 border border-dark-650" />
|
|
144
147
|
<!-- Task Switches -->
|
|
145
|
-
<div class="grid grid-cols-4 gap-y-4
|
|
148
|
+
<div class="task-switches mb-4 grid grid-cols-4 justify-between gap-y-4">
|
|
146
149
|
<div class="switch-wrapper flex flex-col">
|
|
147
150
|
<h4>
|
|
148
151
|
<span class="hidden xs:block">Do Not Pay</span>
|
|
@@ -162,7 +165,8 @@
|
|
|
162
165
|
<div class="switch-wrapper flex flex-col">
|
|
163
166
|
<h4>
|
|
164
167
|
<span class="hidden xs:block">Quick Queue</span>
|
|
165
|
-
<span class="block xs:hidden">Quick Q.</span>
|
|
168
|
+
<span class="block xs:hidden">Quick Q.</span>
|
|
169
|
+
<SkiIcon class="scale-90" />
|
|
166
170
|
</h4>
|
|
167
171
|
<Switch class="mx-auto" v-model="task.quickQueue" />
|
|
168
172
|
</div>
|
|
@@ -176,7 +180,7 @@
|
|
|
176
180
|
</div>
|
|
177
181
|
|
|
178
182
|
<!-- Task prefab -->
|
|
179
|
-
<div class="border border-dark-650
|
|
183
|
+
<div class="my-3 border border-dark-650" />
|
|
180
184
|
<button class="btn-action mx-auto" @click="createTask">
|
|
181
185
|
Create
|
|
182
186
|
<EditIcon />
|
|
@@ -186,6 +190,7 @@
|
|
|
186
190
|
|
|
187
191
|
<script setup>
|
|
188
192
|
import { ref, watch } from "vue";
|
|
193
|
+
import { countries } from "@/stores/countries";
|
|
189
194
|
import Modal from "@/components/ui/Modal.vue";
|
|
190
195
|
import Switch from "@/components/ui/controls/atomic/Switch.vue";
|
|
191
196
|
import {
|
|
@@ -211,11 +216,11 @@ import {
|
|
|
211
216
|
import { useUIStore } from "@/stores/ui";
|
|
212
217
|
import Dropdown from "@/components/ui/controls/atomic/Dropdown.vue";
|
|
213
218
|
import MultiDropdown from "@/components/ui/controls/atomic/MultiDropdown.vue";
|
|
214
|
-
import {
|
|
219
|
+
import { parseAxsEventUrl, removeDuplicates } from "@/stores/utils";
|
|
215
220
|
|
|
216
221
|
const ui = useUIStore();
|
|
217
222
|
|
|
218
|
-
const accountTagOptions = ref(ui.profile.
|
|
223
|
+
const accountTagOptions = ref(ui.profile.tags);
|
|
219
224
|
const defaultTags = ["Amex", "Visa", "Master"];
|
|
220
225
|
|
|
221
226
|
const profileTagsOptions = ref(removeDuplicates(["Any", ...defaultTags, ...ui.profile.profileTags]));
|
|
@@ -268,12 +273,28 @@ watch(
|
|
|
268
273
|
}
|
|
269
274
|
);
|
|
270
275
|
|
|
271
|
-
watch(
|
|
276
|
+
watch(
|
|
277
|
+
() => task.value,
|
|
278
|
+
() => (ui.modalData[`task_${ui.currentCountry.siteId}`] = task.value),
|
|
279
|
+
{ deep: true }
|
|
280
|
+
);
|
|
272
281
|
|
|
273
282
|
watch(
|
|
274
283
|
() => task.value.eventId,
|
|
275
284
|
(url) => {
|
|
276
285
|
ui.logger.Info("URL changed", url);
|
|
286
|
+
if (!url.includes("https://")) return;
|
|
287
|
+
try {
|
|
288
|
+
const parsed = parseAxsEventUrl(url);
|
|
289
|
+
const country = countries.AXS.find((c) => c.siteId === parsed.siteId);
|
|
290
|
+
if (country) ui.setCurrentCountry(country, false, ui.currentModule);
|
|
291
|
+
|
|
292
|
+
task.value.eventId = parsed.eventId;
|
|
293
|
+
debugger;
|
|
294
|
+
if (parsed.promoId) task.value.promoId = parsed.promoId;
|
|
295
|
+
} catch (ex) {
|
|
296
|
+
ui.logger.Error("Could not parse url (2)", ex);
|
|
297
|
+
}
|
|
277
298
|
}
|
|
278
299
|
);
|
|
279
300
|
|
|
@@ -293,7 +314,7 @@ watch(
|
|
|
293
314
|
.task-switches {
|
|
294
315
|
h4 {
|
|
295
316
|
color: #e1e1e4;
|
|
296
|
-
@apply
|
|
317
|
+
@apply mx-auto flex items-center gap-x-2 text-center text-xs;
|
|
297
318
|
}
|
|
298
319
|
|
|
299
320
|
.switch-wrapper {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<Modal class="overflow-y-scroll
|
|
2
|
+
<Modal class="max-w-screen overflow-y-scroll">
|
|
3
3
|
<template #header>
|
|
4
4
|
<div class="flex-center gap-2">
|
|
5
5
|
Create Task
|
|
@@ -8,25 +8,24 @@
|
|
|
8
8
|
</template>
|
|
9
9
|
|
|
10
10
|
<!-- Task Form -->
|
|
11
|
-
<div class="grid-responsive-1-2 gap-responsive
|
|
11
|
+
<div class="grid-responsive-1-2 gap-responsive mb-4 mt-4">
|
|
12
12
|
<!-- Event ID -->
|
|
13
13
|
<div class="input-wrapper">
|
|
14
|
-
<label class="label-override mb-2"
|
|
15
|
-
|
|
14
|
+
<label class="label-override mb-2">
|
|
15
|
+
Event ID
|
|
16
16
|
<StadiumIcon />
|
|
17
17
|
</label>
|
|
18
18
|
<div class="input-default required">
|
|
19
19
|
<input
|
|
20
20
|
:placeholder="!isEU(ui.currentCountry.siteId) ? '102PDA9125510GYU' : '529171'"
|
|
21
21
|
v-model="task.eventId"
|
|
22
|
-
required
|
|
23
|
-
/>
|
|
22
|
+
required />
|
|
24
23
|
</div>
|
|
25
24
|
</div>
|
|
26
25
|
<!-- Email -->
|
|
27
26
|
<div class="input-wrapper">
|
|
28
|
-
<label class="label-override mb-2"
|
|
29
|
-
|
|
27
|
+
<label class="label-override mb-2">
|
|
28
|
+
Email
|
|
30
29
|
<MailIcon />
|
|
31
30
|
</label>
|
|
32
31
|
<div class="input-default">
|
|
@@ -35,14 +34,13 @@
|
|
|
35
34
|
v-model="task.email"
|
|
36
35
|
autocomplete="off"
|
|
37
36
|
data-form-type="other"
|
|
38
|
-
name="tm_email_disableautocomplete"
|
|
39
|
-
/>
|
|
37
|
+
name="tm_email_disableautocomplete" />
|
|
40
38
|
</div>
|
|
41
39
|
</div>
|
|
42
40
|
<!-- Proxy -->
|
|
43
41
|
<div class="input-wrapper">
|
|
44
|
-
<label class="label-override mb-2"
|
|
45
|
-
|
|
42
|
+
<label class="label-override mb-2">
|
|
43
|
+
Proxy
|
|
46
44
|
<CameraIcon />
|
|
47
45
|
</label>
|
|
48
46
|
<div class="input-default">
|
|
@@ -51,8 +49,8 @@
|
|
|
51
49
|
</div>
|
|
52
50
|
<!-- Presale Code -->
|
|
53
51
|
<div class="input-wrapper">
|
|
54
|
-
<label class="label-override mb-2"
|
|
55
|
-
|
|
52
|
+
<label class="label-override mb-2">
|
|
53
|
+
Presale Code
|
|
56
54
|
<AwardIcon />
|
|
57
55
|
</label>
|
|
58
56
|
<div class="input-default">
|
|
@@ -61,8 +59,8 @@
|
|
|
61
59
|
</div>
|
|
62
60
|
<!-- Ticket Quantity -->
|
|
63
61
|
<div class="input-wrapper">
|
|
64
|
-
<label class="label-override mb-2"
|
|
65
|
-
|
|
62
|
+
<label class="label-override mb-2">
|
|
63
|
+
Ticket Quantity
|
|
66
64
|
<BagIcon />
|
|
67
65
|
</label>
|
|
68
66
|
<div class="input-default">
|
|
@@ -79,7 +77,10 @@
|
|
|
79
77
|
</div>
|
|
80
78
|
<!-- Ticket Quantity -->
|
|
81
79
|
<div class="input-wrapper">
|
|
82
|
-
<label class="label-override mb-2">
|
|
80
|
+
<label class="label-override mb-2">
|
|
81
|
+
Amount
|
|
82
|
+
<span class="ml-2 h-[18px]">#</span>
|
|
83
|
+
</label>
|
|
83
84
|
<div class="input-default">
|
|
84
85
|
<input placeholder="20" min="1" type="number" pattern="\d*" v-model="task.taskQuantity" />
|
|
85
86
|
<div class="input-incrementer">
|
|
@@ -94,35 +95,37 @@
|
|
|
94
95
|
</div>
|
|
95
96
|
|
|
96
97
|
<!-- Profile Tag(s) -->
|
|
97
|
-
|
|
98
|
-
<label class="label-override mb-2"
|
|
99
|
-
|
|
98
|
+
<div class="input-wrapper relative-positioned z-tooltip">
|
|
99
|
+
<label class="label-override mb-2">
|
|
100
|
+
Profile Tag(s)
|
|
100
101
|
<TagIcon />
|
|
101
102
|
</label>
|
|
102
103
|
<MultiDropdown
|
|
103
|
-
class="w-full will-change-auto
|
|
104
|
+
class="input-default w-full will-change-auto"
|
|
104
105
|
:onSelect="(v) => (task.profileTags = v)"
|
|
105
106
|
default="Any"
|
|
106
107
|
:options="
|
|
107
108
|
profileTagsOptions.map((opt) => {
|
|
108
109
|
return { label: opt, value: opt };
|
|
109
110
|
})
|
|
110
|
-
"
|
|
111
|
-
/>
|
|
111
|
+
" />
|
|
112
112
|
</div>
|
|
113
113
|
|
|
114
114
|
<!-- CL Origin -->
|
|
115
115
|
<div v-if="isEU(ui.currentCountry.siteId)" class="input-wrapper">
|
|
116
|
-
<label class="label-override mb-2">
|
|
116
|
+
<label class="label-override mb-2">
|
|
117
|
+
CL Origin
|
|
118
|
+
<AwardIcon />
|
|
119
|
+
</label>
|
|
117
120
|
<div class="input-default">
|
|
118
121
|
<input placeholder="ORIGIN2" type="text" v-model="task.clOrigin" maxlength="15" />
|
|
119
122
|
</div>
|
|
120
123
|
</div>
|
|
121
124
|
|
|
122
125
|
<!-- Account Tag -->
|
|
123
|
-
|
|
124
|
-
<label class="label-override mb-2"
|
|
125
|
-
|
|
126
|
+
<div class="input-wrapper relative-positioned z-dropdown">
|
|
127
|
+
<label class="label-override mb-2">
|
|
128
|
+
Account Tag
|
|
126
129
|
<ScannerIcon />
|
|
127
130
|
</label>
|
|
128
131
|
|
|
@@ -133,12 +136,14 @@
|
|
|
133
136
|
:options="accountTagOptions"
|
|
134
137
|
:allowDefault="false"
|
|
135
138
|
:capitalize="true"
|
|
136
|
-
class="input-default dropdown p-4
|
|
137
|
-
/>
|
|
139
|
+
class="input-default dropdown w-full p-4" />
|
|
138
140
|
</div>
|
|
139
141
|
|
|
140
142
|
<div class="input-wrapper">
|
|
141
|
-
<label class="label-override mb-2">
|
|
143
|
+
<label class="label-override mb-2">
|
|
144
|
+
Start Offset (Minutes)
|
|
145
|
+
<ShieldIcon />
|
|
146
|
+
</label>
|
|
142
147
|
<div class="input-default">
|
|
143
148
|
<input placeholder="120" type="number" pattern="\d*" v-model="task.startOffset" />
|
|
144
149
|
</div>
|
|
@@ -146,8 +151,8 @@
|
|
|
146
151
|
|
|
147
152
|
<div v-if="!isEU(ui.currentCountry.siteId)">
|
|
148
153
|
<div class="input-wrapper">
|
|
149
|
-
<label class="label-override mb-2"
|
|
150
|
-
|
|
154
|
+
<label class="label-override mb-2">
|
|
155
|
+
Presale DID
|
|
151
156
|
<AwardIcon />
|
|
152
157
|
</label>
|
|
153
158
|
<div class="input-default">
|
|
@@ -156,12 +161,13 @@
|
|
|
156
161
|
</div>
|
|
157
162
|
</div>
|
|
158
163
|
</div>
|
|
159
|
-
<div class="border border-dark-650
|
|
164
|
+
<div class="mb-3 border border-dark-650" />
|
|
160
165
|
<!-- Task Switches -->
|
|
161
|
-
<div v-if="!isEU(ui.currentCountry.siteId)" class="grid grid-cols-3
|
|
162
|
-
<div class="switch-wrapper flex flex-col
|
|
166
|
+
<div v-if="!isEU(ui.currentCountry.siteId)" class="task-switches grid grid-cols-3 justify-between gap-y-1">
|
|
167
|
+
<div class="switch-wrapper mb-2 flex flex-col">
|
|
163
168
|
<h4 class="text-responsive-sm">
|
|
164
|
-
Aged
|
|
169
|
+
Aged
|
|
170
|
+
<span class="hidden xs:block">Account</span>
|
|
165
171
|
<SandclockIcon />
|
|
166
172
|
</h4>
|
|
167
173
|
<Switch class="mx-auto" v-model="task.agedAccount" />
|
|
@@ -181,7 +187,7 @@
|
|
|
181
187
|
</h4>
|
|
182
188
|
<Switch class="mx-auto" v-model="task.doNotPay" />
|
|
183
189
|
</div>
|
|
184
|
-
<div class="flex flex-col
|
|
190
|
+
<div class="switch-wrapper flex flex-col">
|
|
185
191
|
<h4>
|
|
186
192
|
<span class="hidden xs:block">Quick Queue</span>
|
|
187
193
|
<span class="block xs:hidden">Quick Q.</span>
|
|
@@ -189,7 +195,7 @@
|
|
|
189
195
|
</h4>
|
|
190
196
|
<Switch class="mx-auto" v-model="task.quickQueue" />
|
|
191
197
|
</div>
|
|
192
|
-
<div class="flex flex-col
|
|
198
|
+
<div class="switch-wrapper flex flex-col">
|
|
193
199
|
<h4>
|
|
194
200
|
<span class="hidden xs:block">Login Later</span>
|
|
195
201
|
<span class="block xs:hidden">Login Lat.</span>
|
|
@@ -198,7 +204,7 @@
|
|
|
198
204
|
</h4>
|
|
199
205
|
<Switch class="mx-auto" v-model="task.loginAfterCart" />
|
|
200
206
|
</div>
|
|
201
|
-
<div class="flex flex-col
|
|
207
|
+
<div class="switch-wrapper flex flex-col">
|
|
202
208
|
<h4>
|
|
203
209
|
<span class="hidden xs:block">Smart Timer</span>
|
|
204
210
|
<span class="block xs:hidden">Timer</span>
|
|
@@ -208,28 +214,31 @@
|
|
|
208
214
|
</div>
|
|
209
215
|
<div class="switch-wrapper flex flex-col">
|
|
210
216
|
<h4>
|
|
211
|
-
<span class="hidden xs:block">Supports
|
|
212
|
-
|
|
217
|
+
<span class="hidden xs:block">Supports</span>
|
|
218
|
+
OTP
|
|
219
|
+
<MailIcon class="h-[17px] scale-90" />
|
|
213
220
|
</h4>
|
|
214
221
|
<Switch class="mx-auto" v-model="task.otpAccount" />
|
|
215
222
|
</div>
|
|
216
223
|
<div class="switch-wrapper flex flex-col">
|
|
217
224
|
<h4>
|
|
218
|
-
Presale
|
|
225
|
+
Presale
|
|
226
|
+
<span class="hidden xs:block">Queue</span>
|
|
219
227
|
<AwardIcon class="scale-90" />
|
|
220
228
|
</h4>
|
|
221
229
|
<Switch class="mx-auto" v-model="task.presaleMode" />
|
|
222
230
|
</div>
|
|
223
231
|
<div class="switch-wrapper flex flex-col">
|
|
224
232
|
<h4>
|
|
225
|
-
Strict
|
|
233
|
+
Strict
|
|
234
|
+
<span class="hidden xs:block">Presale</span>
|
|
226
235
|
<AwardIcon class="scale-90" />
|
|
227
236
|
</h4>
|
|
228
237
|
<Switch class="mx-auto" v-model="task.presaleStrict" />
|
|
229
238
|
</div>
|
|
230
239
|
</div>
|
|
231
240
|
<div v-if="isEU(ui.currentCountry.siteId)">
|
|
232
|
-
<div class="grid grid-cols-4 gap-y-4
|
|
241
|
+
<div class="task-switches mb-4 grid grid-cols-4 justify-between gap-y-4">
|
|
233
242
|
<div class="switch-wrapper flex flex-col">
|
|
234
243
|
<h4 class="text-xs">
|
|
235
244
|
Manual
|
|
@@ -263,11 +272,12 @@
|
|
|
263
272
|
</div>
|
|
264
273
|
</div>
|
|
265
274
|
|
|
266
|
-
<div class="grid grid-cols-4 gap-y-4
|
|
275
|
+
<div class="task-switches grid grid-cols-4 justify-between gap-y-4">
|
|
267
276
|
<div class="switch-wrapper flex flex-col">
|
|
268
277
|
<h4>
|
|
269
278
|
<span class="hidden xs:block">Quick Queue</span>
|
|
270
|
-
<span class="block xs:hidden">Quick Q.</span>
|
|
279
|
+
<span class="block xs:hidden">Quick Q.</span>
|
|
280
|
+
<SkiIcon class="scale-90" />
|
|
271
281
|
</h4>
|
|
272
282
|
<Switch class="mx-auto" v-model="task.quickQueue" />
|
|
273
283
|
</div>
|
|
@@ -275,13 +285,14 @@
|
|
|
275
285
|
<div class="switch-wrapper flex flex-col">
|
|
276
286
|
<h4>
|
|
277
287
|
Supports OTP
|
|
278
|
-
<MailIcon class="
|
|
288
|
+
<MailIcon class="h-[17px] scale-90" />
|
|
279
289
|
</h4>
|
|
280
290
|
<Switch class="mx-auto" v-model="task.otpAccount" />
|
|
281
291
|
</div>
|
|
282
292
|
<div class="switch-wrapper flex flex-col">
|
|
283
293
|
<h4>
|
|
284
|
-
Aged
|
|
294
|
+
Aged
|
|
295
|
+
<span class="hidden xs:block">Account</span>
|
|
285
296
|
<SandclockIcon />
|
|
286
297
|
</h4>
|
|
287
298
|
<Switch class="mx-auto" v-model="task.agedAccount" />
|
|
@@ -290,7 +301,7 @@
|
|
|
290
301
|
</div>
|
|
291
302
|
|
|
292
303
|
<!-- Task prefab -->
|
|
293
|
-
<div class="border border-dark-650
|
|
304
|
+
<div class="my-3 border border-dark-650" />
|
|
294
305
|
<button class="btn-action mx-auto" @click="createTask">
|
|
295
306
|
Create
|
|
296
307
|
<EditIcon />
|
|
@@ -327,11 +338,11 @@ import { useUIStore } from "@/stores/ui";
|
|
|
327
338
|
import { countries } from "@/stores/countries";
|
|
328
339
|
import Dropdown from "@/components/ui/controls/atomic/Dropdown.vue";
|
|
329
340
|
import MultiDropdown from "@/components/ui/controls/atomic/MultiDropdown.vue";
|
|
330
|
-
import { isEU,
|
|
341
|
+
import { isEU, parseTmEventUrl, removeDuplicates } from "@/stores/utils";
|
|
331
342
|
|
|
332
343
|
const ui = useUIStore();
|
|
333
344
|
|
|
334
|
-
const accountTagOptions = ref(ui.profile.
|
|
345
|
+
const accountTagOptions = ref(ui.profile.tags);
|
|
335
346
|
const defaultTags = ["Amex", "Visa", "Master"];
|
|
336
347
|
|
|
337
348
|
const profileTagsOptions = ref(removeDuplicates(["Any", ...defaultTags, ...ui.profile.profileTags]));
|
|
@@ -350,7 +361,6 @@ const baseTask = ref({
|
|
|
350
361
|
proxy: "",
|
|
351
362
|
manual: true,
|
|
352
363
|
doNotPay: false,
|
|
353
|
-
incapsulaBypass: false,
|
|
354
364
|
quickQueue: false,
|
|
355
365
|
loginAfterCart: false,
|
|
356
366
|
smartTimer: false,
|
|
@@ -391,7 +401,11 @@ watch(
|
|
|
391
401
|
}
|
|
392
402
|
);
|
|
393
403
|
|
|
394
|
-
watch(
|
|
404
|
+
watch(
|
|
405
|
+
() => task.value,
|
|
406
|
+
() => (ui.modalData[`task_${ui.currentCountry.siteId}`] = task.value),
|
|
407
|
+
{ deep: true }
|
|
408
|
+
);
|
|
395
409
|
|
|
396
410
|
watch(
|
|
397
411
|
() => task.value.eventId,
|
|
@@ -410,10 +424,10 @@ watch(
|
|
|
410
424
|
const country = countries.TM.find((c) => c.siteId === tmid);
|
|
411
425
|
if (country) ui.setCurrentCountry(country, false, ui.currentModule);
|
|
412
426
|
|
|
413
|
-
const { eventId, eventDid, clOrigin } =
|
|
414
|
-
task.value.clOrigin = clOrigin;
|
|
415
|
-
task.value.eventDid = eventDid;
|
|
427
|
+
const { eventId, eventDid, clOrigin } = parseTmEventUrl(url);
|
|
416
428
|
task.value.eventId = eventId;
|
|
429
|
+
task.value.eventDid = eventDid;
|
|
430
|
+
task.value.clOrigin = clOrigin;
|
|
417
431
|
} catch (ex) {
|
|
418
432
|
ui.logger.Error("Could not parse url (2)", ex);
|
|
419
433
|
}
|
package/src/stores/sampleData.js
CHANGED
|
@@ -3,8 +3,8 @@ const queueStats = false;
|
|
|
3
3
|
export default {
|
|
4
4
|
Profile: {
|
|
5
5
|
name: "Admin",
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
tags: ["Set1", "Set2"],
|
|
7
|
+
profileTags: ["Revolut"],
|
|
8
8
|
admin: true,
|
|
9
9
|
proxyList: { checkout: "admin-proxies", queue: "admin-recaptcha" },
|
|
10
10
|
profilePicture: "https://cdn.discordapp.com/avatars/435549216304267264/6cfd74ad7c5939a0bcbf218aa08be8cb.png"
|
|
@@ -22,7 +22,6 @@ export default {
|
|
|
22
22
|
inQueue: queueStats,
|
|
23
23
|
statusColor: "red",
|
|
24
24
|
manual: false,
|
|
25
|
-
incapsulaBypass: false,
|
|
26
25
|
quickQueue: false,
|
|
27
26
|
loginAfterCart: false,
|
|
28
27
|
quantity: 8,
|
|
@@ -57,7 +56,6 @@ export default {
|
|
|
57
56
|
status: "Waiting",
|
|
58
57
|
statusColor: "white",
|
|
59
58
|
manual: true,
|
|
60
|
-
incapsulaBypass: false,
|
|
61
59
|
quickQueue: false,
|
|
62
60
|
loginAfterCart: true,
|
|
63
61
|
quantity: 8,
|
|
@@ -91,7 +89,6 @@ export default {
|
|
|
91
89
|
status: "Waiting for Stock",
|
|
92
90
|
statusColor: "white",
|
|
93
91
|
manual: false,
|
|
94
|
-
incapsulaBypass: false,
|
|
95
92
|
quickQueue: false,
|
|
96
93
|
loginAfterCart: false,
|
|
97
94
|
quantity: 8,
|
|
@@ -125,7 +122,6 @@ export default {
|
|
|
125
122
|
status: "Waiting for Stock",
|
|
126
123
|
statusColor: "white",
|
|
127
124
|
manual: false,
|
|
128
|
-
incapsulaBypass: false,
|
|
129
125
|
quickQueue: false,
|
|
130
126
|
loginAfterCart: false,
|
|
131
127
|
quantity: 8,
|
|
@@ -159,7 +155,6 @@ export default {
|
|
|
159
155
|
status: "Waiting for Stock",
|
|
160
156
|
statusColor: "white",
|
|
161
157
|
manual: false,
|
|
162
|
-
incapsulaBypass: false,
|
|
163
158
|
quickQueue: false,
|
|
164
159
|
loginAfterCart: false,
|
|
165
160
|
quantity: 8,
|
|
@@ -193,7 +188,6 @@ export default {
|
|
|
193
188
|
status: "Waiting for Stock",
|
|
194
189
|
statusColor: "white",
|
|
195
190
|
manual: true,
|
|
196
|
-
incapsulaBypass: false,
|
|
197
191
|
quickQueue: false,
|
|
198
192
|
loginAfterCart: true,
|
|
199
193
|
quantity: 8,
|
|
@@ -227,7 +221,6 @@ export default {
|
|
|
227
221
|
status: "Waiting for Stock",
|
|
228
222
|
statusColor: "white",
|
|
229
223
|
manual: false,
|
|
230
|
-
incapsulaBypass: false,
|
|
231
224
|
quickQueue: false,
|
|
232
225
|
loginAfterCart: false,
|
|
233
226
|
quantity: 8,
|
|
@@ -261,7 +254,6 @@ export default {
|
|
|
261
254
|
status: "Waiting for Stock",
|
|
262
255
|
statusColor: "white",
|
|
263
256
|
manual: true,
|
|
264
|
-
incapsulaBypass: false,
|
|
265
257
|
quickQueue: false,
|
|
266
258
|
loginAfterCart: true,
|
|
267
259
|
quantity: 8,
|
|
@@ -295,7 +287,6 @@ export default {
|
|
|
295
287
|
status: "Waiting for Stock",
|
|
296
288
|
statusColor: "white",
|
|
297
289
|
manual: false,
|
|
298
|
-
incapsulaBypass: false,
|
|
299
290
|
quickQueue: false,
|
|
300
291
|
loginAfterCart: false,
|
|
301
292
|
quantity: 8,
|
|
@@ -329,7 +320,6 @@ export default {
|
|
|
329
320
|
status: queueStats ? "Waiting for Queue" : "Waiting for Stock",
|
|
330
321
|
statusColor: "white",
|
|
331
322
|
manual: false,
|
|
332
|
-
incapsulaBypass: false,
|
|
333
323
|
quickQueue: false,
|
|
334
324
|
loginAfterCart: false,
|
|
335
325
|
quantity: 8,
|
|
@@ -363,7 +353,6 @@ export default {
|
|
|
363
353
|
status: "Error in Enqueue",
|
|
364
354
|
statusColor: "red",
|
|
365
355
|
manual: false,
|
|
366
|
-
incapsulaBypass: false,
|
|
367
356
|
quickQueue: false,
|
|
368
357
|
loginAfterCart: false,
|
|
369
358
|
quantity: 8,
|
|
@@ -397,7 +386,6 @@ export default {
|
|
|
397
386
|
status: "Waiting for Stock",
|
|
398
387
|
statusColor: "white",
|
|
399
388
|
manual: false,
|
|
400
|
-
incapsulaBypass: false,
|
|
401
389
|
quickQueue: false,
|
|
402
390
|
loginAfterCart: false,
|
|
403
391
|
quantity: 8,
|
|
@@ -431,7 +419,6 @@ export default {
|
|
|
431
419
|
status: "5500 users ahead - ETA: 4min",
|
|
432
420
|
statusColor: "white",
|
|
433
421
|
manual: false,
|
|
434
|
-
incapsulaBypass: false,
|
|
435
422
|
quickQueue: false,
|
|
436
423
|
loginAfterCart: false,
|
|
437
424
|
quantity: 8,
|
|
@@ -462,7 +449,6 @@ export default {
|
|
|
462
449
|
status: "5000 users ahead - ETA: 3min",
|
|
463
450
|
statusColor: "white",
|
|
464
451
|
manual: false,
|
|
465
|
-
incapsulaBypass: false,
|
|
466
452
|
quickQueue: false,
|
|
467
453
|
loginAfterCart: false,
|
|
468
454
|
quantity: 8,
|
|
@@ -493,7 +479,6 @@ export default {
|
|
|
493
479
|
status: "400 users ahead - ETA: less than 1 minute",
|
|
494
480
|
statusColor: "white",
|
|
495
481
|
manual: false,
|
|
496
|
-
incapsulaBypass: false,
|
|
497
482
|
quickQueue: false,
|
|
498
483
|
loginAfterCart: false,
|
|
499
484
|
quantity: 8,
|
|
@@ -524,7 +509,6 @@ export default {
|
|
|
524
509
|
status: "400 users ahead - ETA: less than 1 minute",
|
|
525
510
|
statusColor: "white",
|
|
526
511
|
manual: false,
|
|
527
|
-
incapsulaBypass: false,
|
|
528
512
|
quickQueue: false,
|
|
529
513
|
loginAfterCart: false,
|
|
530
514
|
quantity: 8,
|
|
@@ -555,7 +539,6 @@ export default {
|
|
|
555
539
|
status: "400 users ahead - ETA: less than 1 minute",
|
|
556
540
|
statusColor: "white",
|
|
557
541
|
manual: false,
|
|
558
|
-
incapsulaBypass: false,
|
|
559
542
|
quickQueue: false,
|
|
560
543
|
loginAfterCart: false,
|
|
561
544
|
quantity: 8,
|
|
@@ -586,7 +569,6 @@ export default {
|
|
|
586
569
|
status: "400 users ahead - ETA: less than 1 minute",
|
|
587
570
|
statusColor: "white",
|
|
588
571
|
manual: false,
|
|
589
|
-
incapsulaBypass: false,
|
|
590
572
|
quickQueue: false,
|
|
591
573
|
loginAfterCart: false,
|
|
592
574
|
quantity: 8,
|
|
@@ -617,7 +599,6 @@ export default {
|
|
|
617
599
|
status: "400 users ahead - ETA: less than 1 minute",
|
|
618
600
|
statusColor: "white",
|
|
619
601
|
manual: false,
|
|
620
|
-
incapsulaBypass: false,
|
|
621
602
|
quickQueue: false,
|
|
622
603
|
loginAfterCart: false,
|
|
623
604
|
quantity: 8,
|
|
@@ -648,7 +629,6 @@ export default {
|
|
|
648
629
|
status: "Sleeping in queue",
|
|
649
630
|
statusColor: "white",
|
|
650
631
|
manual: false,
|
|
651
|
-
incapsulaBypass: false,
|
|
652
632
|
quickQueue: false,
|
|
653
633
|
loginAfterCart: false,
|
|
654
634
|
quantity: 8,
|
|
@@ -679,7 +659,6 @@ export default {
|
|
|
679
659
|
status: "Sleeping in queue",
|
|
680
660
|
statusColor: "white",
|
|
681
661
|
manual: false,
|
|
682
|
-
incapsulaBypass: false,
|
|
683
662
|
quickQueue: false,
|
|
684
663
|
loginAfterCart: false,
|
|
685
664
|
quantity: 8,
|
|
@@ -723,7 +702,7 @@ export default {
|
|
|
723
702
|
email: "aaa@bbb.com",
|
|
724
703
|
password: "password123",
|
|
725
704
|
enabled: true,
|
|
726
|
-
tags: ["
|
|
705
|
+
tags: ["admin"],
|
|
727
706
|
module: "TM"
|
|
728
707
|
},
|
|
729
708
|
{
|
|
@@ -731,7 +710,7 @@ export default {
|
|
|
731
710
|
email: "aabb@ccc.com",
|
|
732
711
|
password: "password123",
|
|
733
712
|
enabled: true,
|
|
734
|
-
tags: ["
|
|
713
|
+
tags: ["admin", "phone_mfa"],
|
|
735
714
|
module: "TM"
|
|
736
715
|
},
|
|
737
716
|
{
|
package/src/stores/ui.js
CHANGED
package/src/stores/utils.js
CHANGED
|
@@ -361,7 +361,29 @@ const timeDifference = (date1, date2) => {
|
|
|
361
361
|
return str;
|
|
362
362
|
};
|
|
363
363
|
|
|
364
|
-
const
|
|
364
|
+
const parseAxsEventUrl = (url) => {
|
|
365
|
+
const HOST = "www.axs.com";
|
|
366
|
+
|
|
367
|
+
if (!url.startsWith("https://")) return { eventId: url };
|
|
368
|
+
if (!url.includes(`https://${HOST}`)) return {};
|
|
369
|
+
|
|
370
|
+
const siteMatch = url.match(new RegExp(`https://${HOST}(/uk)?`));
|
|
371
|
+
const eventMatch = url.match(/\/events\/(\d+)/);
|
|
372
|
+
const promoMatch = url.match(/\/promopage\/(\d+)/);
|
|
373
|
+
|
|
374
|
+
if (!siteMatch || !eventMatch) return {};
|
|
375
|
+
|
|
376
|
+
const siteId = siteMatch[1] === "/uk" ? "AXS_UK" : "AXS_US";
|
|
377
|
+
const eventId = eventMatch[1];
|
|
378
|
+
const promoId = promoMatch?.[1];
|
|
379
|
+
|
|
380
|
+
const result = { eventId, siteId };
|
|
381
|
+
if (promoId) result.promoId = promoId;
|
|
382
|
+
|
|
383
|
+
return result;
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
const parseTmEventUrl = (url) => {
|
|
365
387
|
if (!url.includes("https://")) {
|
|
366
388
|
return { eventId: url };
|
|
367
389
|
}
|
|
@@ -542,7 +564,8 @@ export {
|
|
|
542
564
|
generateStreetAddress,
|
|
543
565
|
timeDifference,
|
|
544
566
|
sortAlphaNum,
|
|
545
|
-
|
|
567
|
+
parseAxsEventUrl,
|
|
568
|
+
parseTmEventUrl,
|
|
546
569
|
isEU,
|
|
547
570
|
removeDuplicates,
|
|
548
571
|
pickRandom,
|
package/src/types/index.js
CHANGED
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
* @property {string} eventUrl
|
|
17
17
|
* @property {string} eventVenue
|
|
18
18
|
* @property {string} expirationTime
|
|
19
|
-
* @property {boolean} incapsulaBypass
|
|
20
19
|
* @property {boolean} isExpanded
|
|
21
20
|
* @property {boolean} loginAfterCart
|
|
22
21
|
* @property {boolean} manual
|
|
@@ -39,4 +38,4 @@
|
|
|
39
38
|
* @property {string} taskId
|
|
40
39
|
* @property {string} venueName
|
|
41
40
|
* @property {string} _timeLeftString
|
|
42
|
-
*/
|
|
41
|
+
*/
|