Replace hacky refetchTrigger with useAsyncFn
Signed-off-by: Erik Engervall <erik.engervall@gmail.com>
This commit is contained in:
+2
-2
@@ -40,7 +40,7 @@ export const ResponseStepDialog = ({
|
||||
responseSteps,
|
||||
title,
|
||||
}: DialogProps) => {
|
||||
const { setRefetchTrigger } = useRefetchContext();
|
||||
const { fetchGitBatchInfo } = useRefetchContext();
|
||||
|
||||
return (
|
||||
<MaterialDialog
|
||||
@@ -60,7 +60,7 @@ export const ResponseStepDialog = ({
|
||||
|
||||
<DialogActions style={{ padding: 20 }}>
|
||||
<Button
|
||||
onClick={() => setRefetchTrigger(Date.now())}
|
||||
onClick={() => fetchGitBatchInfo()}
|
||||
disabled={progress < 100}
|
||||
variant="contained"
|
||||
size="large"
|
||||
|
||||
@@ -19,11 +19,7 @@ import { createContext, useContext } from 'react';
|
||||
import { GitReleaseManagerError } from '../errors/GitReleaseManagerError';
|
||||
|
||||
export const RefetchContext = createContext<
|
||||
| {
|
||||
refetchTrigger: number;
|
||||
setRefetchTrigger: React.Dispatch<React.SetStateAction<number>>;
|
||||
}
|
||||
| undefined
|
||||
{ fetchGitBatchInfo: () => any } | undefined
|
||||
>(undefined);
|
||||
|
||||
export const useRefetchContext = () => {
|
||||
@@ -34,6 +30,6 @@ export const useRefetchContext = () => {
|
||||
}
|
||||
|
||||
return {
|
||||
setRefetchTrigger: refetch.setRefetchTrigger,
|
||||
fetchGitBatchInfo: refetch.fetchGitBatchInfo,
|
||||
};
|
||||
};
|
||||
|
||||
@@ -37,11 +37,9 @@ export function Features({
|
||||
}) {
|
||||
const pluginApiClient = useApi(gitReleaseManagerApiRef);
|
||||
const { project } = useProjectContext();
|
||||
const [refetchTrigger, setRefetchTrigger] = useState(0);
|
||||
const { gitBatchInfo } = useGetGitBatchInfo({
|
||||
const { gitBatchInfo, fetchGitBatchInfo } = useGetGitBatchInfo({
|
||||
pluginApiClient,
|
||||
project,
|
||||
refetchTrigger,
|
||||
});
|
||||
|
||||
const { versioningStrategyMatches } = useVersioningStrategyMatchesRepoTags({
|
||||
@@ -90,7 +88,7 @@ export function Features({
|
||||
}
|
||||
|
||||
return (
|
||||
<RefetchContext.Provider value={{ refetchTrigger, setRefetchTrigger }}>
|
||||
<RefetchContext.Provider value={{ fetchGitBatchInfo }}>
|
||||
<ErrorBoundary>
|
||||
{gitBatchInfo.value.latestRelease && !versioningStrategyMatches && (
|
||||
<Alert severity="warning" style={{ marginBottom: 20 }}>
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { useAsync } from 'react-use';
|
||||
import { useEffect } from 'react';
|
||||
import { useAsyncFn } from 'react-use';
|
||||
|
||||
import { GitReleaseApi } from '../api/GitReleaseClient';
|
||||
import { Project } from '../contexts/ProjectContext';
|
||||
@@ -22,15 +23,13 @@ import { Project } from '../contexts/ProjectContext';
|
||||
interface GetGitBatchInfo {
|
||||
project: Project;
|
||||
pluginApiClient: GitReleaseApi;
|
||||
refetchTrigger: number;
|
||||
}
|
||||
|
||||
export const useGetGitBatchInfo = ({
|
||||
project,
|
||||
pluginApiClient,
|
||||
refetchTrigger,
|
||||
}: GetGitBatchInfo) => {
|
||||
const gitBatchInfo = useAsync(async () => {
|
||||
const [gitBatchInfo, fetchGitBatchInfo] = useAsyncFn(async () => {
|
||||
const [{ repository }, { latestRelease }] = await Promise.all([
|
||||
pluginApiClient.getRepository({
|
||||
owner: project.owner,
|
||||
@@ -61,9 +60,14 @@ export const useGetGitBatchInfo = ({
|
||||
releaseBranch,
|
||||
repository,
|
||||
};
|
||||
}, [project, refetchTrigger]);
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
fetchGitBatchInfo();
|
||||
}, [fetchGitBatchInfo, project]);
|
||||
|
||||
return {
|
||||
gitBatchInfo,
|
||||
fetchGitBatchInfo,
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user