in src/components/operations/operation-details/ko/runtime/authorization.ts [398:475]
private async loadSubscriptionKeys(selectFirstSubscription: boolean = false): Promise<void> {
this.subscriptionsLoading(true);
const userId = await this.usersService.getCurrentUserId();
if (!userId) {
return;
}
const subscriptionsQuery: SearchQuery = {
pattern: this.subscriptionsPattern()
};
const pageOfProducts = await this.apiService.getAllApiProducts(`/apis/${this.api().id}`);
const products = pageOfProducts || [];
const allSubscriptions = await this.productService.getProductsAllSubscriptions(this.api().name, products, userId, subscriptionsQuery);
const subscriptions = allSubscriptions.filter(subscription => subscription.state === SubscriptionState.active);
const availableProducts = [];
const productsSubscriptions = allSubscriptions.filter(subscription => !this.productService.isProductScope(subscription.scope, this.api().name));
products.forEach(product => {
const keys: SubscriptionOption[] = [];
if (productsSubscriptions.length === 0) {
return;
}
productsSubscriptions.forEach(subscription => {
if (!this.productService.isProductScope(subscription.scope, product.name)) {
return;
}
keys.push({
name: `Primary: ${subscription.name?.trim() || subscription.primaryKey.substr(0, 4)}`,
value: subscription.primaryKey
});
keys.push({
name: `Secondary: ${subscription.name?.trim() || subscription.secondaryKey.substr(0, 4)}`,
value: subscription.secondaryKey
});
});
if (keys.length > 0) {
availableProducts.push({ name: product.displayName, subscriptionKeys: keys });
}
});
const apiSubscriptions = allSubscriptions.filter(subscription => this.productService.isProductScope(subscription.scope, this.api().name));
const apiKeys: SubscriptionOption[] = [];
apiSubscriptions.forEach(subscription => {
apiKeys.push({
name: `Primary: ${subscription.name?.trim() || subscription.primaryKey.substr(0, 4)}`,
value: subscription.primaryKey
});
apiKeys.push({
name: `Secondary: ${subscription.name?.trim() || subscription.secondaryKey.substr(0, 4)}`,
value: subscription.secondaryKey
});
});
if(apiKeys.length > 0) {
availableProducts.push({ name: "Apis", subscriptionKeys: apiKeys });
}
this.isSubscriptionListEmptyDueToFilter(availableProducts.length == 0 && this.subscriptionsPattern() !== undefined);
this.products(availableProducts);
this.subscriptionsLoading(false);
if (subscriptions.length == 0) {
return;
}
if (availableProducts.length > 0 && selectFirstSubscription) {
const subscriptionKey = availableProducts[0].subscriptionKeys[0];
this.selectedSubscriptionKey(subscriptionKey);
this.applySubscriptionKey(subscriptionKey);
}
}