import { withPluginApi } from "discourse/lib/plugin-api"; import I18n from "I18n"; export default { name: "setup-subscriptions", initialize(container) { withPluginApi("0.8.11", (api) => { const siteSettings = container.lookup("service:site-settings"); const isNavLinkEnabled = siteSettings.discourse_subscriptions_extra_nav_subscribe; if (isNavLinkEnabled) { api.addNavigationBarItem({ name: "subscribe", displayName: I18n.t("discourse_subscriptions.navigation.subscribe"), href: "/subscriptions", }); } const user = api.getCurrentUser(); if (user) { api.addQuickAccessProfileItem({ icon: "far-credit-card", href: `/u/${user.username}/billing/subscriptions`, content: "Billing", }); if (user.admin) { api.modifyClassStatic("model:site-setting", { pluginId: "discourse-subscriptions", update(key, value, opts = {}) { if (key === "discourse_subscriptions_pricing_table") { const inputString = value; // Extract pricing-table-id const pricingTableIdRegex = /pricing-table-id="([^"]+)"/; const pricingTableIdMatch = inputString.match(pricingTableIdRegex); const pricingTableId = pricingTableIdMatch ? pricingTableIdMatch[1] : null; // Extract publishable-key const publishableKeyRegex = /publishable-key="([^"]+)"/; const publishableKeyMatch = inputString.match(publishableKeyRegex); const publishableKey = publishableKeyMatch ? publishableKeyMatch[1] : null; if (pricingTableId && publishableKey) { value = JSON.stringify({ pricingTableId, publishableKey }); } } this._super(key, value, opts); }, }); } } }); }, };