baileys-idn 1.0.12 → 1.0.14
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/lib/Utils/dashboard.d.ts +1 -0
- package/lib/Utils/dashboard.d.ts.map +1 -1
- package/lib/Utils/dashboard.js +113 -143
- package/lib/Utils/dashboard.js.map +1 -1
- package/package.json +1 -1
package/lib/Utils/dashboard.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/Utils/dashboard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/Utils/dashboard.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,OAAO,CAAC,EAAE,aAAa,CAAA;CAC1B;AAED,qBAAa,SAAS;IAClB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAiD;IAC/D,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,WAAW,CAAY;gBAEnB,OAAO,GAAE,gBAAqB;IAqB1C,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,WAAW;IAyBnB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,gBAAgB;IAuBjB,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,YAAY;IAKxD,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAS9B,WAAW,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAMzD,gBAAgB;IAKhB,OAAO,CAAC,OAAO,EAAE,MAAM;IAKvB,KAAK;IAMZ,OAAO,CAAC,UAAU;CAicrB;AAED,eAAO,MAAM,eAAe,GAAI,UAAU,gBAAgB,cAA2B,CAAA"}
|
package/lib/Utils/dashboard.js
CHANGED
|
@@ -3,6 +3,8 @@ import { createServer } from 'http';
|
|
|
3
3
|
import { Server } from 'socket.io';
|
|
4
4
|
import os from 'os';
|
|
5
5
|
import dayjs from 'dayjs';
|
|
6
|
+
import fs from 'fs';
|
|
7
|
+
import path from 'path';
|
|
6
8
|
import { log } from './logger.js';
|
|
7
9
|
export class Dashboard {
|
|
8
10
|
constructor(options = {}) {
|
|
@@ -17,7 +19,7 @@ export class Dashboard {
|
|
|
17
19
|
this.port = options.port || 3000;
|
|
18
20
|
this.title = options.title || 'Shiina-MD Control Center';
|
|
19
21
|
this.theme = {
|
|
20
|
-
accentColor: options.theme?.accentColor || '#
|
|
22
|
+
accentColor: options.theme?.accentColor || '#0a84ff',
|
|
21
23
|
opacity: options.theme?.opacity !== undefined ? options.theme.opacity : 0.75,
|
|
22
24
|
bgImage: options.theme?.bgImage || ''
|
|
23
25
|
};
|
|
@@ -26,12 +28,34 @@ export class Dashboard {
|
|
|
26
28
|
showTerminal: options.widgets?.showTerminal !== false,
|
|
27
29
|
showMusicPlayer: options.widgets?.showMusicPlayer !== false
|
|
28
30
|
};
|
|
31
|
+
this.countPlugins();
|
|
29
32
|
this.setupRoutes();
|
|
30
33
|
this.setupSockets();
|
|
31
34
|
}
|
|
35
|
+
countPlugins() {
|
|
36
|
+
try {
|
|
37
|
+
// Cek folder plugin umum di struktur bot
|
|
38
|
+
const possiblePaths = [path.resolve(process.cwd(), 'plugins'), path.resolve(process.cwd(), 'src/plugins')];
|
|
39
|
+
for (const p of possiblePaths) {
|
|
40
|
+
if (fs.existsSync(p)) {
|
|
41
|
+
const files = fs.readdirSync(p, { recursive: true });
|
|
42
|
+
const pluginFiles = files.filter(f => f.endsWith('.js') || f.endsWith('.ts'));
|
|
43
|
+
if (pluginFiles.length > 0) {
|
|
44
|
+
this.totalCommands = pluginFiles.length;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
this.totalCommands = 45; // fallback default
|
|
52
|
+
}
|
|
53
|
+
}
|
|
32
54
|
setupRoutes() {
|
|
33
55
|
this.app.get('/', (req, res) => {
|
|
34
|
-
res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate,
|
|
56
|
+
res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate');
|
|
57
|
+
res.setHeader('Pragma', 'no-cache');
|
|
58
|
+
res.setHeader('Expires', '0');
|
|
35
59
|
res.send(this.renderHTML());
|
|
36
60
|
});
|
|
37
61
|
this.app.get('/api/play', async (req, res) => {
|
|
@@ -113,7 +137,7 @@ export class Dashboard {
|
|
|
113
137
|
}
|
|
114
138
|
renderHTML() {
|
|
115
139
|
const opacity = this.theme?.opacity ?? 0.75;
|
|
116
|
-
const accentColor = this.theme?.accentColor ?? '#
|
|
140
|
+
const accentColor = this.theme?.accentColor ?? '#0a84ff';
|
|
117
141
|
const bgImage = this.theme?.bgImage ?? '';
|
|
118
142
|
const bgStyle = bgImage
|
|
119
143
|
? `background: url('${bgImage}') no-repeat center center fixed; background-size: cover;`
|
|
@@ -130,7 +154,10 @@ export class Dashboard {
|
|
|
130
154
|
body { ${bgStyle} color: #f5f5f7; font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Segoe UI", Roboto, sans-serif; padding: 20px; display: flex; flex-direction: column; align-items: center; min-height: 100vh; }
|
|
131
155
|
.container { width: 100%; max-width: 850px; display: flex; flex-direction: column; gap: 14px; }
|
|
132
156
|
|
|
133
|
-
|
|
157
|
+
/* iOS Glass Elements */
|
|
158
|
+
.glass-box { background: rgba(255, 255, 255, ${opacity * 0.08}); backdrop-filter: blur(22px); -webkit-backdrop-filter: blur(22px); border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 14px; box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.3); }
|
|
159
|
+
|
|
160
|
+
.header { display: flex; justify-content: space-between; align-items: center; padding: 14px 18px; width: 100%; }
|
|
134
161
|
.header h1 { font-size: 1.1rem; font-weight: 600; color: #ffffff; display: flex; align-items: center; gap: 8px; letter-spacing: -0.3px; }
|
|
135
162
|
.header h1::before { content: '◈'; color: ${accentColor}; font-size: 0.9rem; }
|
|
136
163
|
.header-right { display: flex; align-items: center; gap: 10px; }
|
|
@@ -148,7 +175,7 @@ export class Dashboard {
|
|
|
148
175
|
#widget-terminal-container { order: 3; }
|
|
149
176
|
|
|
150
177
|
.grid { display: ${this.widgets.showMetrics ? 'grid' : 'none'}; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; width: 100%; }
|
|
151
|
-
.card {
|
|
178
|
+
.card { padding: 14px; position: relative; overflow: hidden; }
|
|
152
179
|
.card::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: rgba(255,255,255,0.4); }
|
|
153
180
|
.card.cyan::before { background: #64d2ff; }
|
|
154
181
|
.card.blue::before { background: ${accentColor}; }
|
|
@@ -160,8 +187,8 @@ export class Dashboard {
|
|
|
160
187
|
.card .subtext { font-size: 0.65rem; color: rgba(255,255,255,0.45); margin-top: 2px; }
|
|
161
188
|
.pairing-highlight { color: #64d2ff !important; font-family: monospace; font-size: 1rem !important; }
|
|
162
189
|
|
|
163
|
-
.terminal-card { display: ${this.widgets.showTerminal ? 'block' : 'none'};
|
|
164
|
-
.terminal-header { background: rgba(0, 0, 0, 0.
|
|
190
|
+
.terminal-card { display: ${this.widgets.showTerminal ? 'block' : 'none'}; overflow: hidden; width: 100%; }
|
|
191
|
+
.terminal-header { background: rgba(0, 0, 0, 0.3); padding: 8px 14px; font-size: 0.68rem; font-weight: 600; color: rgba(255,255,255,0.6); border-bottom: 1px solid rgba(255, 255, 255, 0.08); display: flex; justify-content: space-between; align-items: center; }
|
|
165
192
|
.dots { display: flex; gap: 5px; }
|
|
166
193
|
.dot { width: 8px; height: 8px; border-radius: 50%; }
|
|
167
194
|
.dot.red { background: #ff453a; }
|
|
@@ -184,17 +211,11 @@ export class Dashboard {
|
|
|
184
211
|
|
|
185
212
|
.player-card {
|
|
186
213
|
display: ${this.widgets.showMusicPlayer ? 'flex' : 'none'};
|
|
187
|
-
background: rgba(255, 255, 255, ${opacity * 0.07});
|
|
188
|
-
backdrop-filter: blur(20px);
|
|
189
|
-
-webkit-backdrop-filter: blur(20px);
|
|
190
|
-
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
191
|
-
border-radius: 14px;
|
|
192
214
|
padding: 14px 18px;
|
|
193
215
|
flex-direction: column;
|
|
194
216
|
align-items: center;
|
|
195
217
|
gap: 10px;
|
|
196
218
|
width: 100%;
|
|
197
|
-
box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.25);
|
|
198
219
|
}
|
|
199
220
|
|
|
200
221
|
.player-info {
|
|
@@ -241,30 +262,31 @@ export class Dashboard {
|
|
|
241
262
|
transform: scale(1.08);
|
|
242
263
|
}
|
|
243
264
|
|
|
244
|
-
|
|
245
|
-
.modal-
|
|
265
|
+
/* iOS Modal Settings Styling (Aesthetic File Upload) */
|
|
266
|
+
.modal-overlay { display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.5); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); z-index: 1000; align-items: center; justify-content: center; padding: 16px; }
|
|
267
|
+
.modal-content { background: rgba(30, 30, 35, ${Math.min(Math.max(opacity + 0.15, 0.4), 0.95)}); backdrop-filter: blur(30px); border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 18px; width: 100%; max-width: 400px; padding: 20px; display: flex; flex-direction: column; gap: 14px; box-shadow: 0 20px 40px rgba(0,0,0,0.5); }
|
|
246
268
|
.modal-header { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid rgba(255,255,255,0.1); padding-bottom: 10px; }
|
|
247
269
|
.modal-header h2 { font-size: 0.9rem; color: #ffffff; font-family: monospace; letter-spacing: -0.2px; }
|
|
248
270
|
.modal-close { background: transparent; border: none; color: rgba(255,255,255,0.5); font-size: 1rem; cursor: pointer; }
|
|
249
271
|
|
|
250
|
-
.tab-nav { display: flex; gap: 6px; border-bottom: 1px solid rgba(255,255,255,0.1); padding-bottom: 8px; }
|
|
251
|
-
.tab-btn { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); color: rgba(255,255,255,0.5); padding: 6px 10px; border-radius: 8px; font-size: 0.7rem; font-weight: 700; cursor: pointer; font-family: monospace; flex: 1; text-align: center; }
|
|
252
|
-
.tab-btn.active { background: rgba(255,255,255,0.15); color: #ffffff; border-color: rgba(255,255,255,0.3); }
|
|
253
|
-
|
|
254
|
-
.tab-pane { display: none; flex-direction: column; gap: 12px; }
|
|
255
|
-
.tab-pane.active { display: flex; }
|
|
256
|
-
|
|
257
272
|
.form-group { display: flex; flex-direction: column; gap: 6px; }
|
|
258
|
-
.form-group label { font-size: 0.72rem; font-weight: 600; color: rgba(255,255,255,0.
|
|
259
|
-
.form-control { background: rgba(0, 0, 0, 0.
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
.
|
|
273
|
+
.form-group label { font-size: 0.72rem; font-weight: 600; color: rgba(255,255,255,0.7); }
|
|
274
|
+
.form-control { background: rgba(0, 0, 0, 0.3); border: 1px solid rgba(255, 255, 255, 0.12); color: #ffffff; padding: 8px 10px; border-radius: 8px; font-size: 0.78rem; outline: none; }
|
|
275
|
+
|
|
276
|
+
/* Aesthetic File Upload Button */
|
|
277
|
+
.file-upload-wrapper { position: relative; overflow: hidden; display: inline-block; width: 100%; }
|
|
278
|
+
.file-upload-wrapper input[type=file] { font-size: 100px; position: absolute; left: 0; top: 0; opacity: 0; cursor: pointer; }
|
|
279
|
+
.file-upload-btn { display: block; text-align: center; background: rgba(255, 255, 255, 0.1); border: 1px dashed rgba(255, 255, 255, 0.3); color: #ffffff; padding: 10px; border-radius: 8px; font-size: 0.75rem; font-weight: 600; cursor: pointer; transition: 0.2s; }
|
|
280
|
+
.file-upload-btn:hover { background: rgba(255, 255, 255, 0.18); border-color: rgba(255, 255, 255, 0.5); }
|
|
281
|
+
|
|
282
|
+
.checkbox-group { display: flex; align-items: center; gap: 8px; font-size: 0.78rem; color: rgba(255,255,255,0.85); cursor: pointer; }
|
|
283
|
+
.btn-save { background: ${accentColor}; color: #fff; border: none; padding: 10px; border-radius: 10px; font-weight: 600; cursor: pointer; margin-top: 4px; transition: 0.2s; font-family: monospace; }
|
|
284
|
+
.btn-save:hover { opacity: 0.9; }
|
|
263
285
|
</style>
|
|
264
286
|
</head>
|
|
265
287
|
<body>
|
|
266
288
|
<div class="container">
|
|
267
|
-
<div class="header">
|
|
289
|
+
<div class="header glass-box">
|
|
268
290
|
<h1 id="dashboard-title">${this.title}</h1>
|
|
269
291
|
<div class="header-right">
|
|
270
292
|
<button class="btn-settings" onclick="openModal()">[+] SETTINGS</button>
|
|
@@ -274,27 +296,27 @@ export class Dashboard {
|
|
|
274
296
|
|
|
275
297
|
<div id="widget-metrics-container">
|
|
276
298
|
<div class="grid" id="metrics-grid">
|
|
277
|
-
<div class="card cyan">
|
|
299
|
+
<div class="card glass-box cyan">
|
|
278
300
|
<div class="title">WhatsApp Pairing Code</div>
|
|
279
301
|
<div class="value pairing-highlight" id="pairing-code">------</div>
|
|
280
302
|
<div class="subtext">Device auth code</div>
|
|
281
303
|
</div>
|
|
282
|
-
<div class="card blue">
|
|
304
|
+
<div class="card glass-box blue">
|
|
283
305
|
<div class="title">Operating System</div>
|
|
284
306
|
<div class="value" id="os-name">-</div>
|
|
285
307
|
<div class="subtext" id="cpu-name">-</div>
|
|
286
308
|
</div>
|
|
287
|
-
<div class="card purple">
|
|
309
|
+
<div class="card glass-box purple">
|
|
288
310
|
<div class="title">Memory Usage</div>
|
|
289
311
|
<div class="value" id="ram-text">- / - MB</div>
|
|
290
312
|
<div class="subtext" id="ram-percent">- % utilized</div>
|
|
291
313
|
</div>
|
|
292
|
-
<div class="card orange">
|
|
293
|
-
<div class="title">Total
|
|
294
|
-
<div class="value" id="total-commands"
|
|
295
|
-
<div class="subtext">
|
|
314
|
+
<div class="card glass-box orange">
|
|
315
|
+
<div class="title">Total Plugins</div>
|
|
316
|
+
<div class="value" id="total-commands">${this.totalCommands}</div>
|
|
317
|
+
<div class="subtext">Active modules</div>
|
|
296
318
|
</div>
|
|
297
|
-
<div class="card green">
|
|
319
|
+
<div class="card glass-box green">
|
|
298
320
|
<div class="title">Total Groups</div>
|
|
299
321
|
<div class="value" id="total-groups">0</div>
|
|
300
322
|
<div class="subtext">Active chats</div>
|
|
@@ -303,7 +325,7 @@ export class Dashboard {
|
|
|
303
325
|
</div>
|
|
304
326
|
|
|
305
327
|
<div id="widget-player-container">
|
|
306
|
-
<div class="player-card" id="player-card">
|
|
328
|
+
<div class="player-card glass-box" id="player-card">
|
|
307
329
|
<div class="player-info">
|
|
308
330
|
<div class="player-title" id="track-title">[ NO AUDIO PLAYING ]</div>
|
|
309
331
|
<div class="player-artist" id="track-channel">Use [SETTINGS] to search & play song</div>
|
|
@@ -314,7 +336,7 @@ export class Dashboard {
|
|
|
314
336
|
</div>
|
|
315
337
|
|
|
316
338
|
<div id="widget-terminal-container">
|
|
317
|
-
<div class="terminal-card" id="terminal-card">
|
|
339
|
+
<div class="terminal-card glass-box" id="terminal-card">
|
|
318
340
|
<div class="terminal-header">
|
|
319
341
|
<span>TERMINAL / LIVE WHATSAPP LOGS</span>
|
|
320
342
|
<div class="dots">
|
|
@@ -328,66 +350,42 @@ export class Dashboard {
|
|
|
328
350
|
</div>
|
|
329
351
|
</div>
|
|
330
352
|
|
|
331
|
-
<!--
|
|
353
|
+
<!-- Single Tab UI & Background Modal -->
|
|
332
354
|
<div class="modal-overlay" id="settings-modal">
|
|
333
|
-
<div class="modal-content">
|
|
355
|
+
<div class="modal-content" id="modal-box">
|
|
334
356
|
<div class="modal-header">
|
|
335
|
-
<h2>[+]
|
|
357
|
+
<h2>[+] UI & BACKGROUND SETTINGS</h2>
|
|
336
358
|
<button class="modal-close" onclick="closeModal()">[X]</button>
|
|
337
359
|
</div>
|
|
338
360
|
|
|
339
|
-
<div class="
|
|
340
|
-
<
|
|
341
|
-
<
|
|
361
|
+
<div class="form-group">
|
|
362
|
+
<label>Search & Play YouTube Song</label>
|
|
363
|
+
<input type="text" class="form-control" id="cfg-song" placeholder="Type song title..." value="">
|
|
342
364
|
</div>
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
<div class="form-group">
|
|
347
|
-
<label>Search & Play YouTube Song</label>
|
|
348
|
-
<input type="text" class="form-control" id="cfg-song" placeholder="Type song title..." value="">
|
|
349
|
-
</div>
|
|
350
|
-
<div class="form-group">
|
|
351
|
-
<label>Glass Opacity (<span id="opacity-val">${Math.round(opacity * 100)}</span>%)</label>
|
|
352
|
-
<input type="range" class="form-control" id="cfg-opacity" min="0.1" max="1" step="0.05" value="${opacity}" oninput="updateOpacityLabel(this.value)">
|
|
353
|
-
</div>
|
|
354
|
-
<div class="form-group">
|
|
355
|
-
<label>Pilih File Background (Dari Perangkat)</label>
|
|
356
|
-
<input type="file" class="form-control" id="cfg-bg-file" accept="image/*" onchange="previewFileBg(event)">
|
|
357
|
-
</div>
|
|
358
|
-
<div class="form-group">
|
|
359
|
-
<label>Widgets Layout Order</label>
|
|
360
|
-
<select class="form-control" id="cfg-order">
|
|
361
|
-
<option value="default">Status -> Player -> Terminal</option>
|
|
362
|
-
<option value="terminal-first">Terminal -> Player -> Status</option>
|
|
363
|
-
</select>
|
|
364
|
-
</div>
|
|
365
|
-
<div class="form-group">
|
|
366
|
-
<label>Toggle Widgets Visibility</label>
|
|
367
|
-
<label class="checkbox-group"><input type="checkbox" id="cfg-w-metrics" ${this.widgets.showMetrics ? 'checked' : ''}> Show Metrics Box</label>
|
|
368
|
-
<label class="checkbox-group"><input type="checkbox" id="cfg-w-music" ${this.widgets.showMusicPlayer ? 'checked' : ''}> Show Music Player</label>
|
|
369
|
-
label class="checkbox-group"><input type="checkbox" id="cfg-w-terminal" ${this.widgets.showTerminal ? 'checked' : ''}> Show Terminal Log</label>
|
|
370
|
-
</div>
|
|
365
|
+
<div class="form-group">
|
|
366
|
+
<label>Glass Opacity (<span id="opacity-val">${Math.round(opacity * 100)}</span>%)</label>
|
|
367
|
+
<input type="range" class="form-control" id="cfg-opacity" min="0.1" max="1" step="0.05" value="${opacity}" oninput="updateOpacityLabel(this.value)">
|
|
371
368
|
</div>
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
<
|
|
377
|
-
<input type="text" class="form-control" id="cfg-bot-name" placeholder="Shiina-MD" value="Shiina-MD">
|
|
378
|
-
</div>
|
|
379
|
-
<div class="form-group">
|
|
380
|
-
<label>URL Foto / Thumbnail Menu</label>
|
|
381
|
-
<input type="text" class="form-control" id="cfg-menu-thumb" placeholder="https://..." value="">
|
|
382
|
-
</div>
|
|
383
|
-
<div class="form-group">
|
|
384
|
-
<label>Bot Security & Features Toggles</label>
|
|
385
|
-
<label class="checkbox-group"><input type="checkbox" id="cfg-antilink" checked> Anti Link (Block group/web links)</label>
|
|
386
|
-
<label class="checkbox-group"><input type="checkbox" id="cfg-antibot" checked> Anti Bot (Prevent bot collisions)</label>
|
|
387
|
-
<label class="checkbox-group"><input type="checkbox" id="cfg-antimedia" checked> Anti Spammed Media</label>
|
|
388
|
-
<label class="checkbox-group"><input type="checkbox" id="cfg-autoread" checked> Auto-Read Incoming Messages</label>
|
|
369
|
+
<div class="form-group">
|
|
370
|
+
<label>Pilih File Background Aesthetic</label>
|
|
371
|
+
<div class="file-upload-wrapper">
|
|
372
|
+
<button class="file-upload-btn" id="file-label">📁 Pilih Gambar Dari Perangkat</button>
|
|
373
|
+
<input type="file" id="cfg-bg-file" accept="image/*" onchange="previewFileBg(event)">
|
|
389
374
|
</div>
|
|
390
375
|
</div>
|
|
376
|
+
<div class="form-group">
|
|
377
|
+
<label>Widgets Layout Order</label>
|
|
378
|
+
<select class="form-control" id="cfg-order">
|
|
379
|
+
<option value="default">Status -> Player -> Terminal</option>
|
|
380
|
+
<option value="terminal-first">Terminal -> Player -> Status</option>
|
|
381
|
+
</select>
|
|
382
|
+
</div>
|
|
383
|
+
<div class="form-group">
|
|
384
|
+
<label>Toggle Widgets Visibility</label>
|
|
385
|
+
<label class="checkbox-group"><input type="checkbox" id="cfg-w-metrics" ${this.widgets.showMetrics ? 'checked' : ''}> Show Metrics Box</label>
|
|
386
|
+
<label class="checkbox-group"><input type="checkbox" id="cfg-w-music" ${this.widgets.showMusicPlayer ? 'checked' : ''}> Show Music Player</label>
|
|
387
|
+
<label class="checkbox-group"><input type="checkbox" id="cfg-w-terminal" ${this.widgets.showTerminal ? 'checked' : ''}> Show Terminal Log</label>
|
|
388
|
+
</div>
|
|
391
389
|
|
|
392
390
|
<button class="btn-save" onclick="saveSettings()">APPLY & SAVE CHANGES</button>
|
|
393
391
|
</div>
|
|
@@ -421,8 +419,6 @@ export class Dashboard {
|
|
|
421
419
|
});
|
|
422
420
|
|
|
423
421
|
function updateMetrics(data) {
|
|
424
|
-
const storedName = localStorage.getItem('shiina_bot_name') || data.title;
|
|
425
|
-
document.getElementById('dashboard-title').innerText = storedName;
|
|
426
422
|
document.getElementById('os-name').innerText = data.os;
|
|
427
423
|
document.getElementById('cpu-name').innerText = data.cpu;
|
|
428
424
|
document.getElementById('ram-text').innerText = data.ramUsed + ' MB / ' + data.ramTotal + ' MB';
|
|
@@ -432,7 +428,6 @@ export class Dashboard {
|
|
|
432
428
|
if (data.pairingCode && data.pairingCode !== '-') {
|
|
433
429
|
document.getElementById('pairing-code').innerText = data.pairingCode;
|
|
434
430
|
}
|
|
435
|
-
|
|
436
431
|
const badge = document.getElementById('status-badge');
|
|
437
432
|
badge.innerText = data.status;
|
|
438
433
|
badge.className = 'badge ' + data.status.toLowerCase();
|
|
@@ -481,18 +476,31 @@ export class Dashboard {
|
|
|
481
476
|
|
|
482
477
|
function openModal() { document.getElementById('settings-modal').style.display = 'flex'; }
|
|
483
478
|
function closeModal() { document.getElementById('settings-modal').style.display = 'none'; }
|
|
484
|
-
|
|
479
|
+
|
|
480
|
+
function updateOpacityLabel(val) {
|
|
481
|
+
document.getElementById('opacity-val').innerText = Math.round(val * 100);
|
|
482
|
+
applyDynamicOpacity(val);
|
|
483
|
+
}
|
|
485
484
|
|
|
486
|
-
function
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
485
|
+
function applyDynamicOpacity(op) {
|
|
486
|
+
const glassColor = 'rgba(255, 255, 255, ' + (op * 0.08) + ')';
|
|
487
|
+
const termColor = 'rgba(20, 20, 25, ' + op + ')';
|
|
488
|
+
const modalColor = 'rgba(30, 30, 35, ' + Math.min(Math.max(Number(op) + 0.15, 0.4), 0.95) + ')';
|
|
489
|
+
|
|
490
|
+
document.querySelectorAll('.glass-box').forEach(el => {
|
|
491
|
+
el.style.background = glassColor;
|
|
492
|
+
});
|
|
493
|
+
document.querySelectorAll('.terminal-card').forEach(el => {
|
|
494
|
+
el.style.background = termColor;
|
|
495
|
+
});
|
|
496
|
+
const modalBox = document.getElementById('modal-box');
|
|
497
|
+
if (modalBox) modalBox.style.background = modalColor;
|
|
491
498
|
}
|
|
492
499
|
|
|
493
500
|
function previewFileBg(event) {
|
|
494
501
|
const file = event.target.files[0];
|
|
495
502
|
if (file) {
|
|
503
|
+
document.getElementById('file-label').innerText = '✅ ' + file.name;
|
|
496
504
|
const reader = new FileReader();
|
|
497
505
|
reader.onload = function(e) {
|
|
498
506
|
uploadedBgBase64 = e.target.result;
|
|
@@ -508,27 +516,13 @@ export class Dashboard {
|
|
|
508
516
|
const showTerminal = document.getElementById('cfg-w-terminal').checked;
|
|
509
517
|
const showMusic = document.getElementById('cfg-w-music').checked;
|
|
510
518
|
const newSong = document.getElementById('cfg-song').value.trim();
|
|
511
|
-
|
|
512
|
-
const botName = document.getElementById('cfg-bot-name').value.trim();
|
|
513
|
-
const menuThumb = document.getElementById('cfg-menu-thumb').value.trim();
|
|
514
|
-
const antilink = document.getElementById('cfg-antilink').checked;
|
|
515
|
-
const antibot = document.getElementById('cfg-antibot').checked;
|
|
516
|
-
const antimedia = document.getElementById('cfg-antimedia').checked;
|
|
517
|
-
const autoread = document.getElementById('cfg-autoread').checked;
|
|
518
|
-
|
|
519
|
-
const bg = uploadedBgBase64 || (JSON.parse(localStorage.getItem('shiina_ui_config') || '{}').bg || '');
|
|
520
|
-
|
|
521
|
-
const config = {
|
|
522
|
-
opacity, bg, order, showMetrics, showTerminal, showMusic, newSong,
|
|
523
|
-
botName, menuThumb, antilink, antibot, antimedia, autoread
|
|
524
|
-
};
|
|
525
|
-
|
|
526
|
-
localStorage.setItem('shiina_ui_config', JSON.stringify(config));
|
|
527
|
-
if (botName) {
|
|
528
|
-
localStorage.setItem('shiina_bot_name', botName);
|
|
529
|
-
document.getElementById('dashboard-title').innerText = botName;
|
|
530
|
-
}
|
|
531
519
|
|
|
520
|
+
const existingConfig = JSON.parse(localStorage.getItem('shiina_ui_config') || '{}');
|
|
521
|
+
const bg = uploadedBgBase64 || existingConfig.bg || '';
|
|
522
|
+
|
|
523
|
+
const config = { opacity, bg, order, showMetrics, showTerminal, showMusic, newSong };
|
|
524
|
+
localStorage.setItem('shiina_ui_config', JSON.stringify(config));
|
|
525
|
+
|
|
532
526
|
applyUI(config);
|
|
533
527
|
|
|
534
528
|
if (newSong) {
|
|
@@ -541,15 +535,7 @@ export class Dashboard {
|
|
|
541
535
|
function applyUI(cfg) {
|
|
542
536
|
if (!cfg) return;
|
|
543
537
|
|
|
544
|
-
|
|
545
|
-
el.style.background = 'rgba(255, 255, 255, ' + (cfg.opacity * 0.07) + ')';
|
|
546
|
-
});
|
|
547
|
-
document.querySelectorAll('.player-card').forEach(el => {
|
|
548
|
-
el.style.background = 'rgba(255, 255, 255, ' + (cfg.opacity * 0.07) + ')';
|
|
549
|
-
});
|
|
550
|
-
document.querySelectorAll('.terminal-card').forEach(el => {
|
|
551
|
-
el.style.background = 'rgba(20, 20, 25, ' + cfg.opacity + ')';
|
|
552
|
-
});
|
|
538
|
+
applyDynamicOpacity(cfg.opacity);
|
|
553
539
|
|
|
554
540
|
if (cfg.bg) {
|
|
555
541
|
document.body.style.background = "url('" + cfg.bg + "') no-repeat center center fixed";
|
|
@@ -575,20 +561,10 @@ export class Dashboard {
|
|
|
575
561
|
document.getElementById('metrics-grid').style.display = cfg.showMetrics ? 'grid' : 'none';
|
|
576
562
|
document.getElementById('player-card').style.display = cfg.showMusic ? 'flex' : 'none';
|
|
577
563
|
document.getElementById('terminal-card').style.display = cfg.showTerminal ? 'block' : 'none';
|
|
578
|
-
|
|
579
|
-
if (cfg.botName) document.getElementById('cfg-bot-name').value = cfg.botName;
|
|
580
|
-
if (cfg.menuThumb) document.getElementById('cfg-menu-thumb').value = cfg.menuThumb;
|
|
581
|
-
if (cfg.antilink !== undefined) document.getElementById('cfg-antilink').checked = cfg.antilink;
|
|
582
|
-
if (cfg.antibot !== undefined) document.getElementById('cfg-antibot').checked = cfg.antibot;
|
|
583
|
-
if (cfg.antimedia !== undefined) document.getElementById('cfg-antimedia').checked = cfg.antimedia;
|
|
584
|
-
if (cfg.autoread !== undefined) document.getElementById('cfg-autoread').checked = cfg.autoread;
|
|
585
564
|
}
|
|
586
565
|
|
|
587
566
|
window.addEventListener('DOMContentLoaded', () => {
|
|
588
567
|
const saved = localStorage.getItem('shiina_ui_config');
|
|
589
|
-
const savedName = localStorage.getItem('shiina_bot_name');
|
|
590
|
-
if (savedName) document.getElementById('dashboard-title').innerText = savedName;
|
|
591
|
-
|
|
592
568
|
if (saved) {
|
|
593
569
|
try {
|
|
594
570
|
const cfg = JSON.parse(saved);
|
|
@@ -598,12 +574,6 @@ export class Dashboard {
|
|
|
598
574
|
document.getElementById('cfg-w-metrics').checked = cfg.showMetrics !== false;
|
|
599
575
|
document.getElementById('cfg-w-music').checked = cfg.showMusicPlayer !== false;
|
|
600
576
|
document.getElementById('cfg-w-terminal').checked = cfg.showTerminal !== false;
|
|
601
|
-
if (cfg.botName) document.getElementById('cfg-bot-name').value = cfg.botName;
|
|
602
|
-
if (cfg.menuThumb) document.getElementById('cfg-menu-thumb').value = cfg.menuThumb;
|
|
603
|
-
if (cfg.antilink !== undefined) document.getElementById('cfg-antilink').checked = cfg.antilink;
|
|
604
|
-
if (cfg.antibot !== undefined) document.getElementById('cfg-antibot').checked = cfg.antibot;
|
|
605
|
-
if (cfg.antimedia !== undefined) document.getElementById('cfg-antimedia').checked = cfg.antimedia;
|
|
606
|
-
if (cfg.autoread !== undefined) document.getElementById('cfg-autoread').checked = cfg.autoread;
|
|
607
577
|
applyUI(cfg);
|
|
608
578
|
} catch(e) {}
|
|
609
579
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/Utils/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAqB9B,MAAM,OAAO,SAAS;IAclB,YAAY,UAA4B,EAAE;QAblC,QAAG,GAAG,OAAO,EAAE,CAAA;QACf,WAAM,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC/B,OAAE,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAK5B,WAAM,GAAwC,SAAS,CAAA;QACvD,gBAAW,GAAW,GAAG,CAAA;QACzB,cAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,kBAAa,GAAW,CAAC,CAAA;QACzB,gBAAW,GAAW,CAAC,CAAA;QAG3B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAA;QAChC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,0BAA0B,CAAA;QAExD,IAAI,CAAC,KAAK,GAAG;YACT,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,IAAI,SAAS;YACpD,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YAC5E,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE;SACxC,CAAA;QAED,IAAI,CAAC,OAAO,GAAG;YACX,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,KAAK,KAAK;YACnD,YAAY,EAAE,OAAO,CAAC,OAAO,EAAE,YAAY,KAAK,KAAK;YACrD,eAAe,EAAE,OAAO,CAAC,OAAO,EAAE,eAAe,KAAK,KAAK;SAC9D,CAAA;QAED,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,IAAI,CAAC,YAAY,EAAE,CAAA;IACvB,CAAC;IAEO,WAAW;QACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC3B,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/Utils/dashboard.ts"],"names":[],"mappings":"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"}
|