From f68378041f90fe6d1bdc56d2cbadb361d414e688 Mon Sep 17 00:00:00 2001
From: GyDi <segydi@foxmail.com>
Date: Wed, 12 Oct 2022 11:28:47 +0800
Subject: [PATCH] feat: default user agent same with app version

---
 src-tauri/src/data/prfitem.rs          | 4 +++-
 src-tauri/src/utils/dirs.rs            | 6 ++++++
 src/components/profile/info-editor.tsx | 3 ++-
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src-tauri/src/data/prfitem.rs b/src-tauri/src/data/prfitem.rs
index 41be194..8557495 100644
--- a/src-tauri/src/data/prfitem.rs
+++ b/src-tauri/src/data/prfitem.rs
@@ -204,7 +204,9 @@ impl PrfItem {
       builder = builder.no_proxy();
     }
 
-    builder = builder.user_agent(user_agent.unwrap_or("clash-verge/v1.0.0".into()));
+    let version = unsafe { dirs::APP_VERSION };
+    let version = format!("clash-verge/{version}");
+    builder = builder.user_agent(user_agent.unwrap_or(version));
 
     let resp = builder.build()?.get(url).send().await?;
     let header = resp.headers();
diff --git a/src-tauri/src/utils/dirs.rs b/src-tauri/src/utils/dirs.rs
index 3467c34..2bc3cfd 100644
--- a/src-tauri/src/utils/dirs.rs
+++ b/src-tauri/src/utils/dirs.rs
@@ -21,6 +21,8 @@ static mut RESOURCE_DIR: Option<PathBuf> = None;
 #[allow(unused)]
 static mut PORTABLE_FLAG: bool = false;
 
+pub static mut APP_VERSION: &str = "v1.1.1";
+
 /// initialize portable flag
 #[allow(unused)]
 pub unsafe fn init_portable_flag() {
@@ -66,6 +68,10 @@ pub fn app_resources_dir(package_info: &PackageInfo) -> PathBuf {
 
   unsafe {
     RESOURCE_DIR = Some(res_dir.clone());
+
+    let ver = &package_info.version;
+    let ver_str = format!("v{}.{}.{}", ver.major, ver.minor, ver.patch);
+    APP_VERSION = Box::leak(Box::new(ver_str));
   }
 
   res_dir
diff --git a/src/components/profile/info-editor.tsx b/src/components/profile/info-editor.tsx
index 2bb2c1d..2f9a107 100644
--- a/src/components/profile/info-editor.tsx
+++ b/src/components/profile/info-editor.tsx
@@ -13,6 +13,7 @@ import {
 } from "@mui/material";
 import { Settings } from "@mui/icons-material";
 import { patchProfile } from "@/services/cmds";
+import { version } from "@root/package.json";
 import Notice from "../base/base-notice";
 
 interface Props {
@@ -119,7 +120,7 @@ const InfoEditor = (props: Props) => {
             {...textFieldProps}
             label="User Agent"
             value={option.user_agent}
-            placeholder="clash-verge/v1.0.0"
+            placeholder={`clash-verge/v${version}`}
             onChange={(e) => setOption({ user_agent: e.target.value })}
             onKeyDown={(e) => e.key === "Enter" && onUpdate()}
           />
-- 
GitLab