feat(releases-widget): add import from docker functionality (#3130)

This commit is contained in:
Andre Silva
2025-06-06 18:59:46 +01:00
committed by GitHub
parent c7a21b1a5f
commit 7071d76c52
37 changed files with 386 additions and 69 deletions

View File

@@ -156,7 +156,7 @@ export default function ReleasesWidget({ options }: WidgetComponentProps<"releas
>
<MaskedOrNormalImage
className="releases-repository-header-icon"
imageUrl={repository.iconUrl ?? Providers[repository.providerKey]?.iconUrl}
imageUrl={repository.iconUrl ?? Providers[repository.providerKey].iconUrl}
hasColor={hasIconColor}
style={{
width: "1em",
@@ -474,7 +474,7 @@ const ExpandedDisplay = ({ repository, hasIconColor }: ExtendedDisplayProps) =>
<Group className="releases-repository-expanded-header-provider-wrapper" gap={5} align="center">
<MaskedOrNormalImage
className="releases-repository-expanded-header-provider-icon"
imageUrl={Providers[repository.providerKey]?.iconUrl}
imageUrl={Providers[repository.providerKey].iconUrl}
hasColor={hasIconColor}
style={{
width: "1em",
@@ -482,7 +482,7 @@ const ExpandedDisplay = ({ repository, hasIconColor }: ExtendedDisplayProps) =>
}}
/>
<Text className="releases-repository-expanded-header-provider-name" size="xs" c="iconColor" ff="monospace">
{Providers[repository.providerKey]?.name}
{Providers[repository.providerKey].name}
</Text>
</Group>
</Group>

View File

@@ -3,16 +3,7 @@ export interface ReleasesProvider {
iconUrl: string;
}
interface ProvidersProps {
[key: string]: ReleasesProvider;
DockerHub: ReleasesProvider;
Github: ReleasesProvider;
Gitlab: ReleasesProvider;
Npm: ReleasesProvider;
Codeberg: ReleasesProvider;
}
export const Providers: ProvidersProps = {
export const Providers = {
DockerHub: {
name: "Docker Hub",
iconUrl: "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/docker.svg",
@@ -33,4 +24,10 @@ export const Providers: ProvidersProps = {
name: "Codeberg",
iconUrl: "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/codeberg.svg",
},
} as const satisfies Record<string, ReleasesProvider>;
export type ProviderKey = keyof typeof Providers;
export const isProviderKey = (key: string): key is ProviderKey => {
return key in Providers;
};

View File

@@ -1,3 +1,5 @@
import type { ProviderKey } from "./releases-providers";
export interface ReleasesVersionFilter {
prefix?: string;
precision: number;
@@ -5,7 +7,7 @@ export interface ReleasesVersionFilter {
}
export interface ReleasesRepository {
providerKey: string;
providerKey: ProviderKey;
identifier: string;
name?: string;
versionFilter?: ReleasesVersionFilter;