2021-09-03 10:46:32 +02:00
|
|
|
import SingleSelectComponent from "select-kit/components/single-select";
|
2022-03-25 12:18:54 +01:00
|
|
|
import Subscription from "../mixins/subscription";
|
|
|
|
import wizardSchema from "discourse/plugins/discourse-custom-wizard/discourse/lib/wizard-schema";
|
|
|
|
import {
|
|
|
|
subscriptionTypeSufficient,
|
2022-03-25 12:22:27 +01:00
|
|
|
subscriptionTypes,
|
2022-03-25 12:18:54 +01:00
|
|
|
} from "discourse/plugins/discourse-custom-wizard/discourse/lib/wizard-subscription";
|
|
|
|
import discourseComputed from "discourse-common/utils/decorators";
|
2022-03-25 12:22:27 +01:00
|
|
|
import I18n from "I18n";
|
2021-09-03 10:46:32 +02:00
|
|
|
|
2022-03-25 12:22:27 +01:00
|
|
|
const nameKey = function (feature, attribute, value) {
|
|
|
|
if (feature === "action") {
|
2022-03-25 12:18:54 +01:00
|
|
|
return `admin.wizard.action.${value}.label`;
|
|
|
|
} else {
|
|
|
|
return `admin.wizard.${feature}.${attribute}.${value}`;
|
|
|
|
}
|
2022-03-25 12:22:27 +01:00
|
|
|
};
|
2022-03-25 12:18:54 +01:00
|
|
|
|
|
|
|
export default SingleSelectComponent.extend(Subscription, {
|
2021-09-24 11:58:42 +02:00
|
|
|
classNames: ["combo-box", "wizard-subscription-selector"],
|
2021-09-03 10:46:32 +02:00
|
|
|
|
|
|
|
selectKitOptions: {
|
|
|
|
autoFilterable: false,
|
|
|
|
filterable: false,
|
|
|
|
showFullTitle: true,
|
2021-10-19 14:49:06 +02:00
|
|
|
headerComponent:
|
|
|
|
"wizard-subscription-selector/wizard-subscription-selector-header",
|
2021-09-03 10:46:32 +02:00
|
|
|
caretUpIcon: "caret-up",
|
2021-09-07 14:13:01 +02:00
|
|
|
caretDownIcon: "caret-down",
|
2021-09-03 10:46:32 +02:00
|
|
|
},
|
|
|
|
|
2022-03-25 12:18:54 +01:00
|
|
|
requiredSubscriptionType(feature, attribute, value) {
|
|
|
|
let attributes = this.subscriptionAttributes[feature];
|
2022-03-25 12:22:27 +01:00
|
|
|
if (!attributes || !attributes[attribute]) {
|
|
|
|
return null;
|
|
|
|
}
|
2022-03-25 12:18:54 +01:00
|
|
|
|
|
|
|
let requiredType = null;
|
2022-03-25 12:22:27 +01:00
|
|
|
Object.keys(attributes[attribute]).some((subscriptionType) => {
|
2022-03-25 12:18:54 +01:00
|
|
|
let values = attributes[attribute][subscriptionType];
|
|
|
|
if (values[0] === "*" || values.includes(value)) {
|
|
|
|
if (subscriptionTypes.includes(subscriptionType)) {
|
|
|
|
requiredType = subscriptionType;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
|
|
|
|
return requiredType;
|
|
|
|
},
|
|
|
|
|
2022-03-25 12:22:27 +01:00
|
|
|
@discourseComputed("feature", "attribute")
|
2022-03-25 12:18:54 +01:00
|
|
|
content(feature, attribute) {
|
|
|
|
return wizardSchema[feature][attribute].map((value) => {
|
2022-03-25 12:22:27 +01:00
|
|
|
let requiredSubscriptionType = this.requiredSubscriptionType(
|
|
|
|
feature,
|
|
|
|
attribute,
|
|
|
|
value
|
|
|
|
);
|
2022-03-25 12:18:54 +01:00
|
|
|
return {
|
|
|
|
id: value,
|
|
|
|
name: I18n.t(nameKey(feature, attribute, value)),
|
|
|
|
subscriptionType: requiredSubscriptionType,
|
2022-03-25 12:22:27 +01:00
|
|
|
disabled: !subscriptionTypeSufficient(
|
|
|
|
this.subscriptionType,
|
|
|
|
requiredSubscriptionType
|
|
|
|
),
|
2022-03-25 12:18:54 +01:00
|
|
|
};
|
2022-05-13 12:04:53 +02:00
|
|
|
}).sort(function(a, b) {
|
|
|
|
if (a.subscriptionType && !b.subscriptionType) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if (!a.subscriptionType && b.subscriptionType) {
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
if (a.subscriptionType == b.subscriptionType) {
|
|
|
|
return a.subscriptionType ? a.subscriptionType.localeCompare(b.subscriptionType) : 0;
|
|
|
|
} else {
|
|
|
|
return a.subscriptionType === 'standard' ? -1 : 0;
|
|
|
|
}
|
2022-03-25 12:18:54 +01:00
|
|
|
});
|
|
|
|
},
|
|
|
|
|
2021-09-03 10:46:32 +02:00
|
|
|
modifyComponentForRow() {
|
2021-09-24 11:58:42 +02:00
|
|
|
return "wizard-subscription-selector/wizard-subscription-selector-row";
|
2021-09-07 14:13:01 +02:00
|
|
|
},
|
|
|
|
});
|