better logging and delay

This commit is contained in:
2026-01-29 00:55:18 -05:00
parent 3a66e3cd42
commit 394fa0b900
4 changed files with 63 additions and 22 deletions

View File

@@ -37,7 +37,12 @@ router.get('/search', authMiddleware, async (req, res) => {
);
if (!response.ok) {
throw new Error('TMDB API error');
const errorText = await response.text();
console.error('TMDB API error:', response.status, errorText);
return res.status(500).json({
error: `TMDB API error: ${response.status}`,
details: errorText
});
}
const data = await response.json();

View File

@@ -14,6 +14,7 @@ export default function ChallengeDetail() {
const [searchResults, setSearchResults] = useState([]);
const [showInvite, setShowInvite] = useState(false);
const [loading, setLoading] = useState(true);
const [searchTimeout, setSearchTimeout] = useState(null);
useEffect(() => {
loadChallenge();
@@ -76,19 +77,30 @@ export default function ChallengeDetail() {
}
};
const handleSearchUsers = async (query) => {
const handleSearchUsers = (query) => {
setInviteQuery(query);
// Clear previous timeout
if (searchTimeout) {
clearTimeout(searchTimeout);
}
if (query.trim().length < 2) {
setSearchResults([]);
return;
}
try {
const data = await api.searchUsers(query);
setSearchResults(data.users);
} catch (err) {
console.error('Search failed:', err);
}
// Debounce search by 1 second
const timeout = setTimeout(async () => {
try {
const data = await api.searchUsers(query);
setSearchResults(data.users);
} catch (err) {
console.error('Search failed:', err);
}
}, 1000);
setSearchTimeout(timeout);
};
const handleInvite = async (userId) => {

View File

@@ -8,6 +8,7 @@ export default function ChallengeList() {
const [showResults, setShowResults] = useState([]);
const [loading, setLoading] = useState(true);
const [creating, setCreating] = useState(false);
const [searchTimeout, setSearchTimeout] = useState(null);
useEffect(() => {
loadChallenges();
@@ -24,19 +25,30 @@ export default function ChallengeList() {
}
};
const handleSearch = async (query) => {
const handleSearch = (query) => {
setSearchQuery(query);
// Clear previous timeout
if (searchTimeout) {
clearTimeout(searchTimeout);
}
if (query.trim().length < 2) {
setShowResults([]);
return;
}
try {
const data = await api.searchShows(query);
setShowResults(data.results || []);
} catch (err) {
console.error('Search failed:', err);
}
// Debounce search by 1.5 seconds
const timeout = setTimeout(async () => {
try {
const data = await api.searchShows(query);
setShowResults(data.results || []);
} catch (err) {
console.error('Search failed:', err);
}
}, 1500);
setSearchTimeout(timeout);
};
const handleCreateChallenge = async (show) => {

View File

@@ -8,6 +8,7 @@ export default function Friends() {
const [searchQuery, setSearchQuery] = useState('');
const [searchResults, setSearchResults] = useState([]);
const [loading, setLoading] = useState(true);
const [searchTimeout, setSearchTimeout] = useState(null);
useEffect(() => {
loadData();
@@ -29,19 +30,30 @@ export default function Friends() {
}
};
const handleSearch = async (query) => {
const handleSearch = (query) => {
setSearchQuery(query);
// Clear previous timeout
if (searchTimeout) {
clearTimeout(searchTimeout);
}
if (query.trim().length < 2) {
setSearchResults([]);
return;
}
try {
const data = await api.searchUsers(query);
setSearchResults(data.users);
} catch (err) {
console.error('Search failed:', err);
}
// Debounce search by 1 second
const timeout = setTimeout(async () => {
try {
const data = await api.searchUsers(query);
setSearchResults(data.users);
} catch (err) {
console.error('Search failed:', err);
}
}, 1000);
setSearchTimeout(timeout);
};
const handleSendRequest = async (userId) => {