export function parseUniquefiedIdentityName()

in src/PortfolioPlanning/Common/Utilities/Identity.ts [45:93]


export function parseUniquefiedIdentityName(distinctName: string): IdentityRef {
    if (isNullOrWhiteSpace(distinctName)) {
        return {
            id: null,
            displayName: null,
            uniqueName: null,
            imageUrl: null
        } as IdentityRef;
    }

    const i = distinctName.lastIndexOf("<");
    const j = distinctName.lastIndexOf(">");
    let displayName = distinctName;
    let uniqueName: string;
    let id: string;

    if (i >= 0 && j > i && j === distinctName.length - 1) {
        displayName = distinctName.substr(0, i).trim();
        const rightPart = distinctName.substr(i + 1, j - i - 1).trim();
        const vsIdFromAlias: string = getVsIdFromGroupUniqueName(rightPart); // if it has vsid in unique name (for TFS groups)

        if (
            rightPart.indexOf("@") !== -1 ||
            rightPart.indexOf("\\") !== -1 ||
            vsIdFromAlias ||
            GUIDUtil.isGuid(rightPart)
        ) {
            // if its a valid alias
            uniqueName = rightPart;

            // If the alias component is just a guid then this is not a uniqueName but
            // vsId which is used only for TFS groups
            if (!isNullOrWhiteSpace(vsIdFromAlias)) {
                id = vsIdFromAlias;
                uniqueName = null;
            }
        } else {
            // if its not a valid alias, treat it as a non-identity string
            displayName = distinctName;
        }
    }

    return {
        id: id,
        displayName: displayName,
        uniqueName: uniqueName,
        imageUrl: buildAvatarUrl(id, uniqueName)
    } as IdentityRef;
}