60 lines
2.0 KiB
JavaScript
60 lines
2.0 KiB
JavaScript
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);
|
|
},
|
|
});
|
|
}
|
|
}
|
|
});
|
|
},
|
|
};
|