import { SettingStatusEnum, status } from "../utils/SettingStatus.mjs"; import { __ID__ } from "../consts.mjs"; import { Logger } from "../utils/Logger.mjs"; const key = `startingSidebarTab`; export function startingSidebarTab() { status[key] = SettingStatusEnum.Unknown; // #region Registration Logger.log(`Registering setting: ${key}`); game.settings.register(__ID__, key, { name: `OFT.setting.${key}.name`, hint: `OFT.setting.${key}.hint`, type: new foundry.data.fields.StringField({ blank: true, nullable: false, required: true, choices: () => { const tabs = Object.entries(CONFIG.ui.sidebar.TABS); const tabChoices = { "": `OFT.setting.${key}.choices.blank`, }; for (const [id, data] of tabs) { let { documentName, gmOnly, tooltip: name } = data; if (gmOnly && !game.user.isGM) { continue }; if (documentName) { name ??= foundry.utils.getDocumentClass(documentName).metadata.labelPlural; }; tabChoices[id] = name; }; return tabChoices; }, }), config: true, requiresReload: false, }); // #endregion Registration // #region Implementation Hooks.once(`ready`, () => { const defaultTab = game.settings.get(__ID__, key); if (defaultTab === ``) { return }; if (!(defaultTab in CONFIG.ui.sidebar.TABS)) { Logger.error(`Failed to find starting tab with ID "${defaultTab}", skipping`); return; }; if (defaultTab) { Logger.debug(`Changing tab to:`, defaultTab); ui.sidebar.changeTab(defaultTab, `primary`); }; }); // #endregion Implementation status[key] = SettingStatusEnum.Registered; };