Skip to content

Commit 32361d7

Browse files
committed
rollback releaseSelections renaming
1 parent 7c90c83 commit 32361d7

File tree

2 files changed

+38
-47
lines changed

2 files changed

+38
-47
lines changed

src/ui/App.tsx

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const setsAreEqual = (a: Set<string>, b: Set<string>) => {
1313
};
1414

1515
type SubmitButtonProps = {
16-
releaseSelections: Record<string, string>;
16+
selections: Record<string, string>;
1717
packageDependencyErrors: Record<
1818
string,
1919
{ missingDependentNames: string[]; missingDependencies: string[] }
@@ -22,16 +22,14 @@ type SubmitButtonProps = {
2222
};
2323

2424
function SubmitButton({
25-
releaseSelections,
25+
selections,
2626
packageDependencyErrors,
2727
onSubmit,
2828
}: SubmitButtonProps) {
2929
const isDisabled =
30-
Object.keys(releaseSelections).length === 0 ||
30+
Object.keys(selections).length === 0 ||
3131
Object.keys(packageDependencyErrors).length > 0 ||
32-
Object.values(releaseSelections).every(
33-
(value) => value === 'intentionally-skip',
34-
);
32+
Object.values(selections).every((value) => value === 'intentionally-skip');
3533

3634
return (
3735
<button
@@ -50,9 +48,7 @@ function SubmitButton({
5048

5149
function App() {
5250
const [packages, setPackages] = useState<Package[]>([]);
53-
const [releaseSelections, setReleaseSelections] = useState<
54-
Record<string, string>
55-
>({});
51+
const [selections, setSelections] = useState<Record<string, string>>({});
5652
const [isSubmitting, setIsSubmitting] = useState(false);
5753
const [error, setError] = useState<string | null>(null);
5854
const [changelogs, setChangelogs] = useState<Record<string, string>>({});
@@ -80,7 +76,7 @@ function App() {
8076
const previousPackages = useRef<Set<string>>(new Set());
8177

8278
useEffect(() => {
83-
const majorBumps = Object.entries(releaseSelections)
79+
const majorBumps = Object.entries(selections)
8480
.filter(([_, type]) => type === 'major')
8581
.map(([pkgName]) => pkgName);
8682

@@ -94,9 +90,9 @@ function App() {
9490
.then((data: Package[]) => {
9591
const newPackageNames = new Set(data.map((pkg) => pkg.name));
9692

97-
// Only clean up releaseSelections if the package list actually changed
93+
// Only clean up selections if the package list actually changed
9894
if (!setsAreEqual(previousPackages.current, newPackageNames)) {
99-
setReleaseSelections((prev) =>
95+
setSelections((prev) =>
10096
Object.fromEntries(
10197
Object.entries(prev).filter(([pkgName]) =>
10298
newPackageNames.has(pkgName),
@@ -115,7 +111,7 @@ function App() {
115111
setError(err.message);
116112
console.error('Error fetching packages:', err);
117113
});
118-
}, [releaseSelections]);
114+
}, [selections]);
119115

120116
const checkDependencies = async (selectionData: Record<string, string>) => {
121117
if (Object.keys(selectionData).length === 0) return;
@@ -148,11 +144,11 @@ function App() {
148144

149145
useEffect(() => {
150146
const timeoutId = setTimeout(() => {
151-
void checkDependencies(releaseSelections);
147+
void checkDependencies(selections);
152148
}, 500);
153149

154150
return () => clearTimeout(timeoutId);
155-
}, [releaseSelections]);
151+
}, [selections]);
156152

157153
const handleCustomVersionChange = (packageName: string, version: string) => {
158154
try {
@@ -182,7 +178,7 @@ function App() {
182178
return rest;
183179
});
184180

185-
setReleaseSelections((prev) => ({
181+
setSelections((prev) => ({
186182
...prev,
187183
[packageName]: version,
188184
}));
@@ -199,14 +195,14 @@ function App() {
199195
value: ReleaseType | '',
200196
): void => {
201197
if (value === '') {
202-
const { [packageName]: _, ...rest } = releaseSelections;
203-
setReleaseSelections(rest);
198+
const { [packageName]: _, ...rest } = selections;
199+
setSelections(rest);
204200

205201
const { [packageName]: __, ...remainingErrors } = packageDependencyErrors;
206202
setPackageDependencyErrors(remainingErrors);
207203
} else {
208-
setReleaseSelections({
209-
...releaseSelections,
204+
setSelections({
205+
...selections,
210206
[packageName]: value,
211207
});
212208
}
@@ -218,7 +214,7 @@ function App() {
218214
const response = await fetch('/api/release', {
219215
method: 'POST',
220216
headers: { 'Content-Type': 'application/json' },
221-
body: JSON.stringify(releaseSelections),
217+
body: JSON.stringify(selections),
222218
});
223219

224220
const data: {
@@ -254,8 +250,8 @@ function App() {
254250
const errorMessage =
255251
err instanceof Error ? err.message : 'An error occurred';
256252
setError(errorMessage);
257-
console.error('Error submitting releaseSelections:', err);
258-
alert('Failed to submit releaseSelections. Please try again.');
253+
console.error('Error submitting selections:', err);
254+
alert('Failed to submit selections. Please try again.');
259255
} finally {
260256
setIsSubmitting(false);
261257
}
@@ -280,11 +276,11 @@ function App() {
280276
};
281277

282278
const handleBulkAction = (action: ReleaseType) => {
283-
const newReleaseSelections = { ...releaseSelections };
279+
const newReleaseSelections = { ...selections };
284280
selectedPackages.forEach((packageName) => {
285281
newReleaseSelections[packageName] = action;
286282
});
287-
setReleaseSelections(newReleaseSelections);
283+
setSelections(newReleaseSelections);
288284
setSelectedPackages(new Set());
289285
setShowCheckboxes(true);
290286
};
@@ -393,7 +389,7 @@ function App() {
393389
<PackageItem
394390
key={pkg.name}
395391
pkg={pkg}
396-
releaseSelections={releaseSelections}
392+
selections={selections}
397393
versionErrors={versionErrors}
398394
packageDependencyErrors={packageDependencyErrors}
399395
loadingChangelogs={loadingChangelogs}
@@ -403,7 +399,7 @@ function App() {
403399
onSelectionChange={handleSelectionChange}
404400
onCustomVersionChange={handleCustomVersionChange}
405401
onFetchChangelog={fetchChangelog}
406-
setReleaseSelections={setReleaseSelections}
402+
setSelections={setSelections}
407403
setChangelogs={setChangelogs}
408404
onToggleSelect={() => togglePackageSelection(pkg.name)}
409405
/>
@@ -412,7 +408,7 @@ function App() {
412408

413409
{packages.length > 0 && (
414410
<SubmitButton
415-
releaseSelections={releaseSelections}
411+
selections={selections}
416412
packageDependencyErrors={packageDependencyErrors}
417413
onSubmit={handleSubmit}
418414
/>

src/ui/PackageItem.tsx

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { Package, ReleaseType } from './types.js';
66

77
type PackageItemProps = {
88
pkg: Package;
9-
releaseSelections: Record<string, string>;
9+
selections: Record<string, string>;
1010
versionErrors: Record<string, string>;
1111
packageDependencyErrors: Record<
1212
string,
@@ -22,16 +22,14 @@ type PackageItemProps = {
2222
onSelectionChange: (packageName: string, value: ReleaseType | '') => void;
2323
onCustomVersionChange: (packageName: string, version: string) => void;
2424
onFetchChangelog: (packageName: string) => Promise<void>;
25-
setReleaseSelections: React.Dispatch<
26-
React.SetStateAction<Record<string, string>>
27-
>;
25+
setSelections: React.Dispatch<React.SetStateAction<Record<string, string>>>;
2826
setChangelogs: React.Dispatch<React.SetStateAction<Record<string, string>>>;
2927
onToggleSelect: () => void;
3028
};
3129

3230
export function PackageItem({
3331
pkg,
34-
releaseSelections,
32+
selections,
3533
versionErrors,
3634
packageDependencyErrors,
3735
loadingChangelogs,
@@ -41,7 +39,7 @@ export function PackageItem({
4139
onSelectionChange,
4240
onCustomVersionChange,
4341
onFetchChangelog,
44-
setReleaseSelections,
42+
setSelections,
4543
setChangelogs,
4644
onToggleSelect,
4745
}: PackageItemProps) {
@@ -50,8 +48,7 @@ export function PackageItem({
5048
key={pkg.name}
5149
id={`package-${pkg.name}`}
5250
className={`border p-4 rounded-lg ${
53-
releaseSelections[pkg.name] &&
54-
releaseSelections[pkg.name] !== 'intentionally-skip'
51+
selections[pkg.name] && selections[pkg.name] !== 'intentionally-skip'
5552
? 'border-2'
5653
: 'border-gray-200'
5754
} ${
@@ -79,19 +76,17 @@ export function PackageItem({
7976
<div className="flex items-center justify-between">
8077
<div>
8178
<p className="text-gray-600">Current version: {pkg.version}</p>
82-
{releaseSelections[pkg.name] &&
83-
releaseSelections[pkg.name] !== 'intentionally-skip' &&
84-
releaseSelections[pkg.name] !== 'custom' &&
79+
{selections[pkg.name] &&
80+
selections[pkg.name] !== 'intentionally-skip' &&
81+
selections[pkg.name] !== 'custom' &&
8582
!versionErrors[pkg.name] && (
8683
<p className="text-yellow-700">
8784
New version:{' '}
88-
{!['patch', 'minor', 'major'].includes(
89-
releaseSelections[pkg.name],
90-
)
91-
? releaseSelections[pkg.name]
85+
{!['patch', 'minor', 'major'].includes(selections[pkg.name])
86+
? selections[pkg.name]
9287
: new SemVer(pkg.version)
9388
.inc(
94-
releaseSelections[pkg.name] as Exclude<
89+
selections[pkg.name] as Exclude<
9590
ReleaseType,
9691
'intentionally-skip' | 'custom' | string
9792
>,
@@ -107,7 +102,7 @@ export function PackageItem({
107102
</div>
108103
<VersionSelector
109104
packageName={pkg.name}
110-
selection={releaseSelections[pkg.name]}
105+
selection={selections[pkg.name]}
111106
onSelectionChange={onSelectionChange}
112107
onCustomVersionChange={onCustomVersionChange}
113108
onFetchChangelog={onFetchChangelog}
@@ -125,7 +120,7 @@ export function PackageItem({
125120
<DependencyErrorSection
126121
title="Missing Dependencies"
127122
items={packageDependencyErrors[pkg.name].missingDependencies}
128-
setSelections={setReleaseSelections}
123+
setSelections={setSelections}
129124
description={`The following packages are dependencies or peer dependencies of ${pkg.name}. Because they may have introduced new changes that ${pkg.name} is now using, you need to verify whether to include them in the release.
130125
131126
To do this, look at the change history for each package and compare it with the change history for ${pkg.name}. If ${pkg.name} uses any new changes from a package, then you need to include it by bumping its version. If you have confirmed that the changes to a package do not affect ${pkg.name}, you may omit it from the release by choosing "Skip" instead.`}
@@ -139,7 +134,7 @@ To do this, look at the change history for each package and compare it with the
139134
items={
140135
packageDependencyErrors[pkg.name].missingDependentNames
141136
}
142-
setSelections={setReleaseSelections}
137+
setSelections={setSelections}
143138
description={`Because ${pkg.name} is being released with a new major version, to prevent peer dependency warnings in consuming projects, all of the following packages which list ${pkg.name} as a peer dependency need to be included in the release. Please choose new versions for these packages. If for some reason you feel it is safe to omit a package you may choose "Skip".`}
144139
/>
145140
</div>

0 commit comments

Comments
 (0)