+7
-5
src/App.tsx
+7
-5
src/App.tsx
···
24
24
25
25
// Add state to track current platform
26
26
const [currentPlatform, setCurrentPlatform] = useState<string>('tiktok');
27
-
const saveCalledRef = useRef(false);
27
+
const saveCalledRef = useRef<string | null>(null); // Track by uploadId
28
28
29
29
// Search hook
30
30
const {
···
62
62
63
63
setSearchResults(resultsWithPlatform);
64
64
setCurrentStep('loading');
65
+
66
+
const uploadId = crypto.randomUUID();
67
+
65
68
searchAllUsers(
66
69
resultsWithPlatform,
67
70
setStatusMessage,
68
71
() => {
69
72
setCurrentStep('results');
70
73
// Prevent duplicate saves
71
-
if (!saveCalledRef.current) {
72
-
saveCalledRef.current = true;
74
+
if (saveCalledRef.current !== uploadId) {
75
+
saveCalledRef.current = uploadId;
73
76
// Need to wait for React to finish updating searchResults state
74
77
// Use a longer delay and access via setSearchResults callback to get final state
75
78
setTimeout(() => {
76
79
setSearchResults(currentResults => {
77
80
if (currentResults.length > 0) {
78
-
const uploadId = crypto.randomUUID();
79
81
apiClient.saveResults(uploadId, platform, currentResults).catch(err => {
80
82
console.error('Background save failed:', err);
81
83
});
···
108
110
109
111
const platform = 'tiktok'; // Default, will be updated when we add platform to upload details
110
112
setCurrentPlatform(platform);
111
-
saveCalledRef.current = false;
113
+
saveCalledRef.current = null;
112
114
113
115
// Convert the loaded results to SearchResult format with selectedMatches
114
116
const loadedResults = data.results.map(result => ({