Merge branch 'develop' into release
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2026-07-03 17:26:46 +09:00
+14 -5
View File
@@ -10,6 +10,7 @@ import {
getLauncherSource, getLauncherSource,
listGiteaCommits, listGiteaCommits,
listLauncherVersions, listLauncherVersions,
listPlatformRepos,
listStudioRepos, listStudioRepos,
updateLauncherSource, updateLauncherSource,
type GiteaCommit, type GiteaCommit,
@@ -31,7 +32,7 @@ const targetLabels: Record<SourceTarget, { title: string; description: string; d
'launcher-client': { 'launcher-client': {
title: '클라이언트', title: '클라이언트',
description: '사용자 PC에 설치되는 Electron .deb 빌드 소스입니다.', description: '사용자 PC에 설치되는 Electron .deb 빌드 소스입니다.',
defaultOrg: 'studio' defaultOrg: 'platform'
}, },
'launcher-backend': { 'launcher-backend': {
title: '백엔드', title: '백엔드',
@@ -117,6 +118,8 @@ export function LauncherSourcePage() {
const { toast } = useToast(); const { toast } = useToast();
const [activeTarget, setActiveTarget] = useState<SourceTarget>('launcher-client'); const [activeTarget, setActiveTarget] = useState<SourceTarget>('launcher-client');
const [versions, setVersions] = useState<LauncherVersion[]>([]); const [versions, setVersions] = useState<LauncherVersion[]>([]);
const [platformRepos, setPlatformRepos] = useState<GiteaRepo[]>([]);
const [studioRepos, setStudioRepos] = useState<GiteaRepo[]>([]);
const [repos, setRepos] = useState<GiteaRepo[]>([]); const [repos, setRepos] = useState<GiteaRepo[]>([]);
const [forms, setForms] = useState<Record<SourceTarget, SourceForm>>({ const [forms, setForms] = useState<Record<SourceTarget, SourceForm>>({
'launcher-client': emptyForm(), 'launcher-client': emptyForm(),
@@ -146,14 +149,16 @@ export function LauncherSourcePage() {
const refresh = () => { const refresh = () => {
setLoading(true); setLoading(true);
Promise.all([listLauncherVersions(), listStudioRepos(), getLauncherSource()]) Promise.all([listLauncherVersions(), listPlatformRepos(), listStudioRepos(), getLauncherSource()])
.then(([nextVersions, studioRepos, sourceResult]) => { .then(([nextVersions, platformRepos, studioRepos, sourceResult]) => {
const nextVersion = nextVersions.find((version) => version.isActive) ?? nextVersions[0]; const nextVersion = nextVersions.find((version) => version.isActive) ?? nextVersions[0];
const clientRepository = sourceResult.source.client?.repository ?? sourceResult.source.repository ?? nextVersion?.repository ?? (studioRepos[0] ? repoFullName(studioRepos[0]) : ''); const clientRepository = sourceResult.source.client?.repository ?? sourceResult.source.repository ?? nextVersion?.repository ?? (platformRepos[0] ? repoFullName(platformRepos[0]) : '');
const backendRepository = sourceResult.source.backend?.repository ?? (studioRepos[0] ? repoFullName(studioRepos[0]) : ''); const backendRepository = sourceResult.source.backend?.repository ?? (studioRepos[0] ? repoFullName(studioRepos[0]) : '');
setVersions(nextVersions); setVersions(nextVersions);
setRepos(studioRepos); setPlatformRepos(platformRepos);
setStudioRepos(studioRepos);
setRepos(activeTarget === 'launcher-client' ? platformRepos : studioRepos);
setForms({ setForms({
'launcher-client': { 'launcher-client': {
repository: clientRepository, repository: clientRepository,
@@ -175,6 +180,10 @@ export function LauncherSourcePage() {
refresh(); refresh();
}, []); }, []);
useEffect(() => {
setRepos(activeTarget === 'launcher-client' ? platformRepos : studioRepos);
}, [activeTarget, platformRepos, studioRepos]);
useEffect(() => { useEffect(() => {
const repository = splitRepository(activeForm.repository, activeTargetMeta.defaultOrg); const repository = splitRepository(activeForm.repository, activeTargetMeta.defaultOrg);
if (!repository) { if (!repository) {