using System.Text;
using TweetDuck.Configuration;

namespace TweetDuck.Core.Bridge{
    static class PropertyBridge{
        public enum Environment{
            Browser, Notification
        }

        public static string GenerateScript(Environment environment){
            static string Bool(bool value) => value ? "true;" : "false;";
            static string Str(string value) => '"'+value+"\";";

            UserConfig config = Program.Config.User;
            StringBuilder build = new StringBuilder(128).Append("(function(x){");

            build.Append("x.expandLinksOnHover=").Append(Bool(config.ExpandLinksOnHover));
            
            if (environment == Environment.Browser){
                build.Append("x.focusDmInput=").Append(Bool(config.FocusDmInput));
                build.Append("x.openSearchInFirstColumn=").Append(Bool(config.OpenSearchInFirstColumn));
                build.Append("x.keepLikeFollowDialogsOpen=").Append(Bool(config.KeepLikeFollowDialogsOpen));
                build.Append("x.muteNotifications=").Append(Bool(config.MuteNotifications));
                build.Append("x.notificationMediaPreviews=").Append(Bool(config.NotificationMediaPreviews));
                build.Append("x.translationTarget=").Append(Str(config.TranslationTarget));
            }

            if (environment == Environment.Notification){
                build.Append("x.skipOnLinkClick=").Append(Bool(config.NotificationSkipOnLinkClick));
            }
            
            return build.Append("})(window.$TDX=window.$TDX||{})").ToString();
        }
    }
}