From 63b2a5b0dfc4f8cf9e14e4c2845972514a4efda9 Mon Sep 17 00:00:00 2001 From: Axel Chalon Date: Tue, 7 Aug 2018 16:26:13 +0200 Subject: [PATCH 1/2] Check Internet connection; NOPEERS if peerCount <= 1 --- packages/fether-react/src/Health/Health.js | 2 ++ packages/fether-react/src/Overlay/Overlay.js | 4 ++++ packages/fether-react/src/stores/healthStore.js | 14 +++++++++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/fether-react/src/Health/Health.js b/packages/fether-react/src/Health/Health.js index fc2f584e..aba62e34 100644 --- a/packages/fether-react/src/Health/Health.js +++ b/packages/fether-react/src/Health/Health.js @@ -60,6 +60,8 @@ class Health extends Component { return `Downloading... (${payload.percentage}%)`; case STATUS.GOOD: return 'Synced'; + case STATUS.NOINTERNET: + return 'No Internet connection'; case STATUS.NOPEERS: return 'Not connected to any peers'; case STATUS.RUNNING: diff --git a/packages/fether-react/src/Overlay/Overlay.js b/packages/fether-react/src/Overlay/Overlay.js index bc8407a6..6408ed77 100644 --- a/packages/fether-react/src/Overlay/Overlay.js +++ b/packages/fether-react/src/Overlay/Overlay.js @@ -83,6 +83,8 @@ class Overlays extends Component { return payload && payload.percentage && payload.percentage.gt(0) ? `${payload.percentage.toFixed(0)}%` : ''; + case STATUS.NOINTERNET: + return 'Please connect to the Internet'; case STATUS.NOPEERS: return 'Getting some more peers...'; default: @@ -102,6 +104,8 @@ class Overlays extends Component { return 'Your clock is not sync'; case STATUS.DOWNLOADING: return 'Downloading Parity...'; + case STATUS.NOINTERNET: + return 'No Internet connection'; case STATUS.NOPEERS: return 'Bad connectivity'; case STATUS.RUNNING: diff --git a/packages/fether-react/src/stores/healthStore.js b/packages/fether-react/src/stores/healthStore.js index 55206bb5..c99e9293 100644 --- a/packages/fether-react/src/stores/healthStore.js +++ b/packages/fether-react/src/stores/healthStore.js @@ -22,17 +22,20 @@ export const STATUS = { CLOCKNOTSYNC: Symbol('CLOCKNOTSYNC'), // Local clock is not sync DOWNLOADING: Symbol('DOWNLOADING'), // Currently downloading Parity GOOD: Symbol('GOOD'), // Everything's fine + NOINTERNET: Symbol('NOINTERNET'), // No Internet connection NOPEERS: Symbol('NOPEERS'), // Not connected to any peers RUNNING: Symbol('RUNNING'), // Parity is running (only checked at startup) SYNCING: Symbol('SYNCING') // Obvious }; export class HealthStore { + @observable hasInternet; @observable peerCount; @observable syncing; @observable clockSync; constructor () { + setInterval(this.verifyInternet, 5000); peerCount$(({withoutLoading: true})).subscribe(this.setPeerCount); syncing$().subscribe(this.setSyncing); @@ -106,7 +109,11 @@ export class HealthStore { return { status: STATUS.CLOCKNOTSYNC }; } - if (this.peerCount && this.peerCount.eq(0)) { + if (!this.hasInternet) { + return { status: STATUS.NOINTERNET }; + } + + if (this.peerCount && this.peerCount.lte(1)) { return { status: STATUS.NOPEERS }; } @@ -129,6 +136,11 @@ export class HealthStore { setSyncing = syncing => { this.syncing = syncing; }; + + @action + verifyInternet = () => { + this.hasInternet = navigator.onLine; + }; } export default new HealthStore(); -- GitLab From 83d88fcb8170b559efc9440ac6e0b5e9cfb8e3db Mon Sep 17 00:00:00 2001 From: Axel Chalon Date: Tue, 7 Aug 2018 17:26:22 +0200 Subject: [PATCH 2/2] Use online/offline events --- packages/fether-react/src/stores/healthStore.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/fether-react/src/stores/healthStore.js b/packages/fether-react/src/stores/healthStore.js index c99e9293..fe94cd60 100644 --- a/packages/fether-react/src/stores/healthStore.js +++ b/packages/fether-react/src/stores/healthStore.js @@ -35,7 +35,10 @@ export class HealthStore { @observable clockSync; constructor () { - setInterval(this.verifyInternet, 5000); + this.setHasInternet(navigator.onLine); + window.addEventListener('online', () => this.setHasInternet(true)); + window.addEventListener('offline', () => this.setHasInternet(false)); + peerCount$(({withoutLoading: true})).subscribe(this.setPeerCount); syncing$().subscribe(this.setSyncing); @@ -138,8 +141,8 @@ export class HealthStore { }; @action - verifyInternet = () => { - this.hasInternet = navigator.onLine; + setHasInternet = hasInternet => { + this.hasInternet = hasInternet; }; } -- GitLab