diff --git a/browser-extension/src/lib/registries.ts b/browser-extension/src/lib/registries.ts index d6cf1aa..cce6ce9 100644 --- a/browser-extension/src/lib/registries.ts +++ b/browser-extension/src/lib/registries.ts @@ -69,6 +69,7 @@ export class EnhancerRegistry { this.preparedEnhancers.add(enhancer) } const overtype = enhancer.enhance(textarea, spot) + this.handleDelayedValueInjection(overtype) return { enhancer, overtype, spot, textarea } } } catch (error) { @@ -78,6 +79,24 @@ export class EnhancerRegistry { return null } + private handleDelayedValueInjection(overtype: OverTypeInstance): void { + // GitHub sometimes injects textarea content after a delay + // We need to trigger OverType to update its preview after such injections + // https://github.com/diffplug/gitcasso/issues/46 + setTimeout(() => { + overtype.updatePreview() + }, 100) + setTimeout(() => { + overtype.updatePreview() + }, 200) + setTimeout(() => { + overtype.updatePreview() + }, 400) + setTimeout(() => { + overtype.updatePreview() + }, 8000) + } + getEnhancerCount(): number { return this.enhancers.size } diff --git a/browser-extension/tests/har-fixture.ts b/browser-extension/tests/har-fixture.ts index 60e7e90..befcdf9 100644 --- a/browser-extension/tests/har-fixture.ts +++ b/browser-extension/tests/har-fixture.ts @@ -18,6 +18,7 @@ vi.mock('overtype', () => { preview: document.createElement('div'), setValue: vi.fn(), textarea: document.createElement('textarea'), + updatePreview: vi.fn(), wrapper: document.createElement('div'), }, ])