Compare commits

...

4 Commits

Author SHA1 Message Date
Ansh Nanda 1270c3dbb7 add some comments and native check 2023-12-27 22:47:25 +05:30
Ansh Nanda 12fd3f1470 don't log user out when network isnt connected 2023-12-27 22:37:23 +05:30
Ansh Nanda ee6e5386b7 create netinfo lib 2023-12-27 22:33:30 +05:30
Ansh Nanda e7ae4f19fa install netinfo package 2023-12-27 22:33:15 +05:30
4 changed files with 56 additions and 0 deletions
+1
View File
@@ -58,6 +58,7 @@
"@react-native-clipboard/clipboard": "^1.10.0",
"@react-native-community/blur": "^4.3.0",
"@react-native-community/datetimepicker": "7.6.1",
"@react-native-community/netinfo": "^11.2.1",
"@react-native-masked-view/masked-view": "0.3.0",
"@react-native-menu/menu": "^0.8.0",
"@react-native-picker/picker": "2.5.1",
+36
View File
@@ -0,0 +1,36 @@
import NetInfo, {
NetInfoState,
NetInfoSubscription,
} from '@react-native-community/netinfo'
type NetworkStateChangeListener = (state: NetInfoState) => void
class NetInfoAPI {
private subscription: NetInfoSubscription | null = null
private listeners: NetworkStateChangeListener[] = []
constructor() {
this.subscribe()
}
private subscribe() {
this.subscription = NetInfo.addEventListener(this.handleNetworkStateChange)
}
private handleNetworkStateChange = (state: NetInfoState) => {
this.listeners.forEach(listener => listener(state))
}
public addListener(listener: NetworkStateChangeListener) {
this.listeners.push(listener)
}
public removeListener(listener: NetworkStateChangeListener) {
const index = this.listeners.indexOf(listener)
if (index !== -1) {
this.listeners.splice(index, 1)
}
}
}
export const netInfoAPI = new NetInfoAPI()
+14
View File
@@ -12,6 +12,9 @@ import {emitSessionDropped} from '../events'
import {useLoggedOutViewControls} from '#/state/shell/logged-out'
import {useCloseAllActiveElements} from '#/state/util'
import {track} from '#/lib/analytics/analytics'
import {fetch as fetchNetworkState} from '@react-native-community/netinfo'
import * as Toast from 'view/com/util/Toast'
import {isNative} from '#/platform/detection'
let __globalAgent: BskyAgent = PUBLIC_BSKY_AGENT
@@ -141,6 +144,9 @@ function createPersistSessionHandler(
* to persist this data and wipe their tokens, effectively logging them
* out.
*/
// if creation failed, but it is a network error, we want to persist the
// data so that the user can try again
persistSessionCallback({
expired,
refreshedAccount,
@@ -444,6 +450,14 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
async account => {
try {
if (account) {
const currentNetworkState = await fetchNetworkState()
// can be null, so check for being false
// only check for internet connection if native as netinfo doesn't work in web
if (isNative && currentNetworkState.isConnected === false) {
logger.info(`session: no internet connection, cannot reuse session`)
Toast.show('No internet connection. Please try again.')
return
}
await initSession(account)
}
} catch (e) {
+5
View File
@@ -4729,6 +4729,11 @@
resolved "https://registry.yarnpkg.com/@react-native-community/eslint-plugin/-/eslint-plugin-1.3.0.tgz#9e558170c106bbafaa1ef502bd8e6d4651012bf9"
integrity sha512-+zDZ20NUnSWghj7Ku5aFphMzuM9JulqCW+aPXT6IfIXFbb8tzYTTOSeRFOtuekJ99ibW2fUCSsjuKNlwDIbHFg==
"@react-native-community/netinfo@^11.2.1":
version "11.2.1"
resolved "https://registry.yarnpkg.com/@react-native-community/netinfo/-/netinfo-11.2.1.tgz#177f5409f2ac41fd51ede6e4994307bb0edb2178"
integrity sha512-n9kgmH7vLaU7Cdo8vGfJGGwhrlgppaOSq5zKj9I7H4k5iRM3aNtwURw83mgrc22Ip7nSye2afZV2xDiIyvHttQ==
"@react-native-masked-view/masked-view@0.3.0":
version "0.3.0"
resolved "https://registry.yarnpkg.com/@react-native-masked-view/masked-view/-/masked-view-0.3.0.tgz#bd29fae18d148a685331910a3c7b766ce87eafcc"