]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/core/confirm/confirm.service.ts
Go back when cancel NSFW modal
[github/Chocobozzz/PeerTube.git] / client / src / app / core / confirm / confirm.service.ts
index b9796979591754d23999796d76748ed7084f7fc8..6e042c16bf5f99485b0b58efdcc749e65a52b5f9 100644 (file)
@@ -1,15 +1,33 @@
-import { Injectable } from '@angular/core';
-import { Subject } from 'rxjs/Subject';
-import 'rxjs/add/operator/first';
+import { first } from 'rxjs/operators'
+import { Injectable } from '@angular/core'
+import { Subject } from 'rxjs'
+
+type ConfirmOptions = {
+  title: string
+  message: string
+  inputLabel?: string
+  expectedInputValue?: string
+  confirmButtonText?: string
+}
 
 @Injectable()
 export class ConfirmService {
-  showConfirm = new Subject<{ title, message }>();
-  confirmResponse = new Subject<boolean>();
+  showConfirm = new Subject<ConfirmOptions>()
+  confirmResponse = new Subject<boolean>()
+
+  confirm (message: string, title = '', confirmButtonText?: string) {
+    this.showConfirm.next({ title, message, confirmButtonText })
+
+    return this.confirmResponse.asObservable()
+               .pipe(first())
+               .toPromise()
+  }
 
-  confirm(message: string = '', title: string = '') {
-    this.showConfirm.next({ title, message });
+  confirmWithInput (message: string, inputLabel: string, expectedInputValue: string, title = '', confirmButtonText?: string) {
+    this.showConfirm.next({ title, message, inputLabel, expectedInputValue, confirmButtonText })
 
-    return this.confirmResponse.asObservable().first();
+    return this.confirmResponse.asObservable()
+               .pipe(first())
+               .toPromise()
   }
 }