mirror of
https://github.com/algerkong/AlgerMusicPlayer.git
synced 2026-05-17 10:27:30 +08:00
✨ feat: 优化打包和版本更新功能
This commit is contained in:
@@ -99,46 +99,4 @@ export const isMobile = computed(() => {
|
||||
return !!flag;
|
||||
});
|
||||
|
||||
export const isElectron = (window as any).electron !== undefined;
|
||||
|
||||
/**
|
||||
* 检查版本更新
|
||||
* @returns {Promise<{hasUpdate: boolean, latestVersion: string, currentVersion: string}>}
|
||||
*/
|
||||
export const checkUpdate = async () => {
|
||||
try {
|
||||
const response = await axios.get('https://api.github.com/repos/algerkong/AlgerMusicPlayer/releases/latest');
|
||||
const latestVersion = response.data.tag_name.replace('v', '');
|
||||
const currentVersion = config.version;
|
||||
console.log(latestVersion, currentVersion);
|
||||
|
||||
// 版本号比较
|
||||
const latest = latestVersion.split('.').map(Number);
|
||||
const current = currentVersion.split('.').map(Number);
|
||||
|
||||
let hasUpdate = false;
|
||||
for (let i = 0; i < 3; i++) {
|
||||
if (latest[i] > current[i]) {
|
||||
hasUpdate = true;
|
||||
break;
|
||||
} else if (latest[i] < current[i]) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
hasUpdate,
|
||||
latestVersion,
|
||||
currentVersion,
|
||||
releaseInfo: response.data
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('检查更新失败:', error);
|
||||
return {
|
||||
hasUpdate: false,
|
||||
latestVersion: '',
|
||||
currentVersion: config.version,
|
||||
releaseInfo: null
|
||||
};
|
||||
}
|
||||
};
|
||||
export const isElectron = (window as any).electron !== undefined;
|
||||
@@ -0,0 +1,91 @@
|
||||
import axios from 'axios';
|
||||
import config from '../../../package.json';
|
||||
import { useDateFormat } from '@vueuse/core';
|
||||
|
||||
interface GithubReleaseInfo {
|
||||
tag_name: string;
|
||||
body: string;
|
||||
published_at: string;
|
||||
html_url: string;
|
||||
assets: Array<{
|
||||
browser_download_url: string;
|
||||
name: string;
|
||||
size: number;
|
||||
}>;
|
||||
}
|
||||
|
||||
export interface UpdateResult {
|
||||
hasUpdate: boolean;
|
||||
latestVersion: string;
|
||||
currentVersion: string;
|
||||
releaseInfo: {
|
||||
tag_name: string;
|
||||
body: string;
|
||||
html_url: string;
|
||||
assets: Array<{
|
||||
browser_download_url: string;
|
||||
name: string;
|
||||
}>;
|
||||
} | null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 GitHub 最新发布版本信息
|
||||
*/
|
||||
export const getLatestReleaseInfo = async (): Promise<GithubReleaseInfo | null> => {
|
||||
try {
|
||||
const response = await axios.get(
|
||||
'https://api.github.com/repos/algerkong/AlgerMusicPlayer/releases/latest'
|
||||
);
|
||||
|
||||
if (response.data) {
|
||||
return response.data;
|
||||
}
|
||||
return null;
|
||||
} catch (error) {
|
||||
console.error('获取 GitHub Release 信息失败:', error);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 格式化时间
|
||||
*/
|
||||
const formatDate = (dateStr: string): string => {
|
||||
return useDateFormat(new Date(dateStr), 'YYYY-MM-DD HH:mm').value;
|
||||
};
|
||||
|
||||
/**
|
||||
* 检查更新
|
||||
*/
|
||||
export const checkUpdate = async (currentVersion: string = config.version): Promise<UpdateResult | null> => {
|
||||
try {
|
||||
const releaseInfo = await getLatestReleaseInfo();
|
||||
if (!releaseInfo) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const latestVersion = releaseInfo.tag_name.replace('v', '');
|
||||
if (latestVersion === currentVersion) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return {
|
||||
hasUpdate: true,
|
||||
latestVersion,
|
||||
currentVersion,
|
||||
releaseInfo: {
|
||||
tag_name: latestVersion,
|
||||
body: `## 更新内容\n\n- 版本: ${latestVersion}\n- 发布时间: ${formatDate(releaseInfo.published_at)}\n\n${releaseInfo.body}`,
|
||||
html_url: releaseInfo.html_url,
|
||||
assets: releaseInfo.assets.map(asset => ({
|
||||
browser_download_url: asset.browser_download_url,
|
||||
name: asset.name
|
||||
}))
|
||||
}
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('检查更新失败:', error);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user