Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 34 additions & 26 deletions Composer/packages/client/src/pages/botProject/PublishTargets.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { OpenConfirmModal } from '@bfc/ui-shared';

import { dispatcherState, settingsState, publishTypesState } from '../../recoilModel';
import { AuthDialog } from '../../components/Auth/AuthDialog';
import { isShowAuthDialog } from '../../utils/auth';
import { isShowAuthDialog as shouldShowTokenDialog } from '../../utils/auth';

import { PublishProfileDialog } from './create-publish-profile/PublishProfileDialog';
import { tableRow, tableRowItem, tableColumnHeader, columnSizes, actionButton } from './styles';
Expand All @@ -27,6 +27,10 @@ const publishTargetsContainer = css`
flex-direction: column;
`;

const belowTargetsContainer = css`
padding: 0 20px 20px 20px;
`;

const publishTargetsHeader = css`
display: flex;
flex-direction: row;
Expand Down Expand Up @@ -57,19 +61,19 @@ export const PublishTargets: React.FC<PublishTargetsProps> = (props) => {
const { getPublishTargetTypes, setPublishTargets } = useRecoilValue(dispatcherState);
const publishTypes = useRecoilValue(publishTypesState(projectId));

const [dialogHidden, setDialogHidden] = useState(true);
const [showAuthDialog, setShowAuthDialog] = useState(false);
const [showPublishDialog, setShowingPublishDialog] = useState(false);
const [showAuthDialog, setShowingAuthDialog] = useState(false);

const publishTargetsRef = React.useRef<HTMLDivElement>(null);
const [current, setCurrent] = useState<{ index: number; item: PublishTarget } | null>(null);

useEffect(() => {
if (props.completePartial && publishTargets && publishTargets.length > 0) {
setCurrent({ item: publishTargets[0], index: 0 });
if (isShowAuthDialog(true)) {
setShowAuthDialog(true);
if (shouldShowTokenDialog(true)) {
setShowingAuthDialog(true);
} else {
setDialogHidden(false);
setShowingPublishDialog(true);
}
}
}, [props.completePartial, publishTargets]);
Expand Down Expand Up @@ -103,6 +107,22 @@ export const PublishTargets: React.FC<PublishTargetsProps> = (props) => {
}
};

const addNewButton = (
<ActionButton
data-testid={'addNewPublishProfile'}
styles={actionButton}
onClick={() => {
if (shouldShowTokenDialog(true)) {
setShowingAuthDialog(true);
} else {
setShowingPublishDialog(true);
}
}}
>
{formatMessage('Add new')}
</ActionButton>
);

return (
<Fragment>
<div ref={publishTargetsRef} css={publishTargetsContainer} id="addNewPublishProfile">
Expand All @@ -126,10 +146,10 @@ export const PublishTargets: React.FC<PublishTargetsProps> = (props) => {
styles={editPublishProfile}
onClick={() => {
setCurrent({ item: p, index: index });
if (isShowAuthDialog(true)) {
setShowAuthDialog(true);
if (shouldShowTokenDialog(true)) {
setShowingAuthDialog(true);
} else {
setDialogHidden(false);
setShowingPublishDialog(true);
}
}}
>
Expand All @@ -148,35 +168,23 @@ export const PublishTargets: React.FC<PublishTargetsProps> = (props) => {
</div>
);
})}
<ActionButton
data-testid={'addNewPublishProfile'}
styles={actionButton}
onClick={() => {
if (isShowAuthDialog(true)) {
setShowAuthDialog(true);
} else {
setDialogHidden(false);
}
}}
>
{formatMessage('Add new')}
</ActionButton>
</div>
<div css={belowTargetsContainer}>{addNewButton}</div>
{showAuthDialog && (
<AuthDialog
needGraph
next={() => {
setDialogHidden(false);
setShowingPublishDialog(true);
}}
onDismiss={() => {
setShowAuthDialog(false);
setShowingAuthDialog(false);
}}
/>
)}
{!dialogHidden ? (
{showPublishDialog ? (
<PublishProfileDialog
closeDialog={() => {
setDialogHidden(true);
setShowingPublishDialog(false);
// reset current
setCurrent(null);
}}
Expand Down
24 changes: 8 additions & 16 deletions Composer/packages/client/src/utils/auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -327,27 +327,19 @@ export function getAccessTokenUrl(options: { clientId: string; redirectUrl: stri
return url;
}

export function isShowAuthDialog(needGraph: boolean): boolean {
export function userShouldProvideTokens(): boolean {
if (isElectron()) {
return false;
} else if (!(authConfig.clientId && authConfig.redirectUrl && authConfig.tenantId)) {
return isTokenExpired(getTokenFromCache('accessToken'))
? true
: needGraph && isTokenExpired(getTokenFromCache('graphToken'))
? true
: false;
} else {
return false;
}
} else return !(authConfig.clientId && authConfig.redirectUrl && authConfig.tenantId);
}

export function userShouldProvideTokens(): boolean {
if (isElectron()) {
return false;
} else if (authConfig.clientId && authConfig.redirectUrl && authConfig.tenantId) {
export function isShowAuthDialog(needGraph: boolean): boolean {
if (userShouldProvideTokens())
return (
(needGraph && isTokenExpired(getTokenFromCache('graphToken'))) || isTokenExpired(getTokenFromCache('accessToken'))
);
else {
return false;
} else {
return true;
}
}

Expand Down