98 lines
3.4 KiB
Python
98 lines
3.4 KiB
Python
from services.cursor_service import CursorService
|
|
from common_utils import get_hardware_id
|
|
from exit_cursor import ExitCursor
|
|
from PyQt5.QtCore import QThread, pyqtSignal
|
|
|
|
class BaseWorker(QThread):
|
|
"""基础工作线程类"""
|
|
progress = pyqtSignal(dict) # 进度信号
|
|
finished = pyqtSignal(tuple) # 完成信号
|
|
error = pyqtSignal(str) # 错误信号
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
self._is_running = True
|
|
|
|
def stop(self):
|
|
"""停止线程"""
|
|
self._is_running = False
|
|
self.wait()
|
|
|
|
class RefreshTokenWorker(BaseWorker):
|
|
"""刷新 Cursor Token 工作线程"""
|
|
def run(self):
|
|
try:
|
|
service = CursorService()
|
|
machine_id = get_hardware_id()
|
|
|
|
# 更新进度 - 退出 Cursor
|
|
self.progress.emit({
|
|
"status": "exiting",
|
|
"message": "正在关闭 Cursor 进程..."
|
|
})
|
|
|
|
# 退出 Cursor
|
|
if not ExitCursor():
|
|
raise Exception("无法完全关闭 Cursor 进程,请手动关闭后重试")
|
|
|
|
# 更新进度 - 开始刷新
|
|
self.progress.emit({
|
|
"status": "refreshing",
|
|
"message": "正在刷新 Cursor 授权..."
|
|
})
|
|
|
|
# 调用刷新服务
|
|
success, msg, account_info = service.refresh_account(machine_id)
|
|
|
|
if success and account_info:
|
|
# 更新进度 - 开始重置机器码
|
|
self.progress.emit({
|
|
"status": "resetting",
|
|
"message": "正在重置机器码..."
|
|
})
|
|
|
|
# 调用重置机器码
|
|
reset_success, reset_msg, reset_data = service.reset_machine()
|
|
|
|
if reset_success:
|
|
# 更新进度
|
|
self.progress.emit({
|
|
"status": "success",
|
|
"message": f"授权刷新成功: {account_info.get('email')}"
|
|
})
|
|
|
|
result_msg = (
|
|
f"授权刷新成功\n"
|
|
f"账号: {account_info.get('email')}\n"
|
|
f"机器码重置成功\n"
|
|
f"请重新启动 Cursor 编辑器"
|
|
)
|
|
else:
|
|
result_msg = f"授权刷新成功,但机器码重置失败: {reset_msg}"
|
|
else:
|
|
result_msg = f"授权刷新失败: {msg}"
|
|
|
|
self.finished.emit(('refresh', (success, result_msg)))
|
|
|
|
except Exception as e:
|
|
self.error.emit(str(e))
|
|
|
|
class ResetWorker(BaseWorker):
|
|
"""重置机器码工作线程"""
|
|
def run(self):
|
|
try:
|
|
service = CursorService()
|
|
success, msg, data = service.reset_machine()
|
|
self.finished.emit(('reset', (success, msg, data)))
|
|
except Exception as e:
|
|
self.error.emit(str(e))
|
|
|
|
class DisableWorker(BaseWorker):
|
|
"""禁用更新工作线程"""
|
|
def run(self):
|
|
try:
|
|
service = CursorService()
|
|
success, msg = service.disable_update()
|
|
self.finished.emit(('disable', (success, msg)))
|
|
except Exception as e:
|
|
self.error.emit(str(e)) |