2
import { Globals, Waits } from '@/globals'
3
import type { NotifyOptions } from '@/plugins/socketClient'
4
import { consola } from 'consola'
5
import type { TimelapseWritableSettings } from '@/store/timelapse/types'
6
import type { WebcamConfig } from '@/store/webcams/types'
8
const baseEmit = (method: string, options: NotifyOptions) => {
10
consola.warn('Socket emit denied, socket not ready.', method, options)
13
Vue.$socket.emit(method, options)
16
export const SocketActions = {
17
async machineServicesRestart (service: string) {
18
const wait = Waits.onServiceRestart
20
'machine.services.restart', {
28
async machineServicesStart (service: string) {
29
const wait = Waits.onServiceStart
31
'machine.services.start', {
39
async machineServicesStop (service: string) {
40
const wait = Waits.onServiceStop
42
'machine.services.stop', {
50
async machineReboot () {
58
async machineShutdown () {
66
async machineUpdateStatus (refresh = false) {
68
'machine.update.status', {
69
dispatch: 'version/onUpdateStatus',
71
wait: Waits.onVersionRefresh
76
async machineUpdateRefresh (name?: string) {
78
'machine.update.refresh', {
79
dispatch: 'version/onUpdateStatus',
81
wait: Waits.onVersionRefresh
86
async machineUpdateRecover (name: string, hard = false) {
87
const dispatch = name === 'moonraker'
88
? 'version/onUpdatedMoonraker'
90
? 'version/onUpdatedKlipper'
91
: 'version/onUpdatedClient'
93
'machine.update.recover', {
95
params: { name, hard }
100
async machineUpdateMoonraker () {
102
'machine.update.moonraker', {
103
dispatch: 'version/onUpdatedMoonraker'
108
async machineUpdateKlipper () {
110
'machine.update.klipper', {
111
dispatch: 'version/onUpdatedKlipper',
119
async machineUpdateClient (name: string) {
120
const dispatch = name === 'fluidd'
121
? 'version/onUpdatedFluidd'
122
: 'version/onUpdatedClient'
124
'machine.update.client', {
131
async machineUpdateSystem () {
133
'machine.update.system', {
134
dispatch: 'version/onUpdatedSystem'
139
async machineUpdateAll () {
141
'machine.update.full', {
142
dispatch: 'version/onUpdatedAll'
147
async machineProcStats () {
149
'machine.proc_stats', {
150
dispatch: 'server/onMachineProcStats'
155
async machineSystemInfo () {
157
'machine.system_info', {
158
dispatch: 'server/onMachineSystemInfo'
163
async machineDevicePowerDevices () {
165
'machine.device_power.devices', {
166
dispatch: 'power/onInit'
171
async machineDevicePowerStatus (device: string) {
173
'machine.device_power.status', {
174
dispatch: 'power/onStatus',
175
params: { [device]: null }
180
async machineDevicePowerToggle (device: string, state: string, wait?: string) {
181
const emit = (state === 'on')
182
? 'machine.device_power.on'
183
: 'machine.device_power.off'
186
dispatch: 'power/onToggle',
187
params: { [device]: null },
193
async machinePeripheralsUsb () {
195
'machine.peripherals.usb', {
196
dispatch: 'server/onMachinePeripherals',
197
wait: Waits.onMachinePeripheralsUsb
202
async machinePeripheralsSerial () {
204
'machine.peripherals.serial', {
205
dispatch: 'server/onMachinePeripherals',
206
wait: Waits.onMachinePeripheralsSerial
211
async machinePeripheralsVideo () {
213
'machine.peripherals.video', {
214
dispatch: 'server/onMachinePeripherals',
215
wait: Waits.onMachinePeripheralsVideo
220
async machinePeripheralsCanbus (canbusInterface: string) {
221
const wait = `${Waits.onMachinePeripheralsCanbus}/${canbusInterface}`
223
'machine.peripherals.canbus', {
224
dispatch: 'server/onMachinePeripheralsCanbus',
226
interface: canbusInterface
233
async machineTimelapseSetSettings (settings: Partial<TimelapseWritableSettings>, wait?: string) {
235
'machine.timelapse.post_settings', {
236
dispatch: 'timelapse/onSettings',
243
async machineTimelapseSaveFrames (wait?: string) {
245
'machine.timelapse.saveframes', {
251
async machineTimelapseRender () {
252
baseEmit('machine.timelapse.render', {})
255
async printerInfo () {
258
dispatch: 'printer/onPrinterInfo'
263
async printerRestart () {
267
wait: Waits.onKlipperRestart
272
async printerFirmwareRestart () {
274
'printer.firmware_restart', {
276
wait: Waits.onKlipperFirmwareRestart
281
async printerQueryEndstops () {
283
'printer.query_endstops.status', {
284
dispatch: 'printer/onQueryEndstops',
285
wait: Waits.onQueryEndstops
290
async printerObjectsList () {
292
'printer.objects.list', {
293
dispatch: 'printer/onPrinterObjectsList'
298
async printerObjectsSubscribe (objects: {[key: string]: null}) {
300
'printer.objects.subscribe', {
301
dispatch: 'printer/onPrinterObjectsSubscribe',
309
async printerPrintStart (path: string) {
311
'printer.print.start', {
320
async printerPrintCancel () {
322
'printer.print.cancel', {
323
dispatch: 'printer/onPrintCancel',
324
wait: Waits.onPrintCancel
329
async printerPrintPause () {
331
'printer.print.pause', {
332
dispatch: 'printer/onPrintPause',
333
wait: Waits.onPrintPause
338
async printerPrintResume () {
340
'printer.print.resume', {
341
dispatch: 'printer/onPrintResume',
342
wait: Waits.onPrintResume
347
async printerGcodeScript (gcode: string, wait?: string) {
349
'printer.gcode.script', {
350
dispatch: 'console/onGcodeScript',
359
async printerGcodeHelp () {
361
'printer.gcode.help', {
362
dispatch: 'console/onGcodeHelp'
367
async printerEmergencyStop () {
369
'printer.emergency_stop', {
375
async serverInfo () {
378
dispatch: 'server/onServerInfo'
383
async identify (params?: { client_name: string, version: string, type: string, url: string }) {
384
baseEmit('server.connection.identify', {
385
dispatch: 'socket/onConnectionId',
390
async timelapseState () {
392
'machine.timelapse.get_settings', {
393
dispatch: 'timelapse/onSettings'
398
'machine.timelapse.lastframeinfo', {
399
dispatch: 'timelapse/onLastFrame'
404
async serverConfig () {
407
dispatch: 'server/onServerConfig'
415
async serverWrite (key: string, value: unknown, namespace: string = Globals.MOONRAKER_DB.fluidd.NAMESPACE) {
417
'server.database.post_item', {
427
async serverDelete (key: string, namespace: string = Globals.MOONRAKER_DB.fluidd.NAMESPACE) {
429
'server.database.delete_item', {
438
async serverRead (key?: string, namespace: string = Globals.MOONRAKER_DB.fluidd.NAMESPACE) {
440
'server.database.get_item', {
441
dispatch: 'socket/onServerRead',
450
async serverRestart () {
458
async serverTemperatureStore () {
460
'server.temperature_store', {
461
dispatch: 'charts/initTempStore',
463
include_monitors: true
469
async serverGcodeStore () {
471
'server.gcode_store', {
472
dispatch: 'console/onGcodeStore'
477
async serverHistoryList (params?: { start?: number; limit?: number; before?: number; since?: number; order?: string }) {
479
'server.history.list', {
480
dispatch: 'history/onHistoryList',
486
async serverHistoryTotals () {
488
'server.history.totals', {
489
dispatch: 'history/onHistoryTotals'
494
async serverHistoryDeleteJob (uid: string) {
495
const params = uid === 'all'
502
'server.history.delete_job', {
503
dispatch: 'history/onDelete',
509
async serverHistoryResetTotals () {
511
'server.history.reset_totals', {
512
dispatch: 'history/onHistoryChange'
517
async serverJobQueueStatus () {
519
'server.job_queue.status', {
520
dispatch: 'jobQueue/onJobQueueStatus',
521
wait: Waits.onJobQueue
526
async serverJobQueuePostJob (filenames: string[], reset?: boolean) {
528
'server.job_queue.post_job', {
529
dispatch: 'jobQueue/onJobQueueStatus',
534
wait: Waits.onJobQueue
539
async serverJobQueueDeleteJobs (jobIds: string[]) {
540
const params = jobIds.length > 0 && jobIds[0] === 'all'
542
: { job_ids: jobIds }
545
'server.job_queue.delete_job', {
546
dispatch: 'jobQueue/onJobQueueStatus',
548
wait: Waits.onJobQueue
553
async serverJobQueuePause () {
555
'server.job_queue.pause', {
556
dispatch: 'jobQueue/onJobQueueStatus',
557
wait: Waits.onJobQueue
562
async serverJobQueueStart () {
564
'server.job_queue.start', {
565
dispatch: 'jobQueue/onJobQueueStatus',
566
wait: Waits.onJobQueue
576
async serverFilesMetadata (filepath: string) {
578
'server.files.metadata', {
579
dispatch: 'files/onFileMetaData',
580
params: { filename: filepath }
585
async serverFilesMetascan (filepath: string) {
587
'server.files.metascan', {
588
dispatch: 'files/onFileMetaData',
589
params: { filename: filepath }
598
async serverFilesGetDirectory (root: string, path: string) {
599
const wait = `${Waits.onFileSystem}/${root}/${path}/`
601
'server.files.get_directory',
603
dispatch: 'files/onServerFilesGetDirectory',
605
params: { root, path, extended: true }
610
async serverFilesListRoot (root: string) {
611
const wait = `${Waits.onFileSystem}/${root}/`
615
dispatch: 'files/onServerFilesListRoot',
622
async serverFilesMove (source: string, dest: string) {
623
const wait = `${Waits.onFileSystem}/${source}/`
625
'server.files.move', {
636
async serverFilesCopy (source: string, dest: string) {
637
const wait = `${Waits.onFileSystem}/${source}/`
639
'server.files.copy', {
650
async serverFilesZip (dest: string, items: string[], store_only?: boolean) {
651
const wait = `${Waits.onFileSystem}/${dest}/`
653
'server.files.zip', {
669
async serverFilesPostDirectory (path: string) {
670
const wait = `${Waits.onFileSystem}/${path}/`
672
'server.files.post_directory', {
682
async serverFilesDeleteFile (path: string) {
683
const wait = `${Waits.onFileSystem}/${path}/`
685
'server.files.delete_file', {
695
async serverFilesDeleteDirectory (path: string, force = false) {
696
const wait = `${Waits.onFileSystem}/${path}/`
698
'server.files.delete_directory', {
709
async serverAnnouncementsList () {
711
'server.announcements.list', {
712
dispatch: 'announcements/onAnnouncementsList'
717
async serverAnnouncementsDismiss (entry_id: string, wake_time?: number) {
719
'server.announcements.dismiss', {
729
async serverLogsRollover (application?: string) {
731
'server.logs.rollover', {
732
dispatch: 'server/onLogsRollOver',
740
async serverWebcamsList () {
742
'server.webcams.list', {
743
dispatch: 'webcams/onWebcamsList'
748
async serverWebcamsWrite (webcam: WebcamConfig) {
750
'server.webcams.post_item', {
756
async serverWebcamsDelete (uid: string) {
758
'server.webcams.delete_item', {
766
async serverSensorsList () {
768
'server.sensors.list', {
769
dispatch: 'sensors/onSensorsList'
774
async serverSpoolmanGetSpoolId () {
776
'server.spoolman.get_spool_id', {
777
dispatch: 'spoolman/onActiveSpool'
782
async serverSpoolmanPostSpoolId (spoolId: number | undefined) {
784
'server.spoolman.post_spool_id', {
785
params: { spool_id: spoolId },
786
dispatch: 'spoolman/onActiveSpool'
791
async serverSpoolmanProxyGetAvailableSpools () {
793
'server.spoolman.proxy', {
795
request_method: 'GET',
797
use_v2_response: true
799
dispatch: 'spoolman/onAvailableSpools'