private async initialize()

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);
        }
    }