     private var uiOperationQueue: OperationQueue = .main
     private var isStarted: Bool = false
     private var callTimer: Timer?
+    #if canImport(JitsiMeetSDK)
+    private var widgetEventsListener: Any?
+    /// Jitsi calls map. Keys are CallKit call UUIDs, values are corresponding widgets.
+    private var jitsiCalls: [UUID: Widget] = [:]
+    #endif
     
     private var isCallKitEnabled: Bool {
         MXCallKitAdapter.callKitAvailable() && MXKAppSettings.standard()?.isCallKitEnabled == true

    }
    
}

                                               name: .RoomGroupCallTileTapped,
                                               object: nil)
        
        #if canImport(JitsiMeetSDK)
        JMCallKitProxy.addListener(self)
        
        guard let session = sessions.first else {
            return
        }
        
        widgetEventsListener = session.listenToEvents([
            MXEventType(identifier: kWidgetMatrixEventTypeString),
            MXEventType(identifier: kWidgetModularEventTypeString)
        ]) { (event, direction, _) in
            if direction == .backwards {
                //  ignore backwards events
                return
            }
            
            self.processWidgetEvent(event, inSession: session)
        }
        #endif
    }
    
    private func removeCallObservers() {
        guard isStarted else {
            return
        }
        
        defer {
            isStarted = false
        }
        
        NotificationCenter.default.removeObserver(self,
