me property

User get me

Implementation

User get me {
  if (_me == null) {
    throw StateError('Set the me property before using the Session object');
  } else {
    return _me!;
  }
}
set me (User user)

Implementation

set me(User user) {
  if (_me != null) {
    throw StateError(
      'The me property has already been set for the Session object',
    );
  } else {
    _me = user;

    // If the WebView has loaded the page, but didn't initialize the session because of
    // the missing `me` property, now is the time to initialize the session.
    if ((_webViewController != null) && (!_completer.isCompleted)) {
      _execute('const me = new Talk.User(${me.getJsonString()});');
      createSession(execute: _execute, session: this, variableName: 'me');

      if (onMessage != null) {
        _execute(
          'session.onMessage((event) => window.flutter_inappwebview.callHandler("JSCOnMessage", JSON.stringify(event)));',
        );
      }

      if ((onUnreadsChange != null) || (unreads?.onChange != null)) {
        _execute(
          'session.unreads.onChange((event) => window.flutter_inappwebview.callHandler("JSCOnUnreadsChange", JSON.stringify(event)));',
        );
      }

      if (enablePushNotifications != null) {
        _setOrUnsetPushRegistration(enablePushNotifications!);
      }

      _execute('const conversations = {};');

      // Execute any pending instructions
      for (var statement in _pending) {
        final controller = _webViewController!;

        if (kDebugMode) {
          print('📗 session.me _pending: $statement');
        }

        // This statemement without the `true;` at the end results in a build that crashes on iOS 26.2 when built using Xcode 26.2
        // Building on Xcode 26.1.1 and running on iOS 26.2 does not result in a crash.
        controller.evaluateJavascript(source: '$statement; true;');
      }

      _completer.complete();
    }
  }
}