Skip to content

Commit

Permalink
fix global depepdennceis UI
Browse files Browse the repository at this point in the history
  • Loading branch information
q-nick committed Jan 22, 2023
1 parent 037d120 commit 520244a
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 33 deletions.
102 changes: 69 additions & 33 deletions client/hooks/use-mutate-dependencies.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ import { useMutation } from '@tanstack/react-query';
import { useProjectsJobs, useProjectStore } from '../app/ContextStore';
import {
deleteDependencies,
deleteGlobalDependencies,
installDependencies,
installGlobalDependencies,
} from '../service/dependencies.service';

// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/explicit-function-return-type
Expand All @@ -22,42 +24,76 @@ export const useMutateDependencies = (projectPath: string) => {

const { dependenciesMutate } = project;

// delete dev
const delDevelopmentDependencies = Object.entries(dependenciesMutate || {})
.filter(([_, value]) => value.type === 'dev' && value.delete)
.map(([name]) => ({ name }));
if (delDevelopmentDependencies.length > 0) {
await deleteDependencies(projectPath, 'dev', delDevelopmentDependencies);
}
// eslint-disable-next-line unicorn/consistent-destructuring
if (project.path === 'global') {
// delete global
const delDependencies = Object.entries(dependenciesMutate || {})
.filter(([_, value]) => value.type === 'global' && value.delete)
.map(([name]) => ({ name }));
if (delDependencies.length > 0) {
await deleteGlobalDependencies(delDependencies);
}

// delete prod
const delProductionDependencies = Object.entries(dependenciesMutate || {})
.filter(([_, value]) => value.type === 'prod' && value.delete)
.map(([name]) => ({ name }));
if (delProductionDependencies.length > 0) {
await deleteDependencies(projectPath, 'prod', delProductionDependencies);
}
// install global
const dependencies = Object.entries(dependenciesMutate || {})
.filter(
([_, value]) => value.type === 'global' && value.required !== null,
)
.map(([name, value]) => ({
name,
version: value.required || undefined,
}));
if (dependencies.length > 0) {
await installGlobalDependencies(dependencies);
}
} else {
// delete dev
const delDevelopmentDependencies = Object.entries(
dependenciesMutate || {},
)
.filter(([_, value]) => value.type === 'dev' && value.delete)
.map(([name]) => ({ name }));
if (delDevelopmentDependencies.length > 0) {
await deleteDependencies(
projectPath,
'dev',
delDevelopmentDependencies,
);
}

// dev
const devDependencies = Object.entries(dependenciesMutate || {})
.filter(([_, value]) => value.type === 'dev' && value.required !== null)
.map(([name, value]) => ({
name,
version: value.required || undefined,
}));
if (devDependencies.length > 0) {
await installDependencies(projectPath, 'dev', devDependencies);
}
// delete prod
const delProductionDependencies = Object.entries(dependenciesMutate || {})
.filter(([_, value]) => value.type === 'prod' && value.delete)
.map(([name]) => ({ name }));
if (delProductionDependencies.length > 0) {
await deleteDependencies(
projectPath,
'prod',
delProductionDependencies,
);
}

// install dev
const devDependencies = Object.entries(dependenciesMutate || {})
.filter(([_, value]) => value.type === 'dev' && value.required !== null)
.map(([name, value]) => ({
name,
version: value.required || undefined,
}));
if (devDependencies.length > 0) {
await installDependencies(projectPath, 'dev', devDependencies);
}

// prod
const dependencies = Object.entries(dependenciesMutate || {})
.filter(([_, value]) => value.type === 'prod' && value.required)
.map(([name, value]) => ({
name,
version: value.required || undefined,
}));
if (dependencies.length > 0) {
await installDependencies(projectPath, 'prod', dependencies);
// install prod
const dependencies = Object.entries(dependenciesMutate || {})
.filter(([_, value]) => value.type === 'prod' && value.required)
.map(([name, value]) => ({
name,
version: value.required || undefined,
}));
if (dependencies.length > 0) {
await installDependencies(projectPath, 'prod', dependencies);
}
}

dispatch({ action: 'mutateProjectDependencyReset', projectPath });
Expand Down
20 changes: 20 additions & 0 deletions client/service/dependencies.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,16 @@ export const installDependencies = async (
});
};

export const installGlobalDependencies = async (
dependencies: Basic[],
): Promise<void> => {
return fetchJSON(`${getBasePathFor('global')}`, {
method: 'POST',
body: JSON.stringify(dependencies),
headers: { 'x-cache-id': xCacheId },
});
};

export const reinstall = async (
projectPath: string,
manager?: Manager,
Expand All @@ -77,3 +87,13 @@ export const deleteDependencies = async (
headers: { 'x-cache-id': xCacheId },
});
};

export const deleteGlobalDependencies = async (
dependencies: Basic[],
): Promise<void> => {
return fetchJSON(`${getBasePathFor('global')}`, {
method: 'DELETE',
body: JSON.stringify(dependencies),
headers: { 'x-cache-id': xCacheId },
});
};

0 comments on commit 520244a

Please sign in to comment.