This commit is contained in:
zramsay 2025-03-25 14:26:36 -04:00
parent 3da19f8b7f
commit 919f99b86d
2 changed files with 48 additions and 19 deletions

View File

@ -303,7 +303,10 @@ export default function WalletPage() {
</div>
<div>
<h4 className="text-lg font-semibold text-emerald-300 capitalize">
{contribution.mainObject || 'Wildlife'}
{/* Ensure consistent capitalization */}
{(contribution.mainObject || 'Wildlife').split(' ').map(
word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()
).join(' ')}
</h4>
<p className="text-emerald-200 text-sm line-clamp-2">
{contribution.description || 'No description available'}

View File

@ -203,18 +203,32 @@ export async function getAnimalRecordsBySeiAddress(seiAddress: string): Promise<
};
});
// Filter valid records and remove duplicates by using the record ID
// Let's analyze the records to understand potential duplicates
const validRecords = mappedRecords.filter((record: AnimalRecordResult) =>
record.imageUrl && record.imageUrl.trim() !== ''
);
console.log('Records before deduplication:', validRecords.length);
// Create more detailed keys to identify truly duplicate records
const uniqueRecordMap = new Map();
mappedRecords
.filter((record: AnimalRecordResult) => record.imageUrl && record.imageUrl.trim() !== '')
.forEach((record: AnimalRecordResult) => {
// Only add if this ID isn't already in our map
if (!uniqueRecordMap.has(record.id)) {
uniqueRecordMap.set(record.id, record);
}
});
validRecords.forEach((record: AnimalRecordResult) => {
// Create a composite key using multiple fields to better identify duplicates
// This handles cases where IDs might be different but content is identical
const compositeKey = `${record.mainObject.toLowerCase()}-${record.description.toLowerCase()}-${record.imageUrl}`;
console.log(`Record: ${record.id}, Key: ${compositeKey.substring(0, 30)}...`);
// Only add if this composite key isn't already in our map
if (!uniqueRecordMap.has(compositeKey)) {
uniqueRecordMap.set(compositeKey, record);
} else {
console.log(`Skipping duplicate record with ID ${record.id} (matches ${uniqueRecordMap.get(compositeKey).id})`);
}
});
console.log('Records after deduplication:', uniqueRecordMap.size);
const records = Array.from(uniqueRecordMap.values());
// Sort by timestamp descending (newest first)
@ -320,18 +334,30 @@ export async function getAllAnimalRecords(): Promise<AnimalRecordResult[]> {
};
});
// Filter valid records and remove duplicates by using the record ID
// Let's analyze the records to understand potential duplicates
const validRecords = mappedRecords.filter((record: AnimalRecordResult) =>
record.imageUrl && record.imageUrl.trim() !== ''
);
console.log('All records before deduplication:', validRecords.length);
// Create more detailed keys to identify truly duplicate records
const uniqueRecordMap = new Map();
mappedRecords
.filter((record: AnimalRecordResult) => record.imageUrl && record.imageUrl.trim() !== '')
.forEach((record: AnimalRecordResult) => {
// Only add if this ID isn't already in our map
if (!uniqueRecordMap.has(record.id)) {
uniqueRecordMap.set(record.id, record);
}
});
validRecords.forEach((record: AnimalRecordResult) => {
// Create a composite key using multiple fields to better identify duplicates
// This handles cases where IDs might be different but content is identical
const compositeKey = `${record.mainObject.toLowerCase()}-${record.description.toLowerCase()}-${record.imageUrl}`;
// Only add if this composite key isn't already in our map
if (!uniqueRecordMap.has(compositeKey)) {
uniqueRecordMap.set(compositeKey, record);
} else {
console.log(`Skipping duplicate record with ID ${record.id}`);
}
});
console.log('All records after deduplication:', uniqueRecordMap.size);
const records = Array.from(uniqueRecordMap.values());
// Sort by timestamp descending (newest first)