Skip to content

Commit 728907d

Browse files
committed
chore: various tweaks
1 parent 8674d16 commit 728907d

File tree

2 files changed

+38
-11
lines changed

2 files changed

+38
-11
lines changed

Includes/MeetingAutomation.au3

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,13 @@ EndFunc ;==>_SetDuringMeetingSettings
7676

7777
; Checks current time against meeting schedule and applies appropriate settings
7878
; @param $meetingTime - Scheduled meeting time in HH:MM format
79+
; Checks current time against meeting schedule and applies appropriate settings
80+
; @param $meetingTime - Scheduled meeting time in HH:MM format
81+
; @return Integer - Recommended sleep time in milliseconds before next check
7982
Func CheckMeetingWindow($meetingTime)
80-
If $meetingTime = "" Then Return
83+
If $meetingTime = "" Then Return 60000
8184

82-
Local $secondsToWait = 5 ; Default interval between checks
85+
Local $nextCheckDelay = 5000 ; Default interval between checks
8386

8487
; Parse meeting time
8588
Local $aParts = StringSplit($meetingTime, ":")
@@ -101,30 +104,45 @@ Func CheckMeetingWindow($meetingTime)
101104
$g_PrePostSettingsConfigured = True
102105
EndIf
103106
EndIf
107+
$nextCheckDelay = 5000
104108

105109
ElseIf $nowMin = ($meetingMin - $MEETING_START_WARNING_MINUTES) Then
106110
; Meeting start window (1 minute before meeting)
107111
If Not $g_DuringMeetingSettingsConfigured Then
108-
If Not _GetZoomWindow() Then Return
112+
If Not _GetZoomWindow() Then Return 1000 ; Retry quickly if window not found
109113
_SetDuringMeetingSettings()
110114
$g_DuringMeetingSettingsConfigured = True
111115
EndIf
116+
$nextCheckDelay = 5000
112117

113118
ElseIf $nowMin >= $meetingMin Then
114119
; Meeting already started
115120
Local $minutesAgo = $nowMin - $meetingMin
116121
If $minutesAgo <= 120 Then
117122
Debug(t("INFO_MEETING_STARTED_AGO", $minutesAgo), "INFO", $g_InitialNotificationWasShown)
123+
$nextCheckDelay = 30000 ; Check every 30 seconds if meeting already started
118124
Else
119125
Debug(t("INFO_OUTSIDE_MEETING_WINDOW"), "INFO", $g_InitialNotificationWasShown)
126+
$nextCheckDelay = 60000 ; Check every minute
120127
EndIf
121-
$secondsToWait = 30 ; Check every 30 seconds if meeting already started
128+
122129
Else
123130
; Too early - show countdown to meeting
124131
Local $minutesLeft = $meetingMin - $nowMin
125-
Debug(t("INFO_MEETING_STARTING_IN", $minutesLeft), "INFO", $g_InitialNotificationWasShown)
132+
133+
If $minutesLeft > 60 Then
134+
; If > 1 hour away, check every minute
135+
; Only log if it's the first run to show we are alive, otherwise silence
136+
If Not $g_InitialNotificationWasShown Then
137+
Debug(t("INFO_MEETING_STARTING_IN", $minutesLeft), "INFO")
138+
EndIf
139+
$nextCheckDelay = 60000
140+
Else
141+
Debug(t("INFO_MEETING_STARTING_IN", $minutesLeft), "INFO", $g_InitialNotificationWasShown)
142+
$nextCheckDelay = 5000
143+
EndIf
126144
EndIf
127145

128-
Sleep($secondsToWait * 1000)
129146
$g_InitialNotificationWasShown = True
147+
Return $nextCheckDelay
130148
EndFunc ;==>CheckMeetingWindow

ZoomMate.au3

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ TraySetIcon($g_TrayIcon)
7575
$oUIAutomation = ObjCreateInterface($sCLSID_CUIAutomation, $sIID_IUIAutomation, $dtagIUIAutomation)
7676
If Not IsObj($oUIAutomation) Then
7777
Debug("Failed to create UIAutomation COM object.", "UIA")
78+
MsgBox(16 + 262144, "ZoomMate - Critical Error", "Failed to create UIAutomation COM object." & @CRLF & "Please ensure UIA prerequisites are met.")
7879
Exit
7980
EndIf
8081
Debug("UIAutomation COM created successfully.", "UIA")
@@ -84,6 +85,7 @@ $oUIAutomation.GetRootElement($pDesktop)
8485
$oDesktop = ObjCreateInterface($pDesktop, $sIID_IUIAutomationElement, $dtagIUIAutomationElement)
8586
If Not IsObj($oDesktop) Then
8687
Debug(t("ERROR_GET_DESKTOP_ELEMENT_FAILED"), "ERROR")
88+
MsgBox(16 + 262144, "ZoomMate - Critical Error", t("ERROR_GET_DESKTOP_ELEMENT_FAILED"))
8789
Exit
8890
EndIf
8991
Debug("Desktop element obtained.", "UIA")
@@ -106,30 +108,37 @@ _InitDayLabelMaps()
106108
; MAIN APPLICATION LOOP
107109
; ================================================================================================
108110

111+
; Initialize loop variables
112+
Global $today
113+
Global $timeNow
114+
Global $sleepTime = 5000
115+
109116
While True
110117
; Handle tray icon events
111118
TrayEvent()
112119

113120
; Check if day has changed to reset automation flags
114-
Global $today = @WDAY
121+
$today = @WDAY
115122
If $today <> $previousRunDay Then
116123
Debug("New day detected. Resetting configuration flags.", "VERBOSE")
117124
$previousRunDay = $today
118125
$g_PrePostSettingsConfigured = False
119126
$g_DuringMeetingSettingsConfigured = False
120127
EndIf
121128

122-
Global $timeNow = _NowTime(4) ; Get current time in HH:MM format
129+
$timeNow = _NowTime(4) ; Get current time in HH:MM format
123130

124131
; Check if today is a scheduled meeting day
125132
If $today = Number(GetUserSetting("MidweekDay")) Then
126-
CheckMeetingWindow(GetUserSetting("MidweekTime"))
133+
$sleepTime = CheckMeetingWindow(GetUserSetting("MidweekTime"))
127134
ElseIf $today = Number(GetUserSetting("WeekendDay")) Then
128-
CheckMeetingWindow(GetUserSetting("WeekendTime"))
135+
$sleepTime = CheckMeetingWindow(GetUserSetting("WeekendTime"))
129136
Else
130137
; Not a meeting day - wait 1 minute before checking again
131138
Debug(t("INFO_NO_MEETING_SCHEDULED"), "INFO", $g_InitialNotificationWasShown)
132139
$g_InitialNotificationWasShown = True
133-
Sleep(60000)
140+
$sleepTime = 60000
134141
EndIf
142+
143+
Sleep($sleepTime)
135144
WEnd

0 commit comments

Comments
 (0)