using System.Net; using Newtonsoft.Json; using Tesses.WebServer; using Chatr; using System.Collections.Generic; namespace Tesses.Chatr.Server { public class UserOptions { Account a; public List Users {get;set;} public List Bots {get;set;} public string Hidebotschecked {get {return a.ShowBots ? "" : "checked"; } set {a.ShowBots=value != "checked";}} public string Showuserchecked {get {return a.ShowUserNameToAnyBody ? "checked" : "";} set{a.ShowUserNameToAnyBody=value=="checked";}} public UserOptions(Account account) { Users=new List(); Bots=new List(); a=account; foreach(var user in UserManagement.GetUserWithMe(account,false)) { UserAccount usr=new UserAccount(); usr.Hash = user.Username; usr.Text = WebUtility.HtmlEncode(user.Name); usr.UId=user.Id; usr.Shown = account.HiddenUsers.Contains(user.Id) ? "" : "checked"; foreach(var bot in UserManagement.GetBotsWithMe(account,user,false)) { UserAccount usr1=new UserAccount(); usr1.Hash=$"{user.Username}={bot.BotUserName}"; usr1.Text = WebUtility.HtmlEncode($"{bot.BotName} ({bot.BotUserName}'s Bot)"); usr1.UId = bot.Id; usr1.Shown = account.HiddenBots.Contains(bot.Id) ? "" : "checked"; Bots.Add(usr1); } Users.Add(usr); } } public void Set(ServerContext ctx,bool save=true) { string res; if(ctx.QueryParams.TryGetFirst("hide_bots",out res)) { Hidebotschecked=res=="on" ? "checked" : ""; } if(ctx.QueryParams.TryGetFirst("show_user",out res)) { Showuserchecked=res=="on" ? "checked" : ""; } foreach(var user in Users) { //user user.Shown=""; if(ctx.QueryParams.TryGetFirst($"user{user.Hash}",out res)) { user.Shown = res == "on" ? "checked" : ""; } } foreach(var bot in Bots) { bot.Shown=""; if(ctx.QueryParams.TryGetFirst($"bot{bot.Hash}",out res)) { bot.Shown = res == "on" ? "checked" : ""; } } if(save) { Save(); } } public void Save() { a.HiddenUsers.Clear(); a.HiddenBots.Clear(); //only do users and bots //the other bools are already set foreach(var user in Users) { if(user.Shown == "") { a.HiddenUsers.Add(user.UId); } } foreach(var bot in Users) { if(bot.Shown == "") { a.HiddenBots.Add(bot.UId); } } if(DataBase.Accounts != null) DataBase.Accounts.Update(a); } } }