const consolePrefix = `${"[".blue}${"dbd-soft-ui".yellow}${"]".blue} `;
const Keyv = require("keyv");
const path = require("path");
// const { readFileSync } = require("fs");

module.exports = (themeConfig = {}) => {
	return {
		themeCodename: "softui",
		viewsPath: path.join(__dirname, "/views"),
		staticPath: path.join(__dirname, "/views/src"),
		themeConfig: {
			...themeConfig,
			defaultLocales: require("./locales.js"),
		},
		messages: {
			error: {
				addonLicense: `${consolePrefix}${"Failed to initialise {{ADDON}}.\nThe license this addon was installed with does not match your current discord-dashboard license.".cyan}`,
			},
			success: {
				addonLoaded: `${consolePrefix}${"Successfully loaded {{ADDON}}.".cyan}`,
			},
		},
		// embedBuilderComponent: readFileSync(path.join(__dirname, "/embedBuilderComponent.txt"), "utf8"),
		init: async (app, config) => {
			if (!config?.useTheme404) return console.log(`${consolePrefix}${"You need to set useTheme404 to true in your DBD config otherwise Soft-UI will not work correctly!\n\nDashboard has not fully initialised due to this. Pages will 404!".red}`);

			const db = new Keyv(themeConfig.dbdriver || "sqlite://" + path.join(__dirname, "/database.sqlite"));

			db.on("error", (err) => {
				console.log("Connection Error", err);
				process.exit();
			});

			themeConfig = { ...themeConfig, defaultLocales: require("./locales.js") };

			require("./utils/functions/errorHandler")(config, themeConfig, db);
			require("./utils/functions/settingsPage")(config, themeConfig, db);
			// await require('./utils/addonManager').execute(themeConfig, config, app, module.exports.messages);
			require("./utils/initPages").init(config, themeConfig, app, db);
		},
	};
};

module.exports.partials = __dirname + "/views/partials";
module.exports.formTypes = require("./utils/formtypes");
module.exports.Feed = require("./utils/feedHandler");
module.exports.cmdHandler = require("./utils/cmdHandler");
module.exports.version = require("./package.json").version;