fix(config-profiles): show Git mount refresh progress

Disable duplicate refresh requests and show in-progress feedback while Git mount sources are refreshed.
This commit is contained in:
2026-07-21 21:14:08 +02:00
parent 25e870ba43
commit 900a8e47a5
7 changed files with 44 additions and 5 deletions
@@ -14,6 +14,7 @@ interface Props {
saveStatus: "idle" | "saving" | "saved" | "error";
previewData: ResolvedProfile | null;
previewingId: string | null;
isRefreshingGitMounts: boolean;
projects: ProjectWithRepos[];
toolTypes: ToolType[];
availableProfiles: ConfigProfile[];
@@ -55,6 +56,7 @@ export const ConfigProfileEditorPanel = ({
saveStatus,
previewData,
previewingId,
isRefreshingGitMounts,
projects,
toolTypes,
availableProfiles,
@@ -116,8 +118,16 @@ export const ConfigProfileEditorPanel = ({
</div>
{!isCreating && selectedProfile && (
<div className="row row-sm">
<button className="btn btn-secondary" onClick={onRefreshGitMounts}>
<Icon name="refresh" size="sm" /> Refresh Git mounts
<button className="btn btn-secondary" onClick={onRefreshGitMounts} disabled={isRefreshingGitMounts}>
{isRefreshingGitMounts ? (
<>
<Icon name="loading" size="sm" /> Refreshing Git mounts...
</>
) : (
<>
<Icon name="refresh" size="sm" /> Refresh Git mounts
</>
)}
</button>
<button className="btn btn-secondary" onClick={onPreview} disabled={previewingId === selectedProfile.id}>
{previewingId === selectedProfile.id ? (
@@ -28,6 +28,7 @@ interface Props {
availableProfiles: ConfigProfile[];
previewData: ResolvedProfile | null;
previewingId: string | null;
isRefreshingGitMounts: boolean;
saveStatus: "idle" | "saving" | "saved" | "error";
error: string | null;
onViewChange: (view: MobileView) => void;
@@ -80,6 +81,7 @@ export const ConfigProfilesMobileView = ({
availableProfiles,
previewData,
previewingId,
isRefreshingGitMounts,
saveStatus,
error,
onViewChange,
@@ -368,9 +370,19 @@ export const ConfigProfilesMobileView = ({
<button
type="button"
className="secondary-button"
disabled={isRefreshingGitMounts}
onClick={() => onRefreshGitMounts(selectedProfile.id)}
>
<Icon name="refresh" size="sm" /> Refresh Git mounts
{isRefreshingGitMounts ? (
<>
<Icon name="loading" size="sm" />
Refreshing Git mounts...
</>
) : (
<>
<Icon name="refresh" size="sm" /> Refresh Git mounts
</>
)}
</button>
<button
type="button"