@@ -11,6 +11,7 @@ use std::fs;
1111use std:: time:: Duration ;
1212use tauri:: State ;
1313use tauri:: Manager ;
14+ use tauri:: Emitter ;
1415use tracing:: error;
1516use tokio;
1617
@@ -123,6 +124,21 @@ pub async fn reset_machine_id(
123124 }
124125 } ;
125126
127+ // 在这里调用新的清理函数
128+ if let Err ( cleanup_err) = cleanup_database_entries ( db. clone ( ) ) . await {
129+ error ! ( target: "reset" , "数据库清理步骤失败: {}" , cleanup_err) ;
130+ ErrorReporter :: report_error (
131+ client. clone ( ) ,
132+ "reset_machine_id_cleanup_step" ,
133+ & cleanup_err,
134+ None ,
135+ Some ( "medium" . to_string ( ) ) ,
136+ )
137+ . await ;
138+ return Err ( format ! ( "数据库清理失败: {}" , cleanup_err) ) ;
139+ }
140+ error ! ( target: "reset" , "数据库清理步骤完成" ) ;
141+
126142 let new_ids = if let Some ( id) = machine_id {
127143 // 生成随机 ID
128144 let mut ids = generate_new_ids ( ) ;
@@ -266,6 +282,10 @@ pub async fn reset_machine_id(
266282 ( "mac_id" , new_ids. get( "telemetry.macMachineId" ) . unwrap( ) ) ,
267283 ( "machineId" , new_ids. get( "telemetry.machineId" ) . unwrap( ) ) ,
268284 ( "sqm_id" , new_ids. get( "telemetry.sqmId" ) . unwrap( ) ) ,
285+ (
286+ "storage.serviceMachineId" ,
287+ new_ids. get( "telemetry.devDeviceId" ) . unwrap( ) ,
288+ ) ,
269289 ] ;
270290
271291 if let Err ( e) = update_database ( & paths. db , & updates) {
@@ -964,4 +984,105 @@ pub fn get_running_cursor_path() -> Result<String, String> {
964984 error ! ( target: "cursor" , "{}" , err_msg) ;
965985 return Err ( err_msg) ;
966986 }
987+ }
988+
989+ #[ tauri:: command]
990+ pub async fn refresh_inbound ( app_handle : tauri:: AppHandle ) -> Result < bool , String > {
991+ error ! ( target: "inbound" , "手动触发线路刷新" ) ;
992+
993+ // 重新获取线路配置并测速
994+ match crate :: api:: inbound:: init_inbound_config ( & app_handle) . await {
995+ Ok ( _) => {
996+ error ! ( target: "inbound" , "线路刷新成功完成" ) ;
997+ // 通知前端刷新完成
998+ if let Some ( window) = app_handle. get_webview_window ( "main" ) {
999+ if let Err ( e) = window. emit ( "inbound-refreshed" , ( ) ) {
1000+ error ! ( target: "inbound" , "发送线路刷新事件失败: {}" , e) ;
1001+ }
1002+ } else {
1003+ error ! ( target: "inbound" , "无法获取主窗口实例" ) ;
1004+ }
1005+ Ok ( true )
1006+ } ,
1007+ Err ( e) => {
1008+ error ! ( target: "inbound" , "线路刷新失败: {}" , e) ;
1009+ Err ( format ! ( "线路刷新失败: {}" , e) )
1010+ }
1011+ }
1012+ }
1013+
1014+ #[ tauri:: command]
1015+ pub async fn cleanup_database_entries (
1016+ db_state : State < ' _ , Database > ,
1017+ ) -> Result < ( ) , String > {
1018+ error ! ( target: "database_cleanup" , "开始清理数据库条目" ) ;
1019+
1020+ // 从 db_state 创建 AppPaths 实例
1021+ let app_paths = match AppPaths :: new_with_db ( Some ( & db_state) ) {
1022+ Ok ( p) => p,
1023+ Err ( e) => {
1024+ let err_msg = format ! ( "获取应用路径失败: {}" , e) ;
1025+ error ! ( target: "database_cleanup" , "{}" , err_msg) ;
1026+ return Err ( err_msg) ;
1027+ }
1028+ } ;
1029+
1030+ let db_path = & app_paths. db ;
1031+
1032+ if !db_path. exists ( ) {
1033+ let err_msg = "数据库文件不存在,跳过清理" . to_string ( ) ;
1034+ error ! ( target: "database_cleanup" , "{}" , err_msg) ;
1035+ return Err ( err_msg) ;
1036+ }
1037+
1038+ let conn = match Connection :: open ( db_path) {
1039+ Ok ( c) => c,
1040+ Err ( e) => {
1041+ let err_msg = format ! ( "打开数据库失败: {}" , e) ;
1042+ error ! ( target: "database_cleanup" , "{}" , err_msg) ;
1043+ return Err ( err_msg) ;
1044+ }
1045+ } ;
1046+
1047+ let keys_to_delete = vec ! [
1048+ "src.vs.platform.reactivestorage.browser.reactiveStorageServiceImpl.persistentStorage.applicationUser" ,
1049+ "workbench.auxiliarybar.pinnedPanels" ,
1050+ "memento/mainThreadCustomEditors.origins" ,
1051+ ] ;
1052+
1053+ for key in keys_to_delete {
1054+ match conn. execute ( "DELETE FROM ItemTable WHERE key = ?1" , [ key] ) {
1055+ Ok ( rows_affected) => {
1056+ if rows_affected > 0 {
1057+ error ! ( target: "database_cleanup" , "成功删除键: {}" , key) ;
1058+ } else {
1059+ error ! ( target: "database_cleanup" , "键不存在或删除失败: {}" , key) ;
1060+ }
1061+ }
1062+ Err ( e) => {
1063+ let err_msg = format ! ( "删除键 {} 失败: {}" , key, e) ;
1064+ error ! ( target: "database_cleanup" , "{}" , err_msg) ;
1065+ //可以选择在这里返回错误,或者继续尝试删除其他键
1066+ }
1067+ }
1068+ }
1069+
1070+ let key_to_upsert = "cursorAuth/stripeMembershipType" ;
1071+ let value_to_upsert = "free_trial" ;
1072+ match conn. execute (
1073+ "INSERT OR REPLACE INTO ItemTable (key, value) VALUES (?1, ?2)" ,
1074+ [ key_to_upsert, value_to_upsert] ,
1075+ ) {
1076+ Ok ( _) => {
1077+ error ! ( target: "database_cleanup" , "成功设置键 {} 为 {}" , key_to_upsert, value_to_upsert) ;
1078+ }
1079+ Err ( e) => {
1080+ let err_msg = format ! ( "设置键 {} 失败: {}" , key_to_upsert, e) ;
1081+ error ! ( target: "database_cleanup" , "{}" , err_msg) ;
1082+ return Err ( err_msg) ; // 如果这个关键操作失败,则返回错误
1083+ }
1084+ }
1085+
1086+ error ! ( target: "database_cleanup" , "数据库条目清理完成" ) ;
1087+ Ok ( ( ) )
9671088}
0 commit comments