in src/commands/aksAccount/aksAccount.ts [47:108]
export async function selectSubscriptions(): Promise<void> {
const sessionProvider = await getReadySessionProvider();
if (failed(sessionProvider)) {
window.showErrorMessage(sessionProvider.error);
return;
}
const allSubscriptions = await getSubscriptions(sessionProvider.result, SelectionType.All);
if (failed(allSubscriptions)) {
window.showErrorMessage(allSubscriptions.error);
return;
}
if (allSubscriptions.result.length === 0) {
handleNoSubscriptionsFound();
return;
}
const session = await sessionProvider.result.getAuthSession();
if (failed(session)) {
window.showErrorMessage(session.error);
return;
}
const filteredSubscriptions = await getFilteredSubscriptions();
const subscriptionsInCurrentTenant = filteredSubscriptions.filter(
(sub) => sub.tenantId === session.result.tenantId,
);
const subscriptionsInOtherTenants = filteredSubscriptions.filter((sub) => sub.tenantId !== session.result.tenantId);
const quickPickItems: SubscriptionQuickPickItem[] = allSubscriptions.result.map((sub) => {
return {
label: sub.displayName || "",
description: sub.subscriptionId,
picked: subscriptionsInCurrentTenant.some((filtered) => filtered.subscriptionId === sub.subscriptionId),
subscription: {
subscriptionId: sub.subscriptionId || "",
tenantId: sub.tenantId || "",
},
};
});
// show picked items at the top
quickPickItems.sort((itemA, itemB) => (itemA.picked === itemB.picked ? 0 : itemA.picked ? -1 : 1));
const selectedItems = await window.showQuickPick(quickPickItems, {
canPickMany: true,
placeHolder: "Select Subscriptions",
});
if (!selectedItems) {
return;
}
const newFilteredSubscriptions = [
...selectedItems.map((item) => item.subscription),
...subscriptionsInOtherTenants, // Retain filters in any other tenants.
];
await setFilteredSubscriptions(newFilteredSubscriptions);
}