Esempio n. 1
0
 public Task Initialize()
 {
     m_HelpTemplate         = m_TemplateProvider.BuildTemplate("teleconference.help");
     m_PromptTemplate       = m_TemplateProvider.BuildTemplate("teleconference.prompt");
     m_LeaveChannelTemplate = m_TemplateProvider.BuildTemplate("teleconference.leftchannel");
     m_ChatMessageTemplate  = m_TemplateProvider.BuildTemplate("teleconference.chatmessage");
     m_EnterRoomTemplate    = m_TemplateProvider.BuildTemplate("teleconference.enterroom");
     m_HangUpTemplate       = m_TemplateProvider.BuildTemplate("teleconference.hangup");
     return(Task.FromResult(0));
 }
Esempio n. 2
0
        public async Task Activate(ISessionContext context)
        {
            Guid?  userRoomId = null;
            string userRoom   = null; // TODO: = GetDatabaseCallToAccessUsersLastRoom

            if (string.IsNullOrWhiteSpace(userRoom))
            {
                userRoomId = Guid.Empty;
                userRoom   = "MAIN";
            }

            var room = m_Rooms.Get(userRoom);

            if (room == null)
            {
                room = new ChatRoom(userRoomId.Value);
                m_Rooms.Add(userRoom, room);
            }

            room.Users.Add(context.Session.ClientId);
            var userCount = room.Users.Count;

            var templateName = "template.teleconference.welcome";
            var template     = m_TemplateProvider.BuildTemplate(templateName);

            try
            {
                var templateBody = template.Render(new
                {
                    username = context.Session.Username,
                    room     = userRoom,
                    count    = userCount - 1,  // Exclude Self
                    isEmpty  = userCount == 1, // 1 = only you
                    isFull   = userCount > 2   // > 2 = More than 1
                });
                await Broadcast(AnsiBuilder.Parse($"[[attr.bold]][[fg.yellow]]{context.Session.Username} has entered the room.\r\n"), "MAIN", context.Session.ClientId);

                await context.Response.Append(templateBody);
            }
            catch (KeyNotFoundException ex)
            {
                Console.WriteLine($"Template {templateName} is invalid : {ex.Message}");
            }
            await ShowPrompt(context);
        }