import{a as S,b as o,c as v}from"./chunk-QYSFCWV7.js";import{a}from"./chunk-3DEA4WWC.js";import{n as g}from"./chunk-TKVDP62Z.js";import{J as l,O as u,d as n,e as i,n as h,na as b,p as r,qa as C}from"./chunk-GJDGQISV.js";var f=class c{constructor(e){this.toastr=e;this.socketConnection=new v().withUrl("/POSHub").withAutomaticReconnect().configureLogging(S.Information).build(),this.registerEventHandler()}lastGroupID;OnPaymentReceived=new n;OnReceivePushNotification=new n;OnContactReceive=new n;OnPromotionEventChange=new n;_recacheOutlet=new i(!1);recacheOutlet$=this._recacheOutlet.asObservable();_recacheCategory=new i(!1);recacheCategory$=this._recacheCategory.asObservable();_recacheSalesPerson=new i(!1);recacheSalesPerson$=this._recacheSalesPerson.asObservable();socketConnection;connectionStateSubject=new n;startConnection(){this.socketConnection.state==o.Disconnected&&this.socketConnection.start().then(()=>{console.info("SignalR Connected"),this.connectionStateSubject.next(!0)}).catch(e=>{console.log(e)})}SubscribeGroup(e,t=null){e!=this.lastGroupID&&(this.socketConnection.state==o.Disconnected?this.socketConnection.start().then(()=>{this.invokeSubscribe(e,t)}).catch(s=>{this.toastr.error(s,"Error")}):this.socketConnection.state==o.Connecting?this.connectionStateSubject.pipe(u(1)).subscribe({next:()=>{this.invokeSubscribe(e,t)}}):this.socketConnection.state==o.Connected&&this.invokeSubscribe(e,t))}invokeSubscribe(e,t){let s={CurrentID:e,PreviousID:t};this.socketConnection.invoke("SubscribeGroup",s).then(()=>{console.info(`SignalR Subscribed to Group: [${e}]`),this.lastGroupID=e}).catch(p=>{console.error(p)})}registerEventHandler(){this.socketConnection.on("ReceiveMobilePaymentSignal",e=>{this.OnPaymentReceived.next(e)}),this.socketConnection.on("OnContactReceive",e=>{this.OnContactReceive.next(e)}),this.socketConnection.on("ReceiveNewPromotionSignal",e=>{this.OnPromotionEventChange.next(e)}),this.socketConnection.on("ReceivePushNotificationSignal",e=>{this.OnReceivePushNotification.next(e)}),this.socketConnection.on("ReceiveOutletChanges",()=>{this._recacheOutlet.next(!0)}),this.socketConnection.on("ReceiveProductCategoryChanges",()=>{this._recacheCategory.next(!0)}),this.socketConnection.on("ReceiveSalesPersonChanges",()=>{this._recacheSalesPerson.next(!0)})}isSocketConnected(){return a.IsEmpty(this.socketConnection)?!1:this.socketConnection.state==o.Connected&&a.IsNotEmpty(this.socketConnection.connectionId)}broadcast(e){return this.isSocketConnected()?h(this.socketConnection.invoke("BroadCast",e)).pipe(l(t=>(this.toastr.error(t,"Error"),r(()=>t)))):r(()=>"SignalR is not connected")}resetOutletCache(){this._recacheOutlet.next(!1)}resetCategoryCache(){this._recacheCategory.next(!1)}resetSalesPersonCache(){this._recacheSalesPerson.next(!1)}static \u0275fac=function(t){return new(t||c)(C(g))};static \u0275prov=b({token:c,factory:c.\u0275fac,providedIn:"root"})};export{f as a};
