mirror of
https://github.com/langgenius/dify.git
synced 2026-04-29 04:26:30 +08:00
fix: refactor GitHub releases fetching to improve error handling and format response
This commit is contained in:
parent
44b0039e8b
commit
0ac5e53c2e
@ -4,32 +4,33 @@ import { compareVersion, getLatestVersion } from '@/utils/semver'
|
|||||||
import type { GitHubRepoReleaseResponse } from '../types'
|
import type { GitHubRepoReleaseResponse } from '../types'
|
||||||
import { GITHUB_ACCESS_TOKEN } from '@/config'
|
import { GITHUB_ACCESS_TOKEN } from '@/config'
|
||||||
|
|
||||||
|
const formatReleases = (releases: any) => {
|
||||||
|
return releases.map((release: any) => ({
|
||||||
|
tag_name: release.tag_name,
|
||||||
|
assets: release.assets.map((asset: any) => ({
|
||||||
|
browser_download_url: asset.browser_download_url,
|
||||||
|
name: asset.name,
|
||||||
|
})),
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
export const useGitHubReleases = () => {
|
export const useGitHubReleases = () => {
|
||||||
const fetchReleases = async (owner: string, repo: string) => {
|
const fetchReleases = async (owner: string, repo: string) => {
|
||||||
try {
|
try {
|
||||||
let res, bodyJson
|
|
||||||
if (!GITHUB_ACCESS_TOKEN) {
|
if (!GITHUB_ACCESS_TOKEN) {
|
||||||
// Fetch releases without authentication from client
|
// Fetch releases without authentication from client
|
||||||
res = await fetch(`https://api.github.com/repos/${owner}/${repo}/releases`)
|
const res = await fetch(`https://api.github.com/repos/${owner}/${repo}/releases`)
|
||||||
if (!res.ok) throw new Error('Failed to fetch releases')
|
if (!res.ok) throw new Error('Failed to fetch repository releases')
|
||||||
bodyJson = await res.json()
|
const data = await res.json()
|
||||||
|
return formatReleases(data)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Fetch releases with authentication from server
|
// Fetch releases with authentication from server
|
||||||
res = await fetch(`/repos/${owner}/${repo}/releases`)
|
const res = await fetch(`/repos/${owner}/${repo}/releases`)
|
||||||
bodyJson = await res.json()
|
const bodyJson = await res.json()
|
||||||
if (bodyJson.status !== 200) throw new Error(bodyJson.data.message)
|
if (bodyJson.status !== 200) throw new Error(bodyJson.data.message)
|
||||||
|
return formatReleases(bodyJson.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
const formattedReleases = bodyJson.data.map((release: any) => ({
|
|
||||||
tag_name: release.tag_name,
|
|
||||||
assets: release.assets.map((asset: any) => ({
|
|
||||||
browser_download_url: asset.browser_download_url,
|
|
||||||
name: asset.name,
|
|
||||||
})),
|
|
||||||
}))
|
|
||||||
|
|
||||||
return formattedReleases
|
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
if (error instanceof Error) {
|
if (error instanceof Error) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user