Skip to content
This repository was archived by the owner on May 3, 2025. It is now read-only.

Commit 5103bf8

Browse files
Remove unused TrackUtils function, add util for unsoloing list of tracks when dialog opened (#114)
1 parent f3f8c77 commit 5103bf8

File tree

2 files changed

+25
-13
lines changed

2 files changed

+25
-13
lines changed

src/components/tracks/track-section-card/track-section-card.tsx

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import { InstrumentRecord } from "models/instrument-record";
2828
import { TrackSectionStepGrid } from "components/tracks/track-section-card/track-section-step-grid";
2929
import { TrackSectionStepColumnWidth } from "components/tracks/track-section-card/track-section-step-column";
3030
import { useWorkstationState } from "utils/hooks/use-workstation-state";
31+
import { unsoloAll } from "utils/track-utils";
3132

3233
interface TrackSectionCardProps {
3334
file?: FileRecord;
@@ -45,13 +46,13 @@ const TrackSectionCard: React.FC<TrackSectionCardProps> = (
4546
) => {
4647
const [
4748
sequencerDialogOpen,
48-
handleOpenSequencerDialog,
49+
openSequencerDialog,
4950
handleCloseSequencerDialog,
5051
] = useDialog();
5152

5253
const [
5354
pianoRollDialogOpen,
54-
handleOpenPianoRollDialog,
55+
openPianoRollDialog,
5556
handleClosePianoRollDialog,
5657
] = useDialog();
5758

@@ -75,7 +76,8 @@ const TrackSectionCard: React.FC<TrackSectionCardProps> = (
7576
trackId: trackSection.track_id,
7677
});
7778

78-
const { state: workstationState } = useWorkstationState();
79+
const { state: workstationState, setCurrentState: setWorkstationState } =
80+
useWorkstationState();
7981
const stepCount = workstationState.getStepCount();
8082
const { isSelected, onSelect } = useClipboardState();
8183

@@ -86,6 +88,23 @@ const TrackSectionCard: React.FC<TrackSectionCardProps> = (
8688
const { resultObject: files } = useListFiles();
8789
const theme = useTheme();
8890

91+
const unsoloTracks = useCallback(() => {
92+
setWorkstationState((prev) => {
93+
const { tracks } = prev;
94+
return prev.merge({ tracks: unsoloAll(tracks) });
95+
});
96+
}, [setWorkstationState]);
97+
98+
const handleOpenSequencerDialog = useCallback(() => {
99+
unsoloTracks();
100+
openSequencerDialog();
101+
}, [openSequencerDialog, unsoloTracks]);
102+
103+
const handleOpenPianoRollDialog = useCallback(() => {
104+
unsoloTracks();
105+
openPianoRollDialog();
106+
}, [openPianoRollDialog, unsoloTracks]);
107+
89108
const handleRemove = useCallback(
90109
() => remove(trackSection),
91110
[remove, trackSection]

src/utils/track-utils.ts

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,7 @@
11
import { List } from "immutable";
2-
import { ProjectRecord } from "models/project-record";
32
import { TrackRecord } from "models/track-record";
43

5-
const TrackUtils = {
6-
getByProject(
7-
project: ProjectRecord,
8-
tracks: List<TrackRecord>
9-
): List<TrackRecord> {
10-
return tracks.filter((track) => track.project_id === project.id);
11-
},
12-
};
4+
const unsoloAll = (tracks: List<TrackRecord>): List<TrackRecord> =>
5+
tracks.map((track) => track.merge({ solo: false }));
136

14-
export { TrackUtils };
7+
export { unsoloAll };

0 commit comments

Comments
 (0)