import { OAuthConfigResult, UpgradeAppConfiguration, UpgradeAppInput, } from '@atlassian/forge-graphql-types'; /* Builder class for constructing a response object for compass:oauthConfig Forge modules. */ export class OAuthConfigResponse { private authUrl: string; private upgradeApp: UpgradeAppConfiguration[]; public build(): OAuthConfigResult { return { authUrl: this.authUrl, ...(this.upgradeApp && this.upgradeApp.length > 0 ? { upgrade: this.upgradeApp, } : {}), }; } constructor(authUrl: string) { this.authUrl = authUrl; } /* Add an upgrade app link */ public addUpgradeAppLink({ url, orgName, shouldUpgrade, }: UpgradeAppInput): OAuthConfigResponse { if (this.upgradeApp == null) { this.upgradeApp = []; } this.upgradeApp.push({ url, shouldUpgradeApp: shouldUpgrade, orgName, }); return this; } }