mirror of
https://github.com/xtr-dev/rondevu-client.git
synced 2025-12-15 21:33:23 +00:00
Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -259,6 +259,7 @@ export class Rondevu extends EventEmitter {
|
|||||||
private filling = false
|
private filling = false
|
||||||
private pollingInterval: ReturnType<typeof setInterval> | null = null
|
private pollingInterval: ReturnType<typeof setInterval> | null = null
|
||||||
private lastPollTimestamp = 0
|
private lastPollTimestamp = 0
|
||||||
|
private isPolling = false // Guard against concurrent poll execution
|
||||||
|
|
||||||
private constructor(
|
private constructor(
|
||||||
apiUrl: string,
|
apiUrl: string,
|
||||||
@@ -634,6 +635,13 @@ export class Rondevu extends EventEmitter {
|
|||||||
private async pollInternal(): Promise<void> {
|
private async pollInternal(): Promise<void> {
|
||||||
if (!this.filling) return
|
if (!this.filling) return
|
||||||
|
|
||||||
|
// Prevent concurrent poll execution to avoid duplicate answer processing
|
||||||
|
if (this.isPolling) {
|
||||||
|
this.debug('Poll already in progress, skipping')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
this.isPolling = true
|
||||||
try {
|
try {
|
||||||
const result = await this.api.poll(this.lastPollTimestamp)
|
const result = await this.api.poll(this.lastPollTimestamp)
|
||||||
|
|
||||||
@@ -674,6 +682,8 @@ export class Rondevu extends EventEmitter {
|
|||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('[Rondevu] Polling error:', err)
|
console.error('[Rondevu] Polling error:', err)
|
||||||
|
} finally {
|
||||||
|
this.isPolling = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -710,6 +720,7 @@ export class Rondevu extends EventEmitter {
|
|||||||
stopFilling(): void {
|
stopFilling(): void {
|
||||||
this.debug('Stopping offer filling and polling')
|
this.debug('Stopping offer filling and polling')
|
||||||
this.filling = false
|
this.filling = false
|
||||||
|
this.isPolling = false // Reset polling guard
|
||||||
|
|
||||||
// Stop polling
|
// Stop polling
|
||||||
if (this.pollingInterval) {
|
if (this.pollingInterval) {
|
||||||
|
|||||||
Reference in New Issue
Block a user