fix blocker warning dialog crash
All checks were successful
Deploy on Master Change / deploy (push) Successful in 38s

This commit is contained in:
2026-07-01 08:40:18 +07:00
parent 8d47b6c66f
commit 393a972e58

View File

@@ -34,6 +34,8 @@ import (
) )
var blockedReportLast sync.Map // processName -> time.Time var blockedReportLast sync.Map // processName -> time.Time
var lastKillDialogTime time.Time
var killDialogMu sync.Mutex
var API_BASE = getEnv("API_BASE", "https://sv.rikkeiraia.org") var API_BASE = getEnv("API_BASE", "https://sv.rikkeiraia.org")
@@ -212,11 +214,29 @@ func (a *App) startup(ctx context.Context) {
go a.reportBlockedApp(procName, title) go a.reportBlockedApp(procName, title)
} }
blocker.Instance.OnKill = func(procName string, title string) { blocker.Instance.OnKill = func(procName string, title string) {
_, _ = runtime.MessageDialog(a.ctx, runtime.MessageDialogOptions{ killDialogMu.Lock()
Type: runtime.WarningDialog, if time.Since(lastKillDialogTime) < 5*time.Second {
Title: "Ứng dụng bị đóng", killDialogMu.Unlock()
Message: fmt.Sprintf("Hệ thống đã tự động đóng ứng dụng '%s' (%s) do không nằm trong danh sách các ứng dụng được phép sử dụng trong giờ học.", procName, title), return
}) }
lastKillDialogTime = time.Now()
killDialogMu.Unlock()
go func() {
defer func() {
if r := recover(); r != nil {
log.Printf("[APP] Recovered from MessageDialog panic: %v", r)
}
}()
if a.ctx == nil {
return
}
_, _ = runtime.MessageDialog(a.ctx, runtime.MessageDialogOptions{
Type: runtime.WarningDialog,
Title: "Ứng dụng bị đóng",
Message: fmt.Sprintf("Hệ thống đã tự động đóng ứng dụng '%s' (%s) do không nằm trong danh sách các ứng dụng được phép sử dụng trong giờ học.", procName, title),
})
}()
} }
// Giám sát môi trường Windows: đa màn hình, desktop ảo, đổi user // Giám sát môi trường Windows: đa màn hình, desktop ảo, đổi user