Skip to content

Commit 63ee1bf

Browse files
committed
Fix field name mapping in relay settings and add chart data debugging
- Update useRelaySettings.ts to send correct field names (mime_patterns, max_size_mb) - Add backward compatibility for reading both old and new field names - Add comprehensive logging to useChartData.ts to debug media count issues - Ensure media definitions are always sent with complete structure to avoid backend conflicts
1 parent ae1292e commit 63ee1bf

2 files changed

Lines changed: 41 additions & 31 deletions

File tree

src/hooks/useChartData.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,29 @@ const useChartData = () => {
4545
}
4646

4747
const data: FileCountResponse = await response.json();
48+
49+
// Log the complete backend response for debugging
50+
console.log('=== CHART DATA BACKEND RESPONSE ===');
51+
console.log('Full response:', JSON.stringify(data, null, 2));
52+
console.log('Response keys:', Object.keys(data));
53+
console.log('==============================');
4854

4955
// Process the data into chartDataItems using translated names
5056
// Handle dynamic media types while maintaining UI compatibility
5157
const newChartData: ChartDataItem[] = [];
5258

5359
// Always include kinds first
60+
console.log('Adding kinds data:', { value: data.kinds, name: t('categories.kinds') });
5461
newChartData.push({ value: data.kinds, name: t('categories.kinds') });
5562

5663
// Destructure to separate kinds from media types
5764
const { kinds, ...mediaCounts } = data;
65+
console.log('Media counts after destructuring:', mediaCounts);
66+
console.log('Media count entries:', Object.entries(mediaCounts));
5867

5968
// Map dynamic media types to chart data with fallback translations
6069
Object.entries(mediaCounts).forEach(([mediaType, count]) => {
70+
console.log(`Processing media type: ${mediaType} with count: ${count}`);
6171
let translationKey = '';
6272
let fallbackName = '';
6373

@@ -88,9 +98,16 @@ const useChartData = () => {
8898

8999
// Use translation if available, otherwise use fallback
90100
const displayName = t(translationKey, { defaultValue: fallbackName });
91-
newChartData.push({ value: count, name: displayName });
101+
const chartItem = { value: count, name: displayName };
102+
console.log(`Adding chart item:`, chartItem);
103+
newChartData.push(chartItem);
92104
});
93105

106+
console.log('=== FINAL CHART DATA ===');
107+
console.log('Final chart data:', newChartData);
108+
console.log('Chart data length:', newChartData.length);
109+
console.log('========================');
110+
94111
setChartData(newChartData);
95112
} catch (error) {
96113
console.error('Error:', error);

src/hooks/useRelaySettings.ts

Lines changed: 23 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,15 @@ const useRelaySettings = () => {
103103

104104
// Extract mime types and file sizes from actual backend format
105105
const mediaDefinitions = backendData.event_filtering.media_definitions || {};
106-
settings.photos = mediaDefinitions.image?.mimepatterns || [];
107-
settings.videos = mediaDefinitions.video?.mimepatterns || [];
108-
settings.audio = mediaDefinitions.audio?.mimepatterns || [];
106+
// Handle both old and new field names for backward compatibility
107+
settings.photos = mediaDefinitions.image?.mime_patterns || mediaDefinitions.image?.mimepatterns || [];
108+
settings.videos = mediaDefinitions.video?.mime_patterns || mediaDefinitions.video?.mimepatterns || [];
109+
settings.audio = mediaDefinitions.audio?.mime_patterns || mediaDefinitions.audio?.mimepatterns || [];
109110

110-
// Extract file size limits
111-
settings.photoMaxSizeMB = mediaDefinitions.image?.maxsizemb || 100;
112-
settings.videoMaxSizeMB = mediaDefinitions.video?.maxsizemb || 500;
113-
settings.audioMaxSizeMB = mediaDefinitions.audio?.maxsizemb || 100;
111+
// Extract file size limits (handle both old and new field names)
112+
settings.photoMaxSizeMB = mediaDefinitions.image?.max_size_mb || mediaDefinitions.image?.maxsizemb || 100;
113+
settings.videoMaxSizeMB = mediaDefinitions.video?.max_size_mb || mediaDefinitions.video?.maxsizemb || 500;
114+
settings.audioMaxSizeMB = mediaDefinitions.audio?.max_size_mb || mediaDefinitions.audio?.maxsizemb || 100;
114115

115116
// Set protocols
116117
if (backendData.event_filtering.protocols?.enabled) {
@@ -141,32 +142,24 @@ const useRelaySettings = () => {
141142
}, []);
142143

143144
const transformToBackendSettings = useCallback((settings: Settings) => {
144-
const mediaDefinitions: any = {};
145-
146-
// Create media definitions in the format backend expects
147-
if (settings.photos.length > 0) {
148-
mediaDefinitions.image = {
149-
mimepatterns: settings.photos,
145+
// Always create media definitions with correct field names to avoid backend conflicts
146+
const mediaDefinitions = {
147+
image: {
148+
mime_patterns: settings.photos, // Only send correct field name
150149
extensions: [".jpg", ".jpeg", ".png", ".gif", ".webp"],
151-
maxsizemb: settings.photoMaxSizeMB
152-
};
153-
}
154-
155-
if (settings.videos.length > 0) {
156-
mediaDefinitions.video = {
157-
mimepatterns: settings.videos,
150+
max_size_mb: settings.photoMaxSizeMB // Only send correct field name
151+
},
152+
video: {
153+
mime_patterns: settings.videos, // Only send correct field name
158154
extensions: [".mp4", ".webm", ".avi", ".mov"],
159-
maxsizemb: settings.videoMaxSizeMB
160-
};
161-
}
162-
163-
if (settings.audio.length > 0) {
164-
mediaDefinitions.audio = {
165-
mimepatterns: settings.audio,
155+
max_size_mb: settings.videoMaxSizeMB // Only send correct field name
156+
},
157+
audio: {
158+
mime_patterns: settings.audio, // Only send correct field name
166159
extensions: [".mp3", ".wav", ".ogg", ".flac"],
167-
maxsizemb: settings.audioMaxSizeMB
168-
};
169-
}
160+
max_size_mb: settings.audioMaxSizeMB // Only send correct field name
161+
}
162+
};
170163

171164
return {
172165
settings: {

0 commit comments

Comments
 (0)