chatr/ChatrServer/Chatr/UserOptions.cs

106 lines
3.0 KiB
C#

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<UserAccount> Users {get;set;}
public List<UserAccount> 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<UserAccount>();
Bots=new List<UserAccount>();
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);
}
}
}