in src/Calendar.tsx [357:418]
private async initialize() {
const dataSvc = await SDK.getService<IExtensionDataService>(CommonServiceIds.ExtensionDataService);
const projectService = await SDK.getService<IProjectPageService>(CommonServiceIds.ProjectPageService);
const project = await projectService.getProject();
const locationService = await SDK.getService<ILocationService>(CommonServiceIds.LocationService);
this.dataManager = await dataSvc.getExtensionDataManager(SDK.getExtensionContext().id, await SDK.getAccessToken());
this.navigationService = await SDK.getService<IHostNavigationService>(CommonServiceIds.HostNavigationService);
const queryParam = await this.navigationService.getQueryParams();
let selectedTeamId;
// if URL has team id in it, use that
if (queryParam && queryParam["team"]) {
selectedTeamId = queryParam["team"];
}
if (project) {
if (!selectedTeamId) {
// Nothing in URL - check data service
selectedTeamId = await this.dataManager.getValue<string>("selected-team-" + project.id, { scopeType: "User" });
}
const client = getClient(CoreRestClient);
const allTeams = [];
let teams;
let callCount = 0;
const fetchCount = 1000;
do {
teams = await client.getTeams(project.id, false, fetchCount, callCount * fetchCount);
allTeams.push(...teams);
callCount++;
} while (teams.length === fetchCount);
this.projectId = project.id;
this.projectName = project.name;
allTeams.sort((a, b) => {
return a.name.toUpperCase().localeCompare(b.name.toUpperCase());
});
// if team id wasn't in URL or database use first available team
if (!selectedTeamId) {
selectedTeamId = allTeams[0].id;
}
if (!queryParam || !queryParam["team"]) {
// Add team id to URL
this.navigationService.setQueryParams({ team: selectedTeamId });
}
this.hostUrl = await locationService.getServiceLocation();
this.selectedTeamName = (await client.getTeam(project.id, selectedTeamId)).name;
this.freeFormEventSource.initialize(selectedTeamId, this.dataManager);
this.vsoCapacityEventSource.initialize(project.id, this.projectName, selectedTeamId, this.selectedTeamName, this.hostUrl);
this.displayCalendar.value = true;
this.dataManager.setValue<string>("selected-team-" + project.id, selectedTeamId, { scopeType: "User" });
this.teams.value = allTeams;
this.members = await client.getTeamMembersWithExtendedProperties(project.id, selectedTeamId);
}
}