Преглед изворни кода

vs code没有国内镜像可用

黄中银 пре 2 недеља
родитељ
комит
edeab16626

+ 0 - 9
shared/types.ts

@@ -112,7 +112,6 @@ export interface LogEntry {
 
 export type GitMirrorType = 'huaweicloud' | 'github'
 export type NodejsMirrorType = 'huaweicloud' | 'official'
-export type VscodeMirrorType = 'official' | 'azure-china'
 
 export interface GitMirrorConfig {
   mirror: GitMirrorType
@@ -122,10 +121,6 @@ export interface NodejsMirrorConfig {
   mirror: NodejsMirrorType
 }
 
-export interface VscodeMirrorConfig {
-  mirror: VscodeMirrorType
-}
-
 // ==================== 自动更新 ====================
 
 export type UpdateStatus =
@@ -182,10 +177,6 @@ export interface ElectronAPI {
   setNodejsMirror: (mirror: NodejsMirrorType) => Promise<void>
   getNodejsMirrorConfig: () => Promise<NodejsMirrorConfig>
 
-  // VS Code 镜像配置
-  setVscodeMirror: (mirror: VscodeMirrorType) => Promise<void>
-  getVscodeMirrorConfig: () => Promise<VscodeMirrorConfig>
-
   // 历史和日志
   getInstallHistory: (limit?: number) => Promise<InstallHistoryItem[]>
   getLogs: () => Promise<LogEntry[]>

+ 0 - 34
src-tauri/src/commands/config.rs

@@ -12,10 +12,6 @@ pub struct NodejsMirrorConfig {
     pub mirror: String, // "huaweicloud" | "official"
 }
 
-#[derive(Serialize, Deserialize, Clone)]
-pub struct VscodeMirrorConfig {
-    pub mirror: String, // "official" | "azure-china"
-}
 
 fn get_config_dir() -> PathBuf {
     dirs::config_dir()
@@ -97,33 +93,3 @@ pub async fn set_nodejs_mirror(mirror: String) -> Result<(), String> {
     Ok(())
 }
 
-/// 获取 VS Code 镜像配置
-#[tauri::command]
-pub async fn get_vscode_mirror_config() -> VscodeMirrorConfig {
-    let path = get_config_path("vscode-mirror");
-
-    if let Ok(content) = fs::read_to_string(&path) {
-        if let Ok(config) = serde_json::from_str(&content) {
-            return config;
-        }
-    }
-
-    // 默认配置:Azure 中国 CDN
-    VscodeMirrorConfig {
-        mirror: "azure-china".to_string(),
-    }
-}
-
-/// 设置 VS Code 镜像
-#[tauri::command]
-pub async fn set_vscode_mirror(mirror: String) -> Result<(), String> {
-    let _ = ensure_config_dir().map_err(|e| e.to_string())?;
-    let path = get_config_path("vscode-mirror");
-
-    let config = VscodeMirrorConfig { mirror };
-    let content = serde_json::to_string_pretty(&config).map_err(|e| e.to_string())?;
-
-    fs::write(&path, content).map_err(|e| e.to_string())?;
-
-    Ok(())
-}

+ 3 - 39
src-tauri/src/commands/install.rs

@@ -1,5 +1,5 @@
 use crate::commands::AppState;
-use crate::commands::config::{get_git_mirror_config, get_nodejs_mirror_config, get_vscode_mirror_config};
+use crate::commands::config::{get_git_mirror_config, get_nodejs_mirror_config};
 use crate::utils::shell::{run_program, run_shell_hidden, CommandOptions};
 use futures::StreamExt;
 use serde::{Deserialize, Serialize};
@@ -543,10 +543,6 @@ where
             "software": "VS Code"
         })));
 
-        // 获取镜像配置
-        let mirror_config = get_vscode_mirror_config().await;
-        let mirror = mirror_config.mirror.as_str();
-
         let client = reqwest::Client::new();
 
         // 从官方 API 获取下载地址
@@ -559,24 +555,10 @@ where
 
         let update_info: serde_json::Value = update_response.json().await.map_err(|e| e.to_string())?;
 
-        let official_url = update_info.get("url")
+        let download_url = update_info.get("url")
             .and_then(|v| v.as_str())
             .ok_or("Failed to get VS Code download URL")?;
 
-        // 根据镜像配置决定下载地址
-        let download_url: String = if mirror == "azure-china" {
-            // 国内镜像:将官方下载地址中的域名替换为 vscode.cdn.azure.cn
-            if let Ok(mut url) = reqwest::Url::parse(official_url) {
-                let _ = url.set_host(Some("vscode.cdn.azure.cn"));
-                url.to_string()
-            } else {
-                official_url.to_string()
-            }
-        } else {
-            // 官方源:直接使用官方 API 返回的下载地址
-            official_url.to_string()
-        };
-
         let temp_dir = std::env::temp_dir();
         let exe_path = temp_dir.join("VSCodeSetup.exe");
 
@@ -659,10 +641,6 @@ where
             "software": "VS Code"
         })));
 
-        // 获取镜像配置
-        let mirror_config = get_vscode_mirror_config().await;
-        let mirror = mirror_config.mirror.as_str();
-
         let client = reqwest::Client::new();
 
         // 从官方 API 获取下载地址
@@ -675,24 +653,10 @@ where
 
         let update_info: serde_json::Value = update_response.json().await.map_err(|e| e.to_string())?;
 
-        let official_url = update_info.get("url")
+        let download_url = update_info.get("url")
             .and_then(|v| v.as_str())
             .ok_or("Failed to get VS Code download URL")?;
 
-        // 根据镜像配置决定下载地址
-        let download_url: String = if mirror == "azure-china" {
-            // 国内镜像:将官方下载地址中的域名替换为 vscode.cdn.azure.cn
-            if let Ok(mut url) = reqwest::Url::parse(official_url) {
-                let _ = url.set_host(Some("vscode.cdn.azure.cn"));
-                url.to_string()
-            } else {
-                official_url.to_string()
-            }
-        } else {
-            // 官方源:直接使用官方 API 返回的下载地址
-            official_url.to_string()
-        };
-
         let temp_dir = std::env::temp_dir();
         let deb_path = temp_dir.join("code.deb");
 

+ 0 - 2
src-tauri/src/lib.rs

@@ -70,8 +70,6 @@ pub fn run() {
             commands::config::set_git_mirror,
             commands::config::get_nodejs_mirror_config,
             commands::config::set_nodejs_mirror,
-            commands::config::get_vscode_mirror_config,
-            commands::config::set_vscode_mirror,
             // 日志和历史
             commands::logs::get_logs,
             commands::logs::write_install_log,

+ 0 - 12
src/api/tauri.ts

@@ -36,8 +36,6 @@ import type {
   GitMirrorConfig,
   NodejsMirrorType,
   NodejsMirrorConfig,
-  VscodeMirrorType,
-  VscodeMirrorConfig,
   InstallHistoryItem,
   LogEntry,
   UpdateResult,
@@ -126,16 +124,6 @@ export const tauriAPI = {
     return await invoke('get_nodejs_mirror_config')
   },
 
-  // ==================== VS Code 镜像配置 ====================
-
-  async setVscodeMirror(mirror: VscodeMirrorType): Promise<void> {
-    await invoke('set_vscode_mirror', { mirror })
-  },
-
-  async getVscodeMirrorConfig(): Promise<VscodeMirrorConfig> {
-    return await invoke('get_vscode_mirror_config')
-  },
-
   // ==================== 历史和日志 ====================
 
   async getInstallHistory(limit?: number): Promise<InstallHistoryItem[]> {

+ 1 - 29
src/components/common/MirrorSelector.vue

@@ -3,7 +3,7 @@ import { useI18n } from 'vue-i18n'
 import { useSettingsStore } from '@/stores/settings'
 import { useVersionsStore } from '@/stores/versions'
 import SoftwareIcon from './SoftwareIcon.vue'
-import type { GitMirrorType, NodejsMirrorType, VscodeMirrorType } from '@/types/electron'
+import type { GitMirrorType, NodejsMirrorType } from '@/types/electron'
 
 const { t } = useI18n()
 const settingsStore = useSettingsStore()
@@ -19,11 +19,6 @@ const nodejsMirrorOptions: { value: NodejsMirrorType; label: string }[] = [
   { value: 'official', label: 'software.nodejs.mirrorOfficial' }
 ]
 
-const vscodeMirrorOptions: { value: VscodeMirrorType; label: string }[] = [
-  { value: 'azure-china', label: 'software.vscode.mirrorAzureChina' },
-  { value: 'official', label: 'software.vscode.mirrorOfficial' }
-]
-
 async function handleGitMirrorChange(mirror: GitMirrorType) {
   await settingsStore.setGitMirror(mirror)
   // 加载该镜像源的版本列表(有缓存则使用缓存)
@@ -35,12 +30,6 @@ async function handleNodejsMirrorChange(mirror: NodejsMirrorType) {
   // 加载该镜像源的版本列表(有缓存则使用缓存)
   versionsStore.loadVersionForSoftware('nodejs')
 }
-
-async function handleVscodeMirrorChange(mirror: VscodeMirrorType) {
-  await settingsStore.setVscodeMirror(mirror)
-  // 加载该镜像源的版本列表(有缓存则使用缓存)
-  versionsStore.loadVersionForSoftware('vscode')
-}
 </script>
 
 <template>
@@ -79,23 +68,6 @@ async function handleVscodeMirrorChange(mirror: VscodeMirrorType) {
         />
       </el-select>
     </div>
-    <div class="mirror-wrapper">
-      <SoftwareIcon software="vscode" :size="16" />
-      <span class="mirror-label">{{ t('software.vscode.mirror') }}:</span>
-      <el-select
-        :model-value="settingsStore.vscodeMirror"
-        @change="(val: VscodeMirrorType) => handleVscodeMirrorChange(val)"
-        class="mirror-select"
-        size="small"
-      >
-        <el-option
-          v-for="opt in vscodeMirrorOptions"
-          :key="opt.value"
-          :value="opt.value"
-          :label="t(opt.label)"
-        />
-      </el-select>
-    </div>
   </div>
 </template>
 

+ 1 - 28
src/stores/settings.ts

@@ -3,7 +3,7 @@
 import { defineStore } from 'pinia'
 import { ref } from 'vue'
 import { setLocale, getLocale, type LocaleType } from '@/i18n'
-import type { GitMirrorType, NodejsMirrorType, VscodeMirrorType } from '@/types/electron'
+import type { GitMirrorType, NodejsMirrorType } from '@/types/electron'
 
 type ThemeType = 'light' | 'dark' | 'system'
 
@@ -20,9 +20,6 @@ export const useSettingsStore = defineStore('settings', () => {
   // Node.js 镜像设置
   const nodejsMirror = ref<NodejsMirrorType>('huaweicloud')
 
-  // VS Code 镜像设置
-  const vscodeMirror = ref<VscodeMirrorType>('azure-china')
-
   // 初始化设置
   async function initSettings(): Promise<void> {
     // 加载主题设置
@@ -49,22 +46,6 @@ export const useSettingsStore = defineStore('settings', () => {
     } catch {
       // 使用默认值
     }
-
-    // 加载 VS Code 镜像配置
-    try {
-      const config = await window.electronAPI.getVscodeMirrorConfig()
-      // 验证值是否有效,VS Code 只支持 'azure-china' 和 'official'
-      const validMirrors: VscodeMirrorType[] = ['azure-china', 'official']
-      if (validMirrors.includes(config.mirror as VscodeMirrorType)) {
-        vscodeMirror.value = config.mirror
-      } else {
-        // 无效值,使用默认值并更新配置
-        vscodeMirror.value = 'azure-china'
-        await window.electronAPI.setVscodeMirror('azure-china')
-      }
-    } catch {
-      // 使用默认值
-    }
   }
 
   // 应用主题
@@ -105,12 +86,6 @@ export const useSettingsStore = defineStore('settings', () => {
     await window.electronAPI.setNodejsMirror(newMirror)
   }
 
-  // 设置 VS Code 镜像
-  async function setVscodeMirror(newMirror: VscodeMirrorType): Promise<void> {
-    vscodeMirror.value = newMirror
-    await window.electronAPI.setVscodeMirror(newMirror)
-  }
-
   // 监听系统主题变化
   function watchSystemTheme(): void {
     const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')
@@ -126,13 +101,11 @@ export const useSettingsStore = defineStore('settings', () => {
     locale,
     gitMirror,
     nodejsMirror,
-    vscodeMirror,
     initSettings,
     setTheme,
     setLanguage,
     setGitMirror,
     setNodejsMirror,
-    setVscodeMirror,
     watchSystemTheme
   }
 })

+ 1 - 1
src/stores/versions.ts

@@ -79,7 +79,7 @@ export const useVersionsStore = defineStore('versions', () => {
       case 'nodejs':
         return settingsStore.nodejsMirror
       case 'vscode':
-        return settingsStore.vscodeMirror
+        return 'official' // VS Code 只使用官方源
       case 'git':
         return settingsStore.gitMirror
     }