diff --git a/packages/app/src/apis.ts b/packages/app/src/apis.ts
index beea444a6c..ccc576e727 100644
--- a/packages/app/src/apis.ts
+++ b/packages/app/src/apis.ts
@@ -33,7 +33,6 @@ import {
graphQlBrowseApiRef,
GraphQLEndpoints,
} from '@backstage/plugin-graphiql';
-// import { githubReleaseManagerApiRef } from '@backstage/plugin-github-release-manager';
export const apis: AnyApiFactory[] = [
createApiFactory({
@@ -42,16 +41,6 @@ export const apis: AnyApiFactory[] = [
factory: ({ configApi }) => ScmIntegrationsApi.fromConfig(configApi),
}),
- // createApiFactory({
- // api: githubReleaseManagerApiRef,
- // deps: { githubAuthApi: githubAuthApiRef },
- // factory: ({ githubAuthApi }) => {
- // return {
-
- // }
- // },
- // }),
-
createApiFactory({
api: graphQlBrowseApiRef,
deps: { errorApi: errorApiRef, githubAuthApi: githubAuthApiRef },
diff --git a/plugins/github-release-manager/dev/index.tsx b/plugins/github-release-manager/dev/index.tsx
index 31a6a9a563..62eb2a8246 100644
--- a/plugins/github-release-manager/dev/index.tsx
+++ b/plugins/github-release-manager/dev/index.tsx
@@ -16,7 +16,7 @@
import React from 'react';
import { createDevApp } from '@backstage/dev-utils';
-import { Typography } from '@material-ui/core';
+import { Box, Typography } from '@material-ui/core';
import {
gitHubReleaseManagerPlugin,
@@ -24,31 +24,27 @@ import {
} from '../src/plugin';
import { InfoCardPlus } from '../src/components/InfoCardPlus';
-function DevWrapper({ children }: { children: React.ReactNode }) {
- return
{children}
;
-}
-
createDevApp()
.registerPlugin(gitHubReleaseManagerPlugin)
.addPage({
title: 'Dynamic',
path: '/dynamic',
element: (
-
+
Dev notes
Configure plugin via select inputs
-
+
),
})
.addPage({
title: 'Static',
path: '/static',
element: (
-
+
Dev notes
@@ -64,14 +60,14 @@ createDevApp()
versioningStrategy: 'semver',
}}
/>
-
+
),
})
.addPage({
title: 'Omit',
path: '/omit',
element: (
-
+
Dev notes
Each feature can be omitted
@@ -112,7 +108,7 @@ createDevApp()
},
}}
/>
-
+
),
})
.render();
diff --git a/plugins/github-release-manager/src/GitHubReleaseManager.tsx b/plugins/github-release-manager/src/GitHubReleaseManager.tsx
index f0156af06c..df17b8c002 100644
--- a/plugins/github-release-manager/src/GitHubReleaseManager.tsx
+++ b/plugins/github-release-manager/src/GitHubReleaseManager.tsx
@@ -30,7 +30,6 @@ import { CenteredCircularProgress } from './components/CenteredCircularProgress'
import { githubReleaseManagerApiRef } from './api/serviceApiRef';
import { InfoCardPlus } from './components/InfoCardPlus';
import { isProjectValid } from './helpers/isProjectValid';
-import { PluginApiClientContext } from './contexts/PluginApiClientContext';
import { ProjectContext, Project } from './contexts/ProjectContext';
import { RepoDetailsForm } from './features/RepoDetailsForm/RepoDetailsForm';
import { useQueryHandler } from './hooks/useQueryHandler';
@@ -82,18 +81,16 @@ export function GitHubReleaseManager(props: GitHubReleaseManagerProps) {
}
return (
-
-
-
-
+
+
+
-
-
-
+
+
+
- {isProjectValid(project) && }
-
-
-
+ {isProjectValid(project) &&
}
+
+
);
}
diff --git a/plugins/github-release-manager/src/components/Divider.tsx b/plugins/github-release-manager/src/components/Divider.tsx
index 9ddf21e0ff..6be0f4eb3c 100644
--- a/plugins/github-release-manager/src/components/Divider.tsx
+++ b/plugins/github-release-manager/src/components/Divider.tsx
@@ -15,14 +15,18 @@
*/
import React from 'react';
-import { Divider as MaterialDivider } from '@material-ui/core';
+import { Box, Divider as MaterialDivider } from '@material-ui/core';
import { TEST_IDS } from '../test-helpers/test-ids';
export const Divider = () => {
return (
-
+
-
+
);
};
diff --git a/plugins/github-release-manager/src/contexts/PluginApiClientContext.ts b/plugins/github-release-manager/src/contexts/PluginApiClientContext.ts
deleted file mode 100644
index 2d4c9f27ac..0000000000
--- a/plugins/github-release-manager/src/contexts/PluginApiClientContext.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2021 Spotify AB
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import { createContext, useContext } from 'react';
-
-import { IPluginApiClient } from '../api/PluginApiClient';
-import { GitHubReleaseManagerError } from '../errors/GitHubReleaseManagerError';
-
-export const PluginApiClientContext = createContext<
- { pluginApiClient: IPluginApiClient } | undefined
->(undefined);
-
-export const usePluginApiClientContext = () => {
- const { pluginApiClient } = useContext(PluginApiClientContext) ?? {};
-
- if (!pluginApiClient) {
- throw new GitHubReleaseManagerError('pluginApiClient not found');
- }
-
- return {
- pluginApiClient,
- };
-};
diff --git a/plugins/github-release-manager/src/features/CreateRc/hooks/useCreateRc.ts b/plugins/github-release-manager/src/features/CreateRc/hooks/useCreateRc.ts
index 30d5a8894f..b205cfad6a 100644
--- a/plugins/github-release-manager/src/features/CreateRc/hooks/useCreateRc.ts
+++ b/plugins/github-release-manager/src/features/CreateRc/hooks/useCreateRc.ts
@@ -16,6 +16,7 @@
import { useEffect, useState } from 'react';
import { useAsync, useAsyncFn } from 'react-use';
+import { useApi } from '@backstage/core';
import {
GetLatestReleaseResult,
@@ -23,10 +24,10 @@ import {
} from '../../../api/PluginApiClient';
import { CardHook, ComponentConfigCreateRc } from '../../../types/types';
import { getRcGitHubInfo } from '../../../helpers/getRcGitHubInfo';
+import { githubReleaseManagerApiRef } from '../../../api/serviceApiRef';
import { GitHubReleaseManagerError } from '../../../errors/GitHubReleaseManagerError';
import { Project } from '../../../contexts/ProjectContext';
import { useResponseSteps } from '../../../hooks/useResponseSteps';
-import { usePluginApiClientContext } from '../../../contexts/PluginApiClientContext';
interface CreateRC {
defaultBranch: GetRepositoryResult['defaultBranch'];
@@ -43,7 +44,7 @@ export function useCreateRc({
project,
successCb,
}: CreateRC): CardHook {
- const { pluginApiClient } = usePluginApiClientContext();
+ const pluginApiClient = useApi(githubReleaseManagerApiRef);
if (nextGitHubInfo.error) {
throw new GitHubReleaseManagerError(
diff --git a/plugins/github-release-manager/src/features/Features.tsx b/plugins/github-release-manager/src/features/Features.tsx
index 5d3e2a7151..f8c48b0732 100644
--- a/plugins/github-release-manager/src/features/Features.tsx
+++ b/plugins/github-release-manager/src/features/Features.tsx
@@ -16,17 +16,17 @@
import React, { useState } from 'react';
import { Alert, AlertTitle } from '@material-ui/lab';
-import { ErrorBoundary } from '@backstage/core';
+import { ErrorBoundary, useApi } from '@backstage/core';
import { CenteredCircularProgress } from '../components/CenteredCircularProgress';
import { CreateRc } from './CreateRc/CreateRc';
+import { githubReleaseManagerApiRef } from '../api/serviceApiRef';
import { GitHubReleaseManagerProps } from '../GitHubReleaseManager';
import { Info } from './Info/Info';
import { Patch } from './Patch/Patch';
import { PromoteRc } from './PromoteRc/PromoteRc';
import { RefetchContext } from '../contexts/RefetchContext';
import { useGetGitHubBatchInfo } from '../hooks/useGetGitHubBatchInfo';
-import { usePluginApiClientContext } from '../contexts/PluginApiClientContext';
import { useProjectContext } from '../contexts/ProjectContext';
import { useVersioningStrategyMatchesRepoTags } from '../hooks/useVersioningStrategyMatchesRepoTags';
import { validateTagName } from '../helpers/tagParts/validateTagName';
@@ -36,7 +36,7 @@ export function Features({
}: {
features: GitHubReleaseManagerProps['features'];
}) {
- const { pluginApiClient } = usePluginApiClientContext();
+ const pluginApiClient = useApi(githubReleaseManagerApiRef);
const { project } = useProjectContext();
const [refetchTrigger, setRefetchTrigger] = useState(0);
const { gitHubBatchInfo } = useGetGitHubBatchInfo({
diff --git a/plugins/github-release-manager/src/features/Patch/PatchBody.tsx b/plugins/github-release-manager/src/features/Patch/PatchBody.tsx
index 7c99e66f9e..47b1db1578 100644
--- a/plugins/github-release-manager/src/features/Patch/PatchBody.tsx
+++ b/plugins/github-release-manager/src/features/Patch/PatchBody.tsx
@@ -32,6 +32,7 @@ import {
} from '@material-ui/core';
import FileCopyIcon from '@material-ui/icons/FileCopy';
import OpenInNewIcon from '@material-ui/icons/OpenInNew';
+import { useApi } from '@backstage/core';
import {
GetBranchResult,
@@ -41,12 +42,12 @@ import { CalverTagParts } from '../../helpers/tagParts/getCalverTagParts';
import { CenteredCircularProgress } from '../../components/CenteredCircularProgress';
import { ComponentConfigPatch } from '../../types/types';
import { Differ } from '../../components/Differ';
+import { githubReleaseManagerApiRef } from '../../api/serviceApiRef';
import { GitHubReleaseManagerError } from '../../errors/GitHubReleaseManagerError';
import { ResponseStepDialog } from '../../components/ResponseStepDialog/ResponseStepDialog';
import { SemverTagParts } from '../../helpers/tagParts/getSemverTagParts';
import { TEST_IDS } from '../../test-helpers/test-ids';
import { usePatch } from './hooks/usePatch';
-import { usePluginApiClientContext } from '../../contexts/PluginApiClientContext';
import { useProjectContext } from '../../contexts/ProjectContext';
import { useStyles } from '../../styles/styles';
@@ -65,7 +66,7 @@ export const PatchBody = ({
successCb,
tagParts,
}: PatchBodyProps) => {
- const { pluginApiClient } = usePluginApiClientContext();
+ const pluginApiClient = useApi(githubReleaseManagerApiRef);
const { project } = useProjectContext();
const [checkedCommitIndex, setCheckedCommitIndex] = useState(-1);
diff --git a/plugins/github-release-manager/src/features/Patch/hooks/usePatch.ts b/plugins/github-release-manager/src/features/Patch/hooks/usePatch.ts
index 06001f1771..5da8d020b9 100644
--- a/plugins/github-release-manager/src/features/Patch/hooks/usePatch.ts
+++ b/plugins/github-release-manager/src/features/Patch/hooks/usePatch.ts
@@ -16,6 +16,7 @@
import { useEffect, useState } from 'react';
import { useAsync, useAsyncFn } from 'react-use';
+import { useApi } from '@backstage/core';
import {
GetLatestReleaseResult,
@@ -23,9 +24,9 @@ import {
} from '../../../api/PluginApiClient';
import { CalverTagParts } from '../../../helpers/tagParts/getCalverTagParts';
import { ComponentConfigPatch, CardHook } from '../../../types/types';
+import { githubReleaseManagerApiRef } from '../../../api/serviceApiRef';
import { Project } from '../../../contexts/ProjectContext';
import { SemverTagParts } from '../../../helpers/tagParts/getSemverTagParts';
-import { usePluginApiClientContext } from '../../../contexts/PluginApiClientContext';
import { useResponseSteps } from '../../../hooks/useResponseSteps';
interface Patch {
@@ -44,7 +45,7 @@ export function usePatch({
tagParts,
successCb,
}: Patch): CardHook {
- const { pluginApiClient } = usePluginApiClientContext();
+ const pluginApiClient = useApi(githubReleaseManagerApiRef);
const {
responseSteps,
addStepToResponseSteps,
diff --git a/plugins/github-release-manager/src/features/PromoteRc/hooks/usePromoteRc.ts b/plugins/github-release-manager/src/features/PromoteRc/hooks/usePromoteRc.ts
index 4d1a9e4037..6ff6c5ef9f 100644
--- a/plugins/github-release-manager/src/features/PromoteRc/hooks/usePromoteRc.ts
+++ b/plugins/github-release-manager/src/features/PromoteRc/hooks/usePromoteRc.ts
@@ -16,11 +16,12 @@
import { useState, useEffect } from 'react';
import { useAsync, useAsyncFn } from 'react-use';
+import { useApi } from '@backstage/core';
-import { GetLatestReleaseResult } from '../../../api/PluginApiClient';
import { CardHook, ComponentConfigPromoteRc } from '../../../types/types';
+import { GetLatestReleaseResult } from '../../../api/PluginApiClient';
+import { githubReleaseManagerApiRef } from '../../../api/serviceApiRef';
import { useProjectContext } from '../../../contexts/ProjectContext';
-import { usePluginApiClientContext } from '../../../contexts/PluginApiClientContext';
import { useResponseSteps } from '../../../hooks/useResponseSteps';
interface PromoteRc {
@@ -34,7 +35,7 @@ export function usePromoteRc({
releaseVersion,
successCb,
}: PromoteRc): CardHook {
- const { pluginApiClient } = usePluginApiClientContext();
+ const pluginApiClient = useApi(githubReleaseManagerApiRef);
const { project } = useProjectContext();
const {
responseSteps,
diff --git a/plugins/github-release-manager/src/features/RepoDetailsForm/Owner.tsx b/plugins/github-release-manager/src/features/RepoDetailsForm/Owner.tsx
index 3cd2be6f7e..a392671c0f 100644
--- a/plugins/github-release-manager/src/features/RepoDetailsForm/Owner.tsx
+++ b/plugins/github-release-manager/src/features/RepoDetailsForm/Owner.tsx
@@ -24,16 +24,17 @@ import {
MenuItem,
Select,
} from '@material-ui/core';
+import { useApi } from '@backstage/core';
import { CenteredCircularProgress } from '../../components/CenteredCircularProgress';
+import { githubReleaseManagerApiRef } from '../../api/serviceApiRef';
import { TEST_IDS } from '../../test-helpers/test-ids';
import { useFormClasses } from './styles';
-import { usePluginApiClientContext } from '../../contexts/PluginApiClientContext';
import { useProjectContext } from '../../contexts/ProjectContext';
import { useQueryHandler } from '../../hooks/useQueryHandler';
export function Owner({ username }: { username: string }) {
- const { pluginApiClient } = usePluginApiClientContext();
+ const pluginApiClient = useApi(githubReleaseManagerApiRef);
const { project } = useProjectContext();
const formClasses = useFormClasses();
const navigate = useNavigate();
diff --git a/plugins/github-release-manager/src/features/RepoDetailsForm/Repo.tsx b/plugins/github-release-manager/src/features/RepoDetailsForm/Repo.tsx
index cb08a651cb..b1f8298495 100644
--- a/plugins/github-release-manager/src/features/RepoDetailsForm/Repo.tsx
+++ b/plugins/github-release-manager/src/features/RepoDetailsForm/Repo.tsx
@@ -24,16 +24,17 @@ import {
MenuItem,
Select,
} from '@material-ui/core';
+import { useApi } from '@backstage/core';
import { CenteredCircularProgress } from '../../components/CenteredCircularProgress';
+import { githubReleaseManagerApiRef } from '../../api/serviceApiRef';
import { TEST_IDS } from '../../test-helpers/test-ids';
import { useFormClasses } from './styles';
-import { usePluginApiClientContext } from '../../contexts/PluginApiClientContext';
import { useProjectContext } from '../../contexts/ProjectContext';
import { useQueryHandler } from '../../hooks/useQueryHandler';
export function Repo() {
- const { pluginApiClient } = usePluginApiClientContext();
+ const pluginApiClient = useApi(githubReleaseManagerApiRef);
const { project } = useProjectContext();
const navigate = useNavigate();
const formClasses = useFormClasses();
diff --git a/plugins/github-release-manager/src/features/Stats/Info/hooks/useGetReleaseTimes.tsx b/plugins/github-release-manager/src/features/Stats/Info/hooks/useGetReleaseTimes.tsx
index 2909763a8f..afe9a2f8c5 100644
--- a/plugins/github-release-manager/src/features/Stats/Info/hooks/useGetReleaseTimes.tsx
+++ b/plugins/github-release-manager/src/features/Stats/Info/hooks/useGetReleaseTimes.tsx
@@ -17,9 +17,10 @@
import { useEffect, useState } from 'react';
import { useAsync, useAsyncFn } from 'react-use';
import { DateTime } from 'luxon';
+import { useApi } from '@backstage/core';
import { getReleaseCommitPairs } from '../helpers/getReleaseCommitPairs';
-import { usePluginApiClientContext } from '../../../../contexts/PluginApiClientContext';
+import { githubReleaseManagerApiRef } from '../../../../api/serviceApiRef';
import { useProjectContext } from '../../../../contexts/ProjectContext';
import { useReleaseStatsContext } from '../../contexts/ReleaseStatsContext';
@@ -45,7 +46,7 @@ type ReleaseTime = {
};
export function useGetReleaseTimes() {
- const { pluginApiClient } = usePluginApiClientContext();
+ const pluginApiClient = useApi(githubReleaseManagerApiRef);
const { project } = useProjectContext();
const { releaseStats } = useReleaseStatsContext();
const [averageReleaseTime, setAverageReleaseTime] = useState(
diff --git a/plugins/github-release-manager/src/features/Stats/hooks/useGetCommit.ts b/plugins/github-release-manager/src/features/Stats/hooks/useGetCommit.ts
index 95db493774..f9681beda6 100644
--- a/plugins/github-release-manager/src/features/Stats/hooks/useGetCommit.ts
+++ b/plugins/github-release-manager/src/features/Stats/hooks/useGetCommit.ts
@@ -15,13 +15,14 @@
*/
import { useAsync } from 'react-use';
+import { useApi } from '@backstage/core';
+import { githubReleaseManagerApiRef } from '../../../api/serviceApiRef';
import { GitHubReleaseManagerError } from '../../../errors/GitHubReleaseManagerError';
-import { usePluginApiClientContext } from '../../../contexts/PluginApiClientContext';
import { useProjectContext } from '../../../contexts/ProjectContext';
export const useGetCommit = ({ ref }: { ref?: string }) => {
- const { pluginApiClient } = usePluginApiClientContext();
+ const pluginApiClient = useApi(githubReleaseManagerApiRef);
const { project } = useProjectContext();
const commit = useAsync(async () => {
diff --git a/plugins/github-release-manager/src/features/Stats/hooks/useGetStats.ts b/plugins/github-release-manager/src/features/Stats/hooks/useGetStats.ts
index f918be0c97..3e093f68aa 100644
--- a/plugins/github-release-manager/src/features/Stats/hooks/useGetStats.ts
+++ b/plugins/github-release-manager/src/features/Stats/hooks/useGetStats.ts
@@ -14,13 +14,14 @@
* limitations under the License.
*/
+import { useApi } from '@backstage/core';
import { useAsync } from 'react-use';
-import { usePluginApiClientContext } from '../../../contexts/PluginApiClientContext';
+import { githubReleaseManagerApiRef } from '../../../api/serviceApiRef';
import { useProjectContext } from '../../../contexts/ProjectContext';
export const useGetStats = () => {
- const { pluginApiClient } = usePluginApiClientContext();
+ const pluginApiClient = useApi(githubReleaseManagerApiRef);
const { project } = useProjectContext();
const stats = useAsync(async () => {