import { Directive, ElementRef, HostListener, Input } from "@angular/core";

import { ClientType } from "@bitwarden/common/enums";
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";

@Directive({
  selector: "[appCopyText]",
})
export class CopyTextDirective {
  constructor(
    private el: ElementRef,
    private platformUtilsService: PlatformUtilsService,
  ) {}

  @Input("appCopyText") copyText: string;

  @HostListener("copy") onCopy() {
    if (window == null) {
      return;
    }

    const timeout = this.platformUtilsService.getClientType() === ClientType.Desktop ? 100 : 0;
    setTimeout(() => {
      this.platformUtilsService.copyToClipboard(this.copyText, { window: window });
    }, timeout);
  }
}
