@ozdao/prometheus-framework 0.2.243 → 0.2.244

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ozdao/prometheus-framework",
3
- "version": "0.2.243",
3
+ "version": "0.2.244",
4
4
  "description": "Web3 Framework focused on user experience and ease of development.",
5
5
  "author": "OZ DAO <hello@ozdao.dev>",
6
6
  "license": "GPL-3.0-or-later",
@@ -8,8 +8,8 @@
8
8
  <div class="zoom-ratio-wrapper" v-if="minZoomRatio !== undefined && maxZoomRatio !== undefined">
9
9
  <input type="range" :min="minZoomRatio" :max="maxZoomRatio" @input="setZoomRatio" />
10
10
  </div>
11
- <Button @click="stopScan" class="stop-scan-button">Stop Scan</Button>
12
- <Button v-if="isTorchAvailable" @click="toggleTorch" class="torch-button">
11
+ <Button @click="stopScan" class="bg-white t-black stop-scan-button">Stop Scan</Button>
12
+ <Button v-if="isTorchAvailable" @click="toggleTorch" class="bg-white torch-button">
13
13
  Toggle Torch
14
14
  </Button>
15
15
  </div>
@@ -43,6 +43,8 @@ onUnmounted(async () => {
43
43
  await stopScan()
44
44
  })
45
45
 
46
+ const SCAN_TIMEOUT = 5000 // 5 секунд (можно изменить по вашему усмотрению)
47
+
46
48
  async function startScan() {
47
49
  try {
48
50
  const { camera } = await BarcodeScanner.checkPermissions()
@@ -54,7 +56,6 @@ async function startScan() {
54
56
  }
55
57
  document.querySelector('body')?.classList.add('barcode-scanner-active')
56
58
  document.querySelector('html')?.classList.add('barcode-scanner-active-html')
57
- BarcodeScanner.hideBackground();
58
59
  isScanning.value = true
59
60
  await BarcodeScanner.addListener('barcodeScanned', async (result) => {
60
61
  if (!isProcessing.value) {
@@ -93,13 +94,20 @@ async function processBarcode(barcode) {
93
94
  throw new Error('Invalid barcode data')
94
95
  }
95
96
  console.log('barcode is', barcode)
97
+
96
98
  const response = await tickets.actions.update({ _id: barcode.rawValue, status: 'used', check: true })
97
99
  alert("Ticket checked. And it's all right!")
98
100
  emits('qrcodecheck')
101
+
102
+ // Устанавливаем таймаут перед следующим сканированием
103
+ setTimeout(() => {
104
+ isProcessing.value = false
105
+ }, SCAN_TIMEOUT)
106
+
99
107
  } catch (e) {
100
108
  console.error(e)
101
109
  alert(`Ticket is not found, already used or deactivated!`)
102
- } finally {
110
+ // Сбрасываем флаг isProcessing в случае ошибки, чтобы можно было попробовать снова
103
111
  isProcessing.value = false
104
112
  }
105
113
  }
@@ -147,15 +155,14 @@ async function toggleTorch() {
147
155
  }
148
156
 
149
157
  /* Existing styles */
150
- /*body.barcode-scanner-active {
158
+ body.barcode-scanner-active {
151
159
  visibility: hidden !important;
152
160
  background: transparent !important;
153
161
  --background: transparent;
154
162
  --ion-background-color: transparent;
155
- opacity: 0;
156
- }*/
163
+ }
157
164
 
158
- /*html.barcode-scanner-active-html {
165
+ html.barcode-scanner-active-html {
159
166
  background: transparent !important;
160
- }*/
167
+ }
161
168
  </style>
@@ -1,107 +0,0 @@
1
- <template>
2
- <div>
3
- <Button @click="startScan" class="bg-main button-small radius-extra button">
4
- Check Tickets
5
- </Button>
6
- <div v-if="isScanning" class="barcode-scanner-modal">
7
- <!-- Add any UI elements for the scanner here -->
8
- <Button @click="stopScan" class="stop-scan-button">Stop Scan</Button>
9
- </div>
10
- </div>
11
- </template>
12
-
13
- <script setup>
14
- import { ref, onMounted, onUnmounted } from 'vue'
15
- import { BarcodeScanner } from '@capacitor-mlkit/barcode-scanning'
16
- import Button from '@pf/src/components/Button/Button.vue'
17
- import * as tickets from '@pf/src/modules/events/store/tickets'
18
-
19
- const emits = defineEmits(['qrcodecheck'])
20
- const error = ref('')
21
- const isScanning = ref(false)
22
-
23
- onMounted(async () => {
24
- const { supported } = await BarcodeScanner.isSupported()
25
- if (!supported) {
26
- error.value = 'Barcode scanning is not supported on this device'
27
- }
28
- })
29
-
30
- onUnmounted(async () => {
31
- await BarcodeScanner.removeAllListeners()
32
- })
33
-
34
- async function startScan() {
35
- try {
36
- const { camera } = await BarcodeScanner.checkPermissions()
37
- if (camera !== 'granted') {
38
- const { camera: newStatus } = await BarcodeScanner.requestPermissions()
39
- if (newStatus !== 'granted') {
40
- throw new Error('Camera permission is required to scan barcodes')
41
- }
42
- }
43
-
44
- document.querySelector('body')?.classList.add('barcode-scanner-active')
45
- isScanning.value = true
46
-
47
- await BarcodeScanner.addListener('barcodeScanned', async (result) => {
48
- await processBarcode(result.barcode)
49
- })
50
-
51
- await BarcodeScanner.startScan()
52
- } catch (e) {
53
- error.value = e.message
54
- alert(`Error: ${error.value}`)
55
- }
56
- }
57
-
58
- async function stopScan() {
59
- try {
60
- document.querySelector('body')?.classList.remove('barcode-scanner-active')
61
- isScanning.value = false
62
- await BarcodeScanner.stopScan()
63
- await BarcodeScanner.removeAllListeners()
64
- } catch (e) {
65
- error.value = e.message
66
- alert(`Error stopping scan: ${error.value}`)
67
- }
68
- }
69
-
70
- async function processBarcode(barcode) {
71
- try {
72
- if (!barcode) {
73
- throw new Error('Troubles with barcode reading')
74
- }
75
- const response = await tickets.actions.update({ _id: barcode, status: 'used', check: true })
76
- alert("Ticket checked. And it's all right!")
77
- } catch (e) {
78
- alert(`Ticket is not found, already used or deactivated!`)
79
- } finally {
80
- emits('qrcodecheck')
81
- await stopScan()
82
- }
83
- }
84
- </script>
85
-
86
- <style scoped>
87
- .barcode-scanner-modal {
88
- position: fixed;
89
- top: 0;
90
- left: 0;
91
- right: 0;
92
- bottom: 0;
93
- background: rgba(0, 0, 0, 0.8);
94
- display: flex;
95
- justify-content: center;
96
- align-items: center;
97
- }
98
-
99
- .stop-scan-button {
100
- position: absolute;
101
- bottom: 20px;
102
- left: 50%;
103
- transform: translateX(-50%);
104
- }
105
-
106
- /* Existing styles can stay unchanged */
107
- </style>
@@ -1,76 +0,0 @@
1
- <template>
2
- <div>
3
- <Button :submit="startScan" class="bg-main button-small radius-extra button">
4
- Check Tickets
5
- </Button>
6
- <Popup
7
- title="Scan QR Code"
8
- @close-popup="closePublicationPopup"
9
- :isPopupOpen="isPublicationPopup"
10
- class="w-max-30r h-max-30r t-left pd-big bg-white radius-big"
11
- >
12
- <h3 class="mn-b-small">Scan QR Code</h3>
13
- <div class="h-max">
14
- <!-- Scanning will be handled by Capacitor, so we don't need a visual component here -->
15
- </div>
16
- </Popup>
17
- </div>
18
- </template>
19
-
20
- <script setup>
21
- import { ref } from 'vue'
22
- import { BarcodeScanner } from '@capacitor-mlkit/barcode-scanning'
23
- import Popup from '@pf/src/components/Popup/Popup.vue'
24
- import Button from '@pf/src/components/Button/Button.vue'
25
- import * as tickets from '@pf/src/modules/events/store/tickets'
26
-
27
- const emits = defineEmits(['qrcodecheck'])
28
- const isPublicationPopup = ref(false)
29
- const error = ref('')
30
-
31
- function openPublicationPopup() {
32
- isPublicationPopup.value = true
33
- }
34
-
35
- function closePublicationPopup() {
36
- isPublicationPopup.value = false
37
- }
38
-
39
- async function startScan() {
40
- openPublicationPopup()
41
-
42
- try {
43
- await BarcodeScanner.isSupported()
44
- const { barcodes } = await BarcodeScanner.scan()
45
-
46
- if (barcodes.length > 0) {
47
- await processBarcode(barcodes[0].rawValue)
48
- } else {
49
- throw new Error('No barcode detected')
50
- }
51
- } catch (e) {
52
- error.value = e.message
53
- alert(`Error: ${error.value}`)
54
- } finally {
55
- closePublicationPopup()
56
- }
57
- }
58
-
59
- async function processBarcode(qrcode) {
60
- try {
61
- if (!qrcode) {
62
- throw new Error('Troubles with qrcode reading')
63
- }
64
- const response = await tickets.actions.update({ _id: qrcode, status: 'used', check: true })
65
- alert("Ticket checked. And it's all right!")
66
- } catch (e) {
67
- alert(`Ticket is not found, already used or deactivated!`)
68
- } finally {
69
- emits('qrcodecheck')
70
- }
71
- }
72
- </script>
73
-
74
- <style scoped>
75
- /* Existing styles can stay unchanged */
76
- </style>