1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-08-08 23:35:31 +02:00

feat(edge/stacks): sync EE codechanges [EE-498] (#8580)

This commit is contained in:
Chaim Lev-Ari 2023-05-31 01:33:22 +07:00 committed by GitHub
parent 0ec7dfce69
commit 93bf630105
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
53 changed files with 1572 additions and 424 deletions

View file

@ -13,7 +13,11 @@ export async function createGitCredential(
gitCredential: CreateGitCredentialPayload
) {
try {
await axios.post(buildGitUrl(gitCredential.userId), gitCredential);
const { data } = await axios.post<{ gitCredential: GitCredential }>(
buildGitUrl(gitCredential.userId),
gitCredential
);
return data.gitCredential;
} catch (e) {
throw parseAxiosError(e as Error, 'Unable to create git credential');
}

View file

@ -1,6 +1,7 @@
import axios, { parseAxiosError } from '@/portainer/services/axios';
import { TeamId } from '@/react/portainer/users/teams/types';
import { UserId } from '@/portainer/users/types';
import { RegistryId, Registry } from '@/react/portainer/registries/types';
import { EnvironmentId } from '../types';
@ -14,12 +15,6 @@ interface AccessPolicy {
type UserAccessPolicies = Record<UserId, AccessPolicy>; // map[UserID]AccessPolicy
type TeamAccessPolicies = Record<TeamId, AccessPolicy>;
export type RegistryId = number;
export interface Registry {
Id: RegistryId;
Name: string;
}
interface RegistryAccess {
UserAccessPolicies: UserAccessPolicies;
TeamAccessPolicies: TeamAccessPolicies;

View file

@ -22,3 +22,27 @@ export function parseAuthResponse(
RepositoryUsername: auth.Username,
};
}
export function transformGitAuthenticationViewModel(
auth?: GitAuthModel
): GitAuthenticationResponse | null {
if (
!auth ||
!auth.RepositoryAuthentication ||
typeof auth.RepositoryGitCredentialID === 'undefined' ||
(auth.RepositoryGitCredentialID === 0 && auth.RepositoryPassword === '')
) {
return null;
}
if (auth.RepositoryGitCredentialID !== 0) {
return {
GitCredentialID: auth.RepositoryGitCredentialID,
};
}
return {
Username: auth.RepositoryUsername,
Password: auth.RepositoryPassword,
};
}

View file

@ -15,9 +15,9 @@ export interface AutoUpdateResponse {
}
export interface GitAuthenticationResponse {
Username: string;
Password: string;
GitCredentialID: number;
Username?: string;
Password?: string;
GitCredentialID?: number;
}
export interface RepoConfigResponse {

View file

@ -0,0 +1,3 @@
export const queryKeys = {
registries: () => ['registries'] as const,
};

View file

@ -0,0 +1,20 @@
import { useQuery } from 'react-query';
import axios, { parseAxiosError } from '@/portainer/services/axios';
import { Registry } from '../types';
import { queryKeys } from './queryKeys';
export function useRegistries() {
return useQuery(queryKeys.registries(), getRegistries);
}
async function getRegistries() {
try {
const response = await axios.get<Array<Registry>>('/registries');
return response.data;
} catch (err) {
throw parseAxiosError(err as Error, 'Unable to retrieve registries');
}
}

View file

@ -0,0 +1,5 @@
export type RegistryId = number;
export interface Registry {
Id: RegistryId;
Name: string;
}