diff --git a/drivers/place/attendee_scanner.cr b/drivers/place/attendee_scanner.cr index 4089d5f3e1..56306464a6 100644 --- a/drivers/place/attendee_scanner.cr +++ b/drivers/place/attendee_scanner.cr @@ -9,19 +9,20 @@ class Place::AttendeeScanner < PlaceOS::Driver accessor locations : LocationServices_1 default_settings({ - internal_domains: ["comment.out", "use authority / domain email_domains by preference"], + attendee_scan_every_minutes: 5, + _internal_domains: ["comment.out", "use authority / domain email_domains by preference"], }) - getter internal_domains : Array(String) = [] of String - def on_update - # TODO:: use authority email_domains so this setting isn't required - @internal_domains = setting(Array(String), :internal_domains).map!(&.strip.downcase) - + @internal_domains = nil @building_id = nil @timezone = nil @systems = nil @org_id = nil + + period = setting?(Int32, :attendee_scan_every_minutes) || 5 + schedule.clear + schedule.every(period.minutes) { invite_external_guests } end getter building_id : String do @@ -47,8 +48,18 @@ class Place::AttendeeScanner < PlaceOS::Driver building_details = staff_api.zone(building_id).get @org_id = building_details["parent_id"].as_s? - tz = building_details["timezone"].as_s - Time::Location.load(tz) + tz = building_details["timezone"]?.try(&.as_s?).presence || config.control_system.try(&.timezone) + Time::Location.load(tz.as(String)) + end + + getter internal_domains : Array(String) do + # use authority email_domains so this setting isn't required + domains = (setting?(Array(String), :internal_domains) || [] of String).map!(&.strip.downcase) + if domains.empty? + staff_api.auth_authority.get["email_domains"].as_a?.try(&.map(&.as_s.strip.downcase)) || domains + else + domains + end end alias Event = PlaceCalendar::Event diff --git a/drivers/place/attendee_scanner_spec.cr b/drivers/place/attendee_scanner_spec.cr index 2437f1bfff..c1a7ea3600 100644 --- a/drivers/place/attendee_scanner_spec.cr +++ b/drivers/place/attendee_scanner_spec.cr @@ -94,13 +94,13 @@ class Bookings < DriverSpecs::MockDriver "event_start": 1.hour.ago.to_unix, "event_end": 1.hour.from_now.to_unix, "id": "AAkALgAAAAAAHYQDEapmEc2byACqAC-EWg0AVrOjSWJ0R0_lv6HqEl72fQABnPXAjwAA", - "host": "IsaiahL@comment.out", + "host": "IsaiahL@email.com", "title": "Test Meeting", "body": "
\r\n\r\n\r\n\r\n\r\n