feat(RECIPE-0009): complete iteration 0 — deduplication, notifications, UI improvements
This commit is contained in:
@@ -47,6 +47,21 @@ export class QueueManager {
|
||||
/** Set of subscriber callbacks */
|
||||
private subscribers: Set<QueueUpdateCallback> = new Set();
|
||||
|
||||
/**
|
||||
* Find queue item by URL
|
||||
*
|
||||
* @param url - Instagram URL to search for
|
||||
* @returns Existing queue item or undefined
|
||||
*/
|
||||
findByUrl(url: string): QueueItem | undefined {
|
||||
for (const item of this.items.values()) {
|
||||
if (item.url === url) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add URL to processing queue
|
||||
*
|
||||
@@ -60,6 +75,13 @@ export class QueueManager {
|
||||
* ```
|
||||
*/
|
||||
enqueue(url: string): QueueItem {
|
||||
// Check for duplicate URL
|
||||
const existingItem = this.findByUrl(url);
|
||||
if (existingItem) {
|
||||
console.log(`[QueueManager] Duplicate URL detected: ${url}, returning existing item ${existingItem.id}`);
|
||||
return existingItem;
|
||||
}
|
||||
|
||||
const now = new Date().toISOString();
|
||||
const item: QueueItem = {
|
||||
id: uuidv4(),
|
||||
|
||||
Reference in New Issue
Block a user