public void DidAudioMuted(AgoraRtcEngineKit engine, bool muted, nuint uid)
        {
            var index = _users.IndexOf(_users.First(u => u.Uid == (uint)uid));

            _users[index].IsAudioMuted = muted;
            RemoteUsersTableView.ReloadData();
        }
        private void OmMessageReceived(SignalMessage signal)
        {
            var userItemIndex = _users.IndexOf(_users.First(i => i.Uid == signal.RtcPeerId));

            switch (signal.Action)
            {
            case SignalActionTypes.HandDown:
            case SignalActionTypes.HandUp:
                _users[userItemIndex].IsHandUp = signal.Action == SignalActionTypes.HandUp;
                RemoteUsersTableView.ReloadData();
                break;

            case SignalActionTypes.IncomingCall:
                var alert = new NSAlert();
                alert.AddButton("Join");
                alert.AddButton("Cancel");
                alert.MessageText     = "Invite";
                alert.InformativeText = $"You got invite to [{signal.Data}] room";

                var response = alert.RunSheetModal(this.View.Window);
                if (response == (long)NSAlertButtonReturn.First)
                {
                    LeaveChannel();
                    InitializeAgoraEngine();
                    SetupVideo();
                    ResetButtons();
                    SetupLocalVideo();
                    JoinChannel();
                    InitAndJoinRtm();
                }
                break;
            }
        }
 public void FirstRemoteVideoDecodedOfUid(AgoraRtcEngineKit engine, nuint uid, CGSize size, nint elapsed)
 {
     if (_users.Any(u => u.Uid == uid))
     {
         return;
     }
     _users.Add(new RemoteVideoInfo {
         Uid = (uint)uid
     });
     RemoteUsersTableView.ReloadData();
 }
        void ReleaseDesignerOutlets()
        {
            if (controlButtons != null)
            {
                controlButtons.Dispose();
                controlButtons = null;
            }

            if (deviceSelectionButton != null)
            {
                deviceSelectionButton.Dispose();
                deviceSelectionButton = null;
            }

            if (handUpButton != null)
            {
                handUpButton.Dispose();
                handUpButton = null;
            }

            if (hungUpButton != null)
            {
                hungUpButton.Dispose();
                hungUpButton = null;
            }

            if (inviteButton != null)
            {
                inviteButton.Dispose();
                inviteButton = null;
            }

            if (LoadingIndicator != null)
            {
                LoadingIndicator.Dispose();
                LoadingIndicator = null;
            }

            if (localVideo != null)
            {
                localVideo.Dispose();
                localVideo = null;
            }

            if (localVideoMuteBg != null)
            {
                localVideoMuteBg.Dispose();
                localVideoMuteBg = null;
            }

            if (localVideoMutedIndicator != null)
            {
                localVideoMutedIndicator.Dispose();
                localVideoMutedIndicator = null;
            }

            if (muteButton != null)
            {
                muteButton.Dispose();
                muteButton = null;
            }

            if (RemoteUsersTableView != null)
            {
                RemoteUsersTableView.Dispose();
                RemoteUsersTableView = null;
            }

            if (screenShareButton != null)
            {
                screenShareButton.Dispose();
                screenShareButton = null;
            }

            if (videoMuteButton != null)
            {
                videoMuteButton.Dispose();
                videoMuteButton = null;
            }

            if (userNameLabel != null)
            {
                userNameLabel.Dispose();
                userNameLabel = null;
            }

            if (roomNameLabel != null)
            {
                roomNameLabel.Dispose();
                roomNameLabel = null;
            }
        }
 public void DidOfflineOfUid(AgoraRtcEngineKit engine, nuint uid, UserOfflineReason reason)
 {
     _users.Remove(_users.First(u => u.Uid == (uint)uid));
     RemoteUsersTableView.ReloadData();
 }