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

namespace SharpChat.Packet {
    public class UserUpdatePacket(ChatUser user, string previousName = "") : ServerPacket {
        public ChatUser User { get; private set; } = user ?? throw new ArgumentNullException(nameof(user));

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

            bool isSilent = string.IsNullOrEmpty(previousName);

            if(!isSilent) {
                sb.Append('2');
                sb.Append('\t');
                sb.Append(DateTimeOffset.Now.ToUnixTimeSeconds());
                sb.Append("\t-1\t0\fnick\f");
                sb.Append(previousName);
                sb.Append('\f');
                sb.Append(User.LegacyNameWithStatus);
                sb.Append('\t');
                sb.Append(SequenceId);
                sb.Append("\t10010");
                yield return sb.ToString();
                sb.Clear();
            }

            sb.Append("10");
            sb.Append('\t');
            sb.Append(User.Pack());

            yield return sb.ToString();
        }
    }
}