mirror of https://github.com/abpframework/abp
				
				
				
			
							parent
							
								
									56fa038734
								
							
						
					
					
						commit
						39869c22f2
					
				| @ -0,0 +1,71 @@ | ||||
| # Internet Connection Service | ||||
| `InternetConnectionService` is a service which is exposed by `@abp/ng.core` package. **If you want to detect whether you are connected to the internet or not, you can use this service.** | ||||
| 
 | ||||
| 
 | ||||
| ### internet-connection-service.ts | ||||
| ``` | ||||
| import { DOCUMENT } from  '@angular/common'; | ||||
| import { Injectable, computed, inject, signal } from  '@angular/core'; | ||||
| import { BehaviorSubject } from  'rxjs'; | ||||
| 
 | ||||
| @Injectable({ | ||||
| 	providedIn: 'root', | ||||
| }) | ||||
| 
 | ||||
| export  class  InternetConnectionService{ | ||||
| 	protected  readonly  window  =  inject(DOCUMENT).defaultView; | ||||
| 	protected  readonly  navigator  =  this.window.navigator; | ||||
| 
 | ||||
| 	/* BehaviorSubject */ | ||||
| 	private  status$  =  new  BehaviorSubject<boolean>(navigator.onLine) | ||||
| 
 | ||||
| 	/* creates writableSignal */ | ||||
| 	private  status  =  signal(navigator.onLine); | ||||
| 
 | ||||
| 	/* READONLY ANGULAR SIGNAL */ | ||||
| 	networkStatus  =  computed(() =>  this.status()) | ||||
| 
 | ||||
| 	constructor(){ | ||||
| 		this.window.addEventListener('offline', () =>  this.setStatus()); | ||||
| 		this.window.addEventListener('online', () =>  this.setStatus()); | ||||
| 	} | ||||
| 
 | ||||
| 	private  setStatus(){ | ||||
| 		this.status.set(navigator.onLine) | ||||
| 		this.status$.next(navigator.onLine) | ||||
| 	} | ||||
| 
 | ||||
| 	/* returns OBSERVABLE */ | ||||
| 	get  networkStatus$(){ | ||||
| 		return  this.status$.asObservable() | ||||
| 	} | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| ## Getting Started | ||||
| When you inject InternetConnectionService you can get the current internet status also if status changes you can catch them immediately. | ||||
| 
 | ||||
| As you can see from the code above, `InternetConnectionService` is providing 2 alternatives for catching network status; | ||||
| 1. Signal (readonly) | ||||
| 2. Observable | ||||
| 
 | ||||
| 
 | ||||
| # How To Use | ||||
| İt's easy just inject the service and get network status | ||||
| 
 | ||||
| **You can get via signal** | ||||
| ``` | ||||
| class someComponent{ | ||||
| 	internetConnectionService  =  inject(InternetConnectionService); | ||||
| 	isOnline = this.internetConnectionService.networkStatus | ||||
| } | ||||
| ``` | ||||
| **or you can get as observable** | ||||
| ``` | ||||
| class someComponent{ | ||||
| 	internetConnectionService = inject(InternetConnectionService); | ||||
| 	isOnline = this.internetConnectionService.networkStatus$ | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| That's all, feel free to try on your template | ||||
					Loading…
					
					
				
		Reference in new issue
	
	 Sinan997
						Sinan997