fix: convert selectedTrack.name to string in Effect Chain header
Fixed [object Object] display in Effect Chain section of SidePanel by adding String() conversion to selectedTrack.name. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -300,7 +300,7 @@ export function SidePanel({
|
|||||||
<h3 className="text-xs font-semibold text-muted-foreground uppercase">
|
<h3 className="text-xs font-semibold text-muted-foreground uppercase">
|
||||||
Effect Chain
|
Effect Chain
|
||||||
{selectedTrack && (
|
{selectedTrack && (
|
||||||
<span className="text-primary ml-2">({selectedTrack.name})</span>
|
<span className="text-primary ml-2">({String(selectedTrack.name || 'Untitled Track')})</span>
|
||||||
)}
|
)}
|
||||||
</h3>
|
</h3>
|
||||||
<div className="flex gap-1">
|
<div className="flex gap-1">
|
||||||
|
|||||||
@@ -11,7 +11,21 @@ export function useMultiTrack() {
|
|||||||
try {
|
try {
|
||||||
const saved = localStorage.getItem(STORAGE_KEY);
|
const saved = localStorage.getItem(STORAGE_KEY);
|
||||||
if (saved) {
|
if (saved) {
|
||||||
|
console.log('Raw localStorage data:', saved);
|
||||||
const parsed = JSON.parse(saved);
|
const parsed = JSON.parse(saved);
|
||||||
|
console.log('Parsed localStorage data:', parsed);
|
||||||
|
|
||||||
|
// Clear corrupted data immediately if we detect issues
|
||||||
|
const hasInvalidData = parsed.some((t: any) =>
|
||||||
|
typeof t.name !== 'string' || t.name === '[object Object]'
|
||||||
|
);
|
||||||
|
|
||||||
|
if (hasInvalidData) {
|
||||||
|
console.warn('Detected corrupted track data in localStorage, clearing...');
|
||||||
|
localStorage.removeItem(STORAGE_KEY);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
// Note: AudioBuffers can't be serialized, so we only restore track metadata
|
// Note: AudioBuffers can't be serialized, so we only restore track metadata
|
||||||
return parsed.map((t: any) => ({
|
return parsed.map((t: any) => ({
|
||||||
...t,
|
...t,
|
||||||
@@ -55,12 +69,15 @@ export function useMultiTrack() {
|
|||||||
|
|
||||||
const addTrack = useCallback((name?: string) => {
|
const addTrack = useCallback((name?: string) => {
|
||||||
const track = createTrack(name);
|
const track = createTrack(name);
|
||||||
|
console.log('addTrack - creating track with name:', name, 'typeof:', typeof name, 'track:', track);
|
||||||
setTracks((prev) => [...prev, track]);
|
setTracks((prev) => [...prev, track]);
|
||||||
return track;
|
return track;
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const addTrackFromBuffer = useCallback((buffer: AudioBuffer, name?: string) => {
|
const addTrackFromBuffer = useCallback((buffer: AudioBuffer, name?: string) => {
|
||||||
|
console.log('addTrackFromBuffer - received name:', name, 'typeof:', typeof name);
|
||||||
const track = createTrackFromBuffer(buffer, name);
|
const track = createTrackFromBuffer(buffer, name);
|
||||||
|
console.log('addTrackFromBuffer - created track:', track, 'track.name:', track.name, 'typeof track.name:', typeof track.name);
|
||||||
setTracks((prev) => [...prev, track]);
|
setTracks((prev) => [...prev, track]);
|
||||||
return track;
|
return track;
|
||||||
}, []);
|
}, []);
|
||||||
|
|||||||
Reference in New Issue
Block a user