using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SharpChat.Packet {
    public class ContextUsersPacket(IEnumerable<ChatUser> users) : ServerPacket {
        public IEnumerable<ChatUser> Users { get; private set; } = users?.Where(u => u != null) ?? throw new ArgumentNullException(nameof(users));

        public override IEnumerable<string> Pack() {
            StringBuilder sb = new();

            sb.Append('7');
            sb.Append('\t');
            sb.Append('0');
            sb.Append('\t');
            sb.Append(Users.Count());

            foreach(ChatUser user in Users) {
                sb.Append('\t');
                sb.Append(user.Pack());
                sb.Append('\t');
                sb.Append('1'); // visibility flag
            }

            yield return sb.ToString();
        }
    }
}