handleToDeviceEvent method

Future<void> handleToDeviceEvent(
  1. ToDeviceEvent event
)

Implementation

Future<void> handleToDeviceEvent(ToDeviceEvent event) async {
  if (event.type == EventTypes.RoomKey) {
    // a new room key. We need to handle this asap, before other
    // events in /sync are handled
    await keyManager.handleToDeviceEvent(event);
  }
  if ([EventTypes.RoomKeyRequest, EventTypes.ForwardedRoomKey]
      .contains(event.type)) {
    // "just" room key request things. We don't need these asap, so we handle
    // them in the background
    // ignore: unawaited_futures
    runInRoot(() => keyManager.handleToDeviceEvent(event));
  }
  if (event.type == EventTypes.Dummy) {
    // the previous device just had to create a new olm session, due to olm session
    // corruption. We want to try to send it the last message we just sent it, if possible
    // ignore: unawaited_futures
    runInRoot(() => olmManager.handleToDeviceEvent(event));
  }
  if (event.type.startsWith('m.key.verification.')) {
    // some key verification event. No need to handle it now, we can easily
    // do this in the background

    // ignore: unawaited_futures
    runInRoot(() => keyVerificationManager.handleToDeviceEvent(event));
  }
  if (event.type.startsWith('m.secret.')) {
    // some ssss thing. We can do this in the background
    // ignore: unawaited_futures
    runInRoot(() => ssss.handleToDeviceEvent(event));
  }
  if (event.sender == client.userID) {
    // maybe we need to re-try SSSS secrets
    // ignore: unawaited_futures
    runInRoot(() => ssss.periodicallyRequestMissingCache());
  }
}