lx-music-desktop/src/renderer/core/useApp/useSync.ts

84 lines
2.7 KiB
TypeScript

import { markRaw, onBeforeUnmount } from '@common/utils/vueTools'
import { onSyncAction, sendSyncAction } from '@renderer/utils/ipc'
import { sync } from '@renderer/store'
import { appSetting } from '@renderer/store/setting'
import { SYNC_CODE } from '@common/constants_sync'
export default () => {
const handleSyncList = (event: LX.Sync.SyncMainWindowActions) => {
// console.log(event)
switch (event.action) {
case 'select_mode':
sync.deviceName = event.data.deviceName
sync.type = event.data.type
sync.isShowSyncMode = true
break
case 'close_select_mode':
sync.isShowSyncMode = false
break
case 'server_status':
sync.server.status.status = event.data.status
sync.server.status.message = event.data.message
sync.server.status.address = markRaw(event.data.address)
sync.server.status.code = event.data.code
sync.server.status.devices = markRaw(event.data.devices)
break
case 'client_status':
sync.client.status.status = event.data.status
sync.client.status.message = event.data.message
sync.client.status.address = markRaw(event.data.address)
if (event.data.message == SYNC_CODE.missingAuthCode || event.data.message == SYNC_CODE.authFailed) {
if (!sync.isShowAuthCodeModal) sync.isShowAuthCodeModal = true
} else if (sync.isShowAuthCodeModal) sync.isShowAuthCodeModal = false
break
}
}
const rSyncAction = onSyncAction(({ params }) => {
handleSyncList(params)
})
onBeforeUnmount(() => {
rSyncAction()
})
return async() => {
sync.enable = appSetting['sync.enable']
sync.mode = appSetting['sync.mode']
sync.server.port = appSetting['sync.server.port']
sync.client.host = appSetting['sync.client.host']
if (appSetting['sync.enable']) {
switch (appSetting['sync.mode']) {
case 'server':
if (appSetting['sync.server.port']) {
void sendSyncAction({
action: 'enable_server',
data: {
enable: appSetting['sync.enable'],
port: appSetting['sync.server.port'],
},
}).catch(err => {
console.log(err)
})
}
break
case 'client':
if (appSetting['sync.client.host']) {
void sendSyncAction({
action: 'enable_client',
data: {
enable: appSetting['sync.enable'],
host: appSetting['sync.client.host'],
},
}).catch(err => {
console.log(err)
})
}
break
default:
break
}
}
}
}