PageSourceSearch

https://www.amootsms.com/wp-content/plugins/spin-wheel/assets/js/frontend.js?ver=1.0.0

js amootsms.com collected 2026-10-02 13:02:48 UTC 7,094 bytes, 170 lines download raw bytes

1(function () {
2    // if (typeof wp === 'undefined' || !wp.apiFetch) {
3    //     return;
4    // }
5
6    // const restBase = (window.SpinWheelSettings && window.SpinWheelSettings.restBase) || '';
7    // const namespace = restBase
8    //     ? restBase.replace(window.location.origin, '').replace(/.*wp-json\//, '').replace(/\/$/, '')
9    //     : 'spin-wheel/v1';
10    // const nonce = (window.SpinWheelSettings && window.SpinWheelSettings.nonce) || '';
11
12    // function message(container, text, type = 'info') {
13    //     const target = container.querySelector('[data-messages]');
14    //     if (!target) {
15    //         return;
16    //     }
17    //     target.innerHTML = text ? `<div class="notice notice-${type}"><p>${text}</p></div>` : '';
18    // }
19
20    function updateRemaining(container, remaining) {
21        const el = container.querySelector('[data-remaining]');
22        if (!el) {
23            return;
24        }
25        if (remaining > 0) {
26            el.textContent = window.SpinWheelSettings.i18n.remaining.replace('%d', remaining);
27        } else {
28            el.textContent = window.SpinWheelSettings.i18n.noSpins;
29        }
30    }
31
32    function renderResults(container, winners) {
33        const list = container.querySelector('[data-results] ul');
34        if (!list) {
35            return;
36        }
37        list.innerHTML = '';
38        winners.forEach((winner) => {
39            const li = document.createElement('li');
40            const strong = document.createElement('strong');
41            strong.textContent = winner.label || '';
42            li.appendChild(strong);
43            if (winner.created_at) {
44                const span = document.createElement('span');
45                span.textContent = ` - ${new Date(winner.created_at).toLocaleString()}`;
46                li.appendChild(span);
47            }
48            list.appendChild(li);
49        });
50    }
51
52    function fetchResults(container, wheelId) {
53        wp.apiFetch({
54            path: `${namespace}/results?wheel_id=${wheelId}`,
55            headers: {
56                'X-WP-Nonce': nonce,
57            },
58        }).then((response) => {
59            if (response && response.recent_winners) {
60                renderResults(container, response.recent_winners);
61            }
62        }).catch(() => { });
63    }
64
65    // document.querySelectorAll('[data-spin-wheel]').forEach((container) => {
66    //     const wheelId = parseInt(container.getAttribute('data-wheel-id'), 10);
67    //     let sessionToken = null;
68
69    //     const phoneForm = container.querySelector('[data-phone-form]');
70    //     const otpForm = container.querySelector('[data-otp-form]');
71    //     const spinControls = container.querySelector('[data-spin-controls]');
72    //     const spinButton = container.querySelector('[data-spin]');
73
74    //     fetchResults(container, wheelId);
75
76    //     if (phoneForm) {
77    //         phoneForm.addEventListener('submit', (event) => {
78    //             event.preventDefault();
79    //             const formData = new FormData(phoneForm);
80    //             const phone = formData.get('phone');
81    //             message(container, window.SpinWheelSettings.i18n.enterPhone);
82    //             wp.apiFetch({
83    //                 path: `${namespace}/otp/request`,
84    //                 method: 'POST',
85    //                 data: {
86    //                     wheel_id: wheelId,
87    //                     phone,
88    //                 },
89    //                 headers: {
90    //                     'X-WP-Nonce': nonce,
91    //                 },
92    //             }).then((response) => {
93    //                 message(container, window.SpinWheelSettings.i18n.enterOtp, 'success');
94    //                 phoneForm.style.display = 'none';
95    //                 otpForm.style.display = 'block';
96    //                 if (window.SpinWheelSettings.debug && response.debug_code) {
97    //                     console.info('Spin wheel OTP code:', response.debug_code);
98    //                 }
99    //             }).catch((error) => {
100    //                 const msg = (error && error.message) || 'Error';
101    //                 message(container, msg, 'error');
102    //             });
103    //         });
104    //     }
105
106    //     if (otpForm) {
107    //         otpForm.addEventListener('submit', (event) => {
108    //             event.preventDefault();
109    //             const formData = new FormData(otpForm);
110    //             const code = formData.get('code');
111    //             const phone = (phoneForm && phoneForm.querySelector('[name="phone"]').value) || '';
112    //             wp.apiFetch({
113    //                 path: `${namespace}/otp/verify`,
114    //                 method: 'POST',
115    //                 data: {
116    //                     wheel_id: wheelId,
117    //                     phone,
118    //                     code,
119    //                 },
120    //                 headers: {
121    //                     'X-WP-Nonce': nonce,
122    //                 },
123    //             }).then((response) => {
124    //                 sessionToken = response.token;
125    //                 otpForm.style.display = 'none';
126    //                 spinControls.style.display = 'block';
127    //                 updateRemaining(container, response.remaining);
128    //                 message(container, window.SpinWheelSettings.i18n.spin, 'success');
129    //             }).catch((error) => {
130    //                 const msg = (error && error.message) || 'Error';
131    //                 message(container, msg, 'error');
132    //             });
133    //         });
134    //     }
135
136    //     if (spinButton) {
137    //         spinButton.addEventListener('click', () => {
138    //             if (!sessionToken) {
139    //                 message(container, window.SpinWheelSettings.i18n.enterPhone, 'error');
140    //                 return;
141    //             }
142    //             spinButton.disabled = true;
143    //             wp.apiFetch({
144    //                 path: `${namespace}/spin`,
145    //                 method: 'POST',
146    //                 data: {
147    //                     wheel_id: wheelId,
148    //                     token: sessionToken,
149    //                 },
150    //                 headers: {
151    //                     'X-WP-Nonce': nonce,
152    //                 },
153    //             }).then((response) => {
154    //                 message(container, `${window.SpinWheelSettings.i18n.spin}: ${response.prize.label}`, 'success');
155    //                 updateRemaining(container, response.remaining);
156    //                 renderResults(container, response.recent_winners || []);
157    //                 if (response.remaining <= 0) {
158    //                     spinButton.disabled = true;
159    //                 } else {
160    //                     spinButton.disabled = false;
161    //                 }
162    //             }).catch((error) => {
163    //                 spinButton.disabled = false;
164    //                 const msg = (error && error.message) || 'Error';
165    //                 message(container, msg, 'error');
166    //             });
167    //         });
168    //     }
169    // });
170})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.