自定义源新增更新弹窗方法

This commit is contained in:
lyswhut
2022-02-16 18:32:55 +08:00
parent a7e3c1a0c4
commit 3534dd27dc
19 changed files with 134 additions and 26 deletions
@@ -41,6 +41,7 @@ export default {
default: false,
},
},
emits: ['update:modelValue', 'change'],
data() {
return {
bool: false,
+14 -3
View File
@@ -1,18 +1,21 @@
import { onBeforeUnmount } from '@renderer/utils/vueTools'
import { onUserApiStatus, setUserApi, getUserApiList, userApiRequest, userApiRequestCancel } from '@renderer/utils/tools'
import { onBeforeUnmount, useI18n } from '@renderer/utils/vueTools'
import { onUserApiStatus, setUserApi, getUserApiList, userApiRequest, userApiRequestCancel, onShowUserApiUpdateAlert } from '@renderer/utils/tools'
import apiSourceInfo from '@renderer/utils/music/api-source-info'
import music from '@renderer/utils/music'
import { apiSource, qualityList, userApi } from '@renderer/core/share'
import { dialog } from '@renderer/plugins/Dialog'
export default ({ setting }) => {
const { t } = useI18n()
if (/^user_api/.test(setting.value.apiSource)) {
setUserApi(setting.value.apiSource)
} else {
qualityList.value = music.supportQuality[setting.value.apiSource]
}
const rUserApiStatus = onUserApiStatus(({ status, message, apiInfo }) => {
const rUserApiStatus = onUserApiStatus((event, { status, message, apiInfo }) => {
userApi.status = status
userApi.message = message
@@ -66,8 +69,16 @@ export default ({ setting }) => {
}
})
const rUserApiShowUpdateAlert = onShowUserApiUpdateAlert((event, { name, message }) => {
dialog({
message: `${t('user_api__update_alert', { name })}\n${message}`,
confirmButtonText: t('ok'),
})
})
onBeforeUnmount(() => {
rUserApiStatus()
rUserApiShowUpdateAlert()
})
return () => {
+13 -2
View File
@@ -13,6 +13,17 @@ export const setUserApi = source => {
})
}
export const onShowUserApiUpdateAlert = callback => {
rendererOn(NAMES.mainWindow.user_api_show_update_alert, callback)
return () => {
rendererOff(callback)
}
}
export const setAllowShowUserApiUpdateAlert = (id, enable) => {
return rendererInvoke(NAMES.mainWindow.user_api_set_allow_update_alert, { id, enable })
}
export const saveMyList = data => {
rendererSend(NAMES.mainWindow.save_playlist, {
type: 'myList',
@@ -105,7 +116,7 @@ export const getSearchHistoryList = () => {
}
export const onUserApiStatus = callback => {
rendererOn(NAMES.mainWindow.user_api_status, (event, { status, message, apiInfo }) => callback({ status, message, apiInfo }))
rendererOn(NAMES.mainWindow.user_api_status, callback)
return () => {
rendererOff(callback)
}
@@ -133,7 +144,7 @@ export const setDesktopLyricInfo = (type, data, info) => {
})
}
export const onGetDesktopLyricInfo = callback => {
rendererOn(NAMES.mainWindow.get_lyric_info, (event, info) => callback(event, info))
rendererOn(NAMES.mainWindow.get_lyric_info, callback)
return () => {
rendererOff(callback)
}
@@ -7,6 +7,8 @@ material-modal(:show="modelValue" bg-close @close="handleClose" teleport="#view"
div(:class="$style.listLeft")
h3 {{api.name}}
p {{api.description}}
div
base-checkbox(:class="$style.checkbox" :id="`user_api_${api.id}`" v-model="api.allowShowUpdateAlert" @change="handleChangeAllowUpdateAlert(api, $event)" :label="$t('user_api__allow_show_update_alert')")
base-btn(:class="$style.listBtn" outline :tips="$t('user_api__btn_remove')" @click.stop="handleRemove(index)")
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' viewBox='0 0 212.982 212.982' space='preserve' v-once)
use(xlink:href='#icon-delete')
@@ -29,6 +31,7 @@ import { promises as fsPromises } from 'fs'
import { selectDir, openUrl } from '@renderer/utils'
import apiSourceInfo from '@renderer/utils/music/api-source-info'
import { userApi, apiSource } from '@renderer/core/share'
import { setAllowShowUserApiUpdateAlert } from '@renderer/utils/tools'
export default {
props: {
@@ -84,6 +87,9 @@ export default {
handleOpenUrl(url) {
openUrl(url)
},
handleChangeAllowUpdateAlert(api, enable) {
setAllowShowUserApiUpdateAlert(api.id, enable)
},
},
}
</script>
@@ -114,6 +120,12 @@ export default {
color: @color-theme;
}
.checkbox {
margin-top: 3px;
font-size: 14px;
opacity: .86;
}
.content {
flex: auto;
min-height: 100px;