diff --git a/suite-common/icons/assets/icons/wifiSlash.svg b/suite-common/icons/assets/icons/wifiSlash.svg
new file mode 100644
index 000000000000..a63b66729f64
--- /dev/null
+++ b/suite-common/icons/assets/icons/wifiSlash.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/suite-common/icons/src/icons.ts b/suite-common/icons/src/icons.ts
index fabbd1bc2279..5f9f5c04e8a2 100644
--- a/suite-common/icons/src/icons.ts
+++ b/suite-common/icons/src/icons.ts
@@ -116,6 +116,7 @@ export const icons = {
warningOctagon: require('../assets/icons/warningOctagon.svg'),
warningTriangle: require('../assets/icons/warningTriangle.svg'),
warningTriangleLight: require('../assets/icons/warningTriangleLight.svg'),
+ wifiSlash: require('../assets/icons/wifiSlash.svg'),
} as const;
export type IconName = keyof typeof icons;
diff --git a/suite-native/app/package.json b/suite-native/app/package.json
index 777549d1edde..b65f87cd667b 100644
--- a/suite-native/app/package.json
+++ b/suite-native/app/package.json
@@ -20,6 +20,7 @@
"reverse-ports": "adb reverse tcp:8081 tcp:8081 && adb reverse tcp:21325 tcp:21325 && adb reverse tcp:19121 tcp:19121"
},
"dependencies": {
+ "@react-native-community/netinfo": "11.3.2",
"@react-native/metro-config": "0.74.83",
"@react-navigation/bottom-tabs": "6.5.20",
"@react-navigation/native": "6.1.17",
@@ -44,6 +45,7 @@
"@suite-native/atoms": "workspace:*",
"@suite-native/biometrics": "workspace:*",
"@suite-native/config": "workspace:*",
+ "@suite-native/connection-status": "workspace:*",
"@suite-native/device": "workspace:*",
"@suite-native/device-authorization": "workspace:*",
"@suite-native/feature-flags": "workspace:*",
diff --git a/suite-native/app/src/App.tsx b/suite-native/app/src/App.tsx
index 69c1dd11732f..9fd1f3136fc1 100644
--- a/suite-native/app/src/App.tsx
+++ b/suite-native/app/src/App.tsx
@@ -10,6 +10,7 @@ import { selectIsAppReady, selectIsConnectInitialized, StoreProvider } from '@su
import { FormatterProvider } from '@suite-common/formatters';
import { NavigationContainerWithAnalytics } from '@suite-native/navigation';
import { FeatureMessageScreen, MessageSystemBannerRenderer } from '@suite-native/message-system';
+import { OfflineHeader } from '@suite-native/connection-status';
import { IntlProvider } from '@suite-native/intl';
import { useTransactionCache } from '@suite-native/accounts';
import { isDebugEnv } from '@suite-native/config';
@@ -59,6 +60,7 @@ const AppComponent = () => {
return (
+
diff --git a/suite-native/app/tsconfig.json b/suite-native/app/tsconfig.json
index 7eee6704a840..be2ad5510dd1 100644
--- a/suite-native/app/tsconfig.json
+++ b/suite-native/app/tsconfig.json
@@ -36,6 +36,7 @@
{ "path": "../atoms" },
{ "path": "../biometrics" },
{ "path": "../config" },
+ { "path": "../connection-status" },
{ "path": "../device" },
{ "path": "../device-authorization" },
{ "path": "../feature-flags" },
diff --git a/suite-native/connection-status/package.json b/suite-native/connection-status/package.json
new file mode 100644
index 000000000000..2349656f2a63
--- /dev/null
+++ b/suite-native/connection-status/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "@suite-native/connection-status",
+ "version": "1.0.0",
+ "private": true,
+ "license": "See LICENSE.md in repo root",
+ "sideEffects": false,
+ "main": "src/index",
+ "scripts": {
+ "lint:js": "yarn g:eslint '**/*.{ts,tsx,js}'",
+ "depcheck": "yarn g:depcheck",
+ "type-check": "yarn g:tsc --build"
+ },
+ "dependencies": {
+ "@react-native-community/netinfo": "11.3.2",
+ "@suite-common/icons": "workspace:*",
+ "@suite-native/atoms": "workspace:*",
+ "@suite-native/intl": "workspace:*",
+ "@suite-native/settings": "workspace:*",
+ "@trezor/styles": "workspace:*",
+ "react": "18.2.0",
+ "react-native": "0.74.1",
+ "react-native-reanimated": "3.11.0",
+ "react-native-safe-area-context": "4.10.3",
+ "react-redux": "8.0.7"
+ }
+}
diff --git a/suite-native/connection-status/src/OfflineHeader.tsx b/suite-native/connection-status/src/OfflineHeader.tsx
new file mode 100644
index 000000000000..24219d7a923c
--- /dev/null
+++ b/suite-native/connection-status/src/OfflineHeader.tsx
@@ -0,0 +1,45 @@
+import { useSafeAreaInsets } from 'react-native-safe-area-context';
+import Animated, { SlideInUp, SlideOutUp } from 'react-native-reanimated';
+
+import { Icon } from '@suite-common/icons';
+import { Text, HStack } from '@suite-native/atoms';
+import { Translation } from '@suite-native/intl';
+import { prepareNativeStyle, useNativeStyles } from '@trezor/styles';
+
+import { useIsOfflineHeaderVisible } from './useIsOfflineHeaderVisible';
+
+const containerStyle = prepareNativeStyle(utils => ({
+ backgroundColor: utils.colors.backgroundAlertYellowBold,
+ alignItems: 'center',
+}));
+
+const contentStyle = prepareNativeStyle<{ topSafeAreaInset: number }>(
+ (utils, { topSafeAreaInset }) => ({
+ marginTop: topSafeAreaInset,
+ paddingTop: utils.spacings.small,
+ paddingBottom: 12,
+ alignItems: 'center',
+ }),
+);
+
+export const OfflineHeader = () => {
+ const { applyStyle } = useNativeStyles();
+ const { top: topSafeAreaInset } = useSafeAreaInsets();
+
+ const isOfflineHeaderVisible = useIsOfflineHeaderVisible();
+
+ if (!isOfflineHeaderVisible) {
+ return null;
+ }
+
+ return (
+
+
+
+
+
+
+
+
+ );
+};
diff --git a/suite-native/connection-status/src/index.ts b/suite-native/connection-status/src/index.ts
new file mode 100644
index 000000000000..b62940b21cdc
--- /dev/null
+++ b/suite-native/connection-status/src/index.ts
@@ -0,0 +1,3 @@
+export * from './OfflineHeader';
+export * from './useOfflineHeaderAwareSafeAreaInsets';
+export * from './useIsOfflineHeaderVisible';
diff --git a/suite-native/connection-status/src/useIsOfflineHeaderVisible.tsx b/suite-native/connection-status/src/useIsOfflineHeaderVisible.tsx
new file mode 100644
index 000000000000..1b3dac543786
--- /dev/null
+++ b/suite-native/connection-status/src/useIsOfflineHeaderVisible.tsx
@@ -0,0 +1,11 @@
+import { useSelector } from 'react-redux';
+
+import { useNetInfo } from '@react-native-community/netinfo';
+
+import { selectIsOnboardingFinished } from '@suite-native/settings';
+
+export const useIsOfflineHeaderVisible = () => {
+ const isOnboardingFinished = useSelector(selectIsOnboardingFinished);
+
+ return !useNetInfo().isConnected && isOnboardingFinished;
+};
diff --git a/suite-native/connection-status/src/useOfflineHeaderAwareSafeAreaInsets.tsx b/suite-native/connection-status/src/useOfflineHeaderAwareSafeAreaInsets.tsx
new file mode 100644
index 000000000000..5a2b7822d755
--- /dev/null
+++ b/suite-native/connection-status/src/useOfflineHeaderAwareSafeAreaInsets.tsx
@@ -0,0 +1,12 @@
+import { EdgeInsets, useSafeAreaInsets } from 'react-native-safe-area-context';
+
+import { useIsOfflineHeaderVisible } from './useIsOfflineHeaderVisible';
+
+// If offline header is visible, return 0 for top inset, otherwise return the top inset from safe area insets
+// this is beacuse the offline header is displayed on top of the screen and we don't want to add any top padding
+export const useOfflineHeaderAwareSafeAreaInsets = () => {
+ const { top, ...rest } = useSafeAreaInsets();
+ const isOfflineHeaderVisible = useIsOfflineHeaderVisible();
+
+ return { top: isOfflineHeaderVisible ? 0 : top, ...rest } as EdgeInsets;
+};
diff --git a/suite-native/connection-status/tsconfig.json b/suite-native/connection-status/tsconfig.json
new file mode 100644
index 000000000000..a9c499fee6b9
--- /dev/null
+++ b/suite-native/connection-status/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": { "outDir": "libDev" },
+ "references": [
+ { "path": "../../suite-common/icons" },
+ { "path": "../atoms" },
+ { "path": "../intl" },
+ { "path": "../settings" },
+ { "path": "../../packages/styles" }
+ ],
+ "include": [".", "**/*.json"]
+}
diff --git a/suite-native/intl/src/en.ts b/suite-native/intl/src/en.ts
index 3c35cc62fee8..880d59b2ce03 100644
--- a/suite-native/intl/src/en.ts
+++ b/suite-native/intl/src/en.ts
@@ -19,6 +19,7 @@ export const en = {
unknownError: 'Something went wrong',
default: 'Default',
orSeparator: 'OR',
+ offline: "You're offline.",
},
messageSystem: {
killswitch: {
diff --git a/suite-native/message-system/package.json b/suite-native/message-system/package.json
index be5f630961f5..6a7e39e35191 100644
--- a/suite-native/message-system/package.json
+++ b/suite-native/message-system/package.json
@@ -19,6 +19,7 @@
"@suite-common/suite-types": "workspace:*",
"@suite-common/wallet-core": "workspace:*",
"@suite-native/atoms": "workspace:*",
+ "@suite-native/connection-status": "workspace:*",
"@suite-native/intl": "workspace:*",
"@suite-native/link": "workspace:*",
"@trezor/styles": "workspace:*",
@@ -26,7 +27,6 @@
"react": "18.2.0",
"react-native": "0.74.1",
"react-native-reanimated": "3.11.0",
- "react-native-safe-area-context": "4.10.3",
"react-redux": "8.0.7"
}
}
diff --git a/suite-native/message-system/src/components/MessageSystemBannerRenderer.tsx b/suite-native/message-system/src/components/MessageSystemBannerRenderer.tsx
index df264d0bb9db..a3fcc499fbf1 100644
--- a/suite-native/message-system/src/components/MessageSystemBannerRenderer.tsx
+++ b/suite-native/message-system/src/components/MessageSystemBannerRenderer.tsx
@@ -1,4 +1,3 @@
-import { useSafeAreaInsets } from 'react-native-safe-area-context';
import { useSelector } from 'react-redux';
import { A } from '@mobily/ts-belt';
@@ -6,6 +5,7 @@ import { A } from '@mobily/ts-belt';
import { VStack } from '@suite-native/atoms';
import { prepareNativeStyle, useNativeStyles } from '@trezor/styles';
import { selectActiveBannerMessages } from '@suite-common/message-system';
+import { useOfflineHeaderAwareSafeAreaInsets } from '@suite-native/connection-status';
import { MessageBanner } from './MessageBanner';
@@ -17,7 +17,7 @@ const messageBannerContainerStyle = prepareNativeStyle<{ topSafeAreaInset: numbe
export const MessageSystemBannerRenderer = () => {
const { applyStyle } = useNativeStyles();
- const { top: topSafeAreaInset } = useSafeAreaInsets();
+ const { top: topSafeAreaInset } = useOfflineHeaderAwareSafeAreaInsets();
const activeBannerMessages = useSelector(selectActiveBannerMessages);
const topInset = A.isNotEmpty(activeBannerMessages) ? topSafeAreaInset : 0;
diff --git a/suite-native/message-system/tsconfig.json b/suite-native/message-system/tsconfig.json
index 7502a2ce7746..c19532950a8a 100644
--- a/suite-native/message-system/tsconfig.json
+++ b/suite-native/message-system/tsconfig.json
@@ -16,6 +16,7 @@
"path": "../../suite-common/wallet-core"
},
{ "path": "../atoms" },
+ { "path": "../connection-status" },
{ "path": "../intl" },
{ "path": "../link" },
{ "path": "../../packages/styles" },
diff --git a/suite-native/module-add-accounts/package.json b/suite-native/module-add-accounts/package.json
index 29d70da728a2..41fda06519ff 100644
--- a/suite-native/module-add-accounts/package.json
+++ b/suite-native/module-add-accounts/package.json
@@ -22,6 +22,7 @@
"@suite-native/accounts": "workspace:*",
"@suite-native/alerts": "workspace:*",
"@suite-native/atoms": "workspace:*",
+ "@suite-native/connection-status": "workspace:*",
"@suite-native/discovery": "workspace:*",
"@suite-native/intl": "workspace:*",
"@suite-native/link": "workspace:*",
diff --git a/suite-native/module-add-accounts/src/screens/SelectAccountTypeScreen.tsx b/suite-native/module-add-accounts/src/screens/SelectAccountTypeScreen.tsx
index 23e4d92683bc..d8de383be4db 100644
--- a/suite-native/module-add-accounts/src/screens/SelectAccountTypeScreen.tsx
+++ b/suite-native/module-add-accounts/src/screens/SelectAccountTypeScreen.tsx
@@ -1,5 +1,4 @@
import { useState } from 'react';
-import { useSafeAreaInsets } from 'react-native-safe-area-context';
import { View } from 'react-native';
import { LinearGradient } from 'expo-linear-gradient';
@@ -24,6 +23,7 @@ import {
} from '@suite-native/atoms';
import { useTranslate, Translation, TxKeyPath } from '@suite-native/intl';
import { useOpenLink } from '@suite-native/link';
+import { useOfflineHeaderAwareSafeAreaInsets } from '@suite-native/connection-status';
import { useAddCoinAccount, accountTypeTranslationKeys } from '../hooks/useAddCoinAccount';
@@ -89,7 +89,7 @@ export const SelectAccountTypeScreen = ({
const { accountType: defaultType, networkSymbol, flowType } = route.params;
const { translate } = useTranslate();
const openLink = useOpenLink();
- const insets = useSafeAreaInsets();
+ const insets = useOfflineHeaderAwareSafeAreaInsets();
const { applyStyle, utils } = useNativeStyles();
const { getAvailableAccountTypesForNetworkSymbol, addCoinAccount } = useAddCoinAccount();
diff --git a/suite-native/module-add-accounts/tsconfig.json b/suite-native/module-add-accounts/tsconfig.json
index 35e24b0ebbe9..1c416f40bb40 100644
--- a/suite-native/module-add-accounts/tsconfig.json
+++ b/suite-native/module-add-accounts/tsconfig.json
@@ -17,6 +17,7 @@
{ "path": "../accounts" },
{ "path": "../alerts" },
{ "path": "../atoms" },
+ { "path": "../connection-status" },
{ "path": "../discovery" },
{ "path": "../intl" },
{ "path": "../link" },
diff --git a/suite-native/navigation/package.json b/suite-native/navigation/package.json
index d3ee5748669f..ed50ca94e44b 100644
--- a/suite-native/navigation/package.json
+++ b/suite-native/navigation/package.json
@@ -22,6 +22,7 @@
"@suite-common/wallet-types": "workspace:*",
"@suite-native/analytics": "workspace:*",
"@suite-native/atoms": "workspace:*",
+ "@suite-native/connection-status": "workspace:*",
"@trezor/connect": "workspace:*",
"@trezor/styles": "workspace:*",
"@trezor/theme": "workspace:*",
diff --git a/suite-native/navigation/src/components/Screen.tsx b/suite-native/navigation/src/components/Screen.tsx
index e1f957ec4b20..011fb19972e2 100644
--- a/suite-native/navigation/src/components/Screen.tsx
+++ b/suite-native/navigation/src/components/Screen.tsx
@@ -1,6 +1,6 @@
import { useEffect, useContext, ReactNode } from 'react';
import { Platform, ScrollViewProps, StatusBar, View } from 'react-native';
-import { useSafeAreaInsets, EdgeInsets } from 'react-native-safe-area-context';
+import { EdgeInsets } from 'react-native-safe-area-context';
import { useSelector } from 'react-redux';
import * as SystemUI from 'expo-system-ui';
@@ -8,6 +8,7 @@ import * as NavigationBar from 'expo-navigation-bar';
import { BottomTabBarHeightContext } from '@react-navigation/bottom-tabs';
import { useRoute } from '@react-navigation/native';
+import { useOfflineHeaderAwareSafeAreaInsets } from '@suite-native/connection-status';
import { prepareNativeStyle, useNativeStyles } from '@trezor/styles';
import { Color, nativeSpacings } from '@trezor/theme';
import { selectIsAnyBannerMessageActive } from '@suite-common/message-system';
@@ -114,7 +115,7 @@ export const Screen = ({
} = useNativeStyles();
const hasPaddingBottom = !useContext(BottomTabBarHeightContext) && hasBottomInset;
- const insets = useSafeAreaInsets();
+ const insets = useOfflineHeaderAwareSafeAreaInsets();
const backgroundCSSColor = colors[backgroundColor];
const barStyle = isDarkColor(backgroundCSSColor) ? 'light-content' : 'dark-content';
diff --git a/suite-native/navigation/tsconfig.json b/suite-native/navigation/tsconfig.json
index c7e21690cda6..8e1861f35f7e 100644
--- a/suite-native/navigation/tsconfig.json
+++ b/suite-native/navigation/tsconfig.json
@@ -14,6 +14,7 @@
},
{ "path": "../analytics" },
{ "path": "../atoms" },
+ { "path": "../connection-status" },
{ "path": "../../packages/connect" },
{ "path": "../../packages/styles" },
{ "path": "../../packages/theme" }
diff --git a/suite-native/notifications/package.json b/suite-native/notifications/package.json
index 174b8f5d3943..37624de9360e 100644
--- a/suite-native/notifications/package.json
+++ b/suite-native/notifications/package.json
@@ -18,6 +18,7 @@
"@suite-common/wallet-core": "workspace:*",
"@suite-common/wallet-types": "workspace:*",
"@suite-native/atoms": "workspace:*",
+ "@suite-native/connection-status": "workspace:*",
"@suite-native/formatters": "workspace:*",
"@suite-native/navigation": "workspace:*",
"@suite-native/theme": "workspace:*",
@@ -27,7 +28,6 @@
"react-native": "0.74.1",
"react-native-gesture-handler": "2.16.2",
"react-native-reanimated": "3.11.0",
- "react-native-safe-area-context": "4.10.3",
"react-redux": "8.0.7"
}
}
diff --git a/suite-native/notifications/src/components/NotificationRenderer.tsx b/suite-native/notifications/src/components/NotificationRenderer.tsx
index 16de0e1615ec..ce7e21450183 100644
--- a/suite-native/notifications/src/components/NotificationRenderer.tsx
+++ b/suite-native/notifications/src/components/NotificationRenderer.tsx
@@ -1,9 +1,9 @@
-import { useSafeAreaInsets } from 'react-native-safe-area-context';
import { useSelector } from 'react-redux';
import { Box, VStack } from '@suite-native/atoms';
import { selectOpenedTransactionNotifications } from '@suite-common/toast-notifications';
import { prepareNativeStyle, useNativeStyles } from '@trezor/styles';
+import { useOfflineHeaderAwareSafeAreaInsets } from '@suite-native/connection-status';
import { TransactionNotification } from './TransactionNotification';
@@ -19,7 +19,7 @@ const notificationContainerStyle = prepareNativeStyle<{ topSafeAreaInset: number
export const NotificationRenderer = () => {
const { applyStyle } = useNativeStyles();
- const { top: topSafeAreaInset } = useSafeAreaInsets();
+ const { top: topSafeAreaInset } = useOfflineHeaderAwareSafeAreaInsets();
const transactionNotifications = useSelector(selectOpenedTransactionNotifications);
return (
diff --git a/suite-native/notifications/tsconfig.json b/suite-native/notifications/tsconfig.json
index 830132230277..c94347423d1a 100644
--- a/suite-native/notifications/tsconfig.json
+++ b/suite-native/notifications/tsconfig.json
@@ -16,6 +16,7 @@
"path": "../../suite-common/wallet-types"
},
{ "path": "../atoms" },
+ { "path": "../connection-status" },
{ "path": "../formatters" },
{ "path": "../navigation" },
{ "path": "../theme" },
diff --git a/suite-native/toasts/package.json b/suite-native/toasts/package.json
index 0e2d7ad97d8e..e14e2b356e2f 100644
--- a/suite-native/toasts/package.json
+++ b/suite-native/toasts/package.json
@@ -14,11 +14,11 @@
"@mobily/ts-belt": "^3.13.1",
"@suite-common/icons": "workspace:*",
"@suite-native/atoms": "workspace:*",
+ "@suite-native/connection-status": "workspace:*",
"@trezor/styles": "workspace:*",
"@trezor/theme": "workspace:*",
"jotai": "1.9.1",
"react": "18.2.0",
- "react-native-reanimated": "3.11.0",
- "react-native-safe-area-context": "4.10.3"
+ "react-native-reanimated": "3.11.0"
}
}
diff --git a/suite-native/toasts/src/components/ToastRenderer.tsx b/suite-native/toasts/src/components/ToastRenderer.tsx
index 8d364f9528fa..fdc7122a704c 100644
--- a/suite-native/toasts/src/components/ToastRenderer.tsx
+++ b/suite-native/toasts/src/components/ToastRenderer.tsx
@@ -1,7 +1,6 @@
-import { useSafeAreaInsets } from 'react-native-safe-area-context';
-
import { useAtomValue } from 'jotai';
+import { useOfflineHeaderAwareSafeAreaInsets } from '@suite-native/connection-status';
import { Box, VStack } from '@suite-native/atoms';
import { prepareNativeStyle, useNativeStyles } from '@trezor/styles';
@@ -20,7 +19,7 @@ const toastsContainerStyle = prepareNativeStyle<{ topSafeAreaInset: number }>(
export const ToastRenderer = () => {
const { applyStyle } = useNativeStyles();
- const { top: topSafeAreaInset } = useSafeAreaInsets();
+ const { top: topSafeAreaInset } = useOfflineHeaderAwareSafeAreaInsets();
const toasts = useAtomValue(toastsAtom);
return (
diff --git a/suite-native/toasts/tsconfig.json b/suite-native/toasts/tsconfig.json
index 274f237be2ec..4b6ba356e1d9 100644
--- a/suite-native/toasts/tsconfig.json
+++ b/suite-native/toasts/tsconfig.json
@@ -4,6 +4,7 @@
"references": [
{ "path": "../../suite-common/icons" },
{ "path": "../atoms" },
+ { "path": "../connection-status" },
{ "path": "../../packages/styles" },
{ "path": "../../packages/theme" }
]
diff --git a/tsconfig.json b/tsconfig.json
index ce8e679dbb9a..1a82d2d5364b 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -52,6 +52,9 @@
{ "path": "suite-native/biometrics" },
{ "path": "suite-native/blockchain" },
{ "path": "suite-native/config" },
+ {
+ "path": "suite-native/connection-status"
+ },
{ "path": "suite-native/device" },
{
"path": "suite-native/device-authorization"
diff --git a/yarn.lock b/yarn.lock
index e020eb8c5e78..4d22ef6c533b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6567,6 +6567,15 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/netinfo@npm:11.3.2":
+ version: 11.3.2
+ resolution: "@react-native-community/netinfo@npm:11.3.2"
+ peerDependencies:
+ react-native: ">=0.59"
+ checksum: 10/5c4f754cf6ab4c065c98c9cf11c79aec04987d542b1d3ee3e6f19b96c1cb051717c44f79e405b92f0cfccbfc4d796a087fa36de14b46c6eca37526dce4dc4c4f
+ languageName: node
+ linkType: hard
+
"@react-native/assets-registry@npm:0.74.83, @react-native/assets-registry@npm:~0.74.83":
version: 0.74.83
resolution: "@react-native/assets-registry@npm:0.74.83"
@@ -9014,6 +9023,7 @@ __metadata:
"@babel/core": "npm:^7.20.0"
"@babel/plugin-transform-export-namespace-from": "npm:^7.23.4"
"@config-plugins/detox": "npm:^7.0.0"
+ "@react-native-community/netinfo": "npm:11.3.2"
"@react-native/babel-preset": "npm:^0.74.83"
"@react-native/metro-config": "npm:0.74.83"
"@react-navigation/bottom-tabs": "npm:6.5.20"
@@ -9039,6 +9049,7 @@ __metadata:
"@suite-native/atoms": "workspace:*"
"@suite-native/biometrics": "workspace:*"
"@suite-native/config": "workspace:*"
+ "@suite-native/connection-status": "workspace:*"
"@suite-native/device": "workspace:*"
"@suite-native/device-authorization": "workspace:*"
"@suite-native/feature-flags": "workspace:*"
@@ -9204,6 +9215,24 @@ __metadata:
languageName: unknown
linkType: soft
+"@suite-native/connection-status@workspace:*, @suite-native/connection-status@workspace:suite-native/connection-status":
+ version: 0.0.0-use.local
+ resolution: "@suite-native/connection-status@workspace:suite-native/connection-status"
+ dependencies:
+ "@react-native-community/netinfo": "npm:11.3.2"
+ "@suite-common/icons": "workspace:*"
+ "@suite-native/atoms": "workspace:*"
+ "@suite-native/intl": "workspace:*"
+ "@suite-native/settings": "workspace:*"
+ "@trezor/styles": "workspace:*"
+ react: "npm:18.2.0"
+ react-native: "npm:0.74.1"
+ react-native-reanimated: "npm:3.11.0"
+ react-native-safe-area-context: "npm:4.10.3"
+ react-redux: "npm:8.0.7"
+ languageName: unknown
+ linkType: soft
+
"@suite-native/device-authorization@workspace:*, @suite-native/device-authorization@workspace:suite-native/device-authorization":
version: 0.0.0-use.local
resolution: "@suite-native/device-authorization@workspace:suite-native/device-authorization"
@@ -9469,6 +9498,7 @@ __metadata:
"@suite-common/suite-types": "workspace:*"
"@suite-common/wallet-core": "workspace:*"
"@suite-native/atoms": "workspace:*"
+ "@suite-native/connection-status": "workspace:*"
"@suite-native/intl": "workspace:*"
"@suite-native/link": "workspace:*"
"@trezor/styles": "workspace:*"
@@ -9476,7 +9506,6 @@ __metadata:
react: "npm:18.2.0"
react-native: "npm:0.74.1"
react-native-reanimated: "npm:3.11.0"
- react-native-safe-area-context: "npm:4.10.3"
react-redux: "npm:8.0.7"
languageName: unknown
linkType: soft
@@ -9579,6 +9608,7 @@ __metadata:
"@suite-native/accounts": "workspace:*"
"@suite-native/alerts": "workspace:*"
"@suite-native/atoms": "workspace:*"
+ "@suite-native/connection-status": "workspace:*"
"@suite-native/discovery": "workspace:*"
"@suite-native/intl": "workspace:*"
"@suite-native/link": "workspace:*"
@@ -9815,6 +9845,7 @@ __metadata:
"@suite-common/wallet-types": "workspace:*"
"@suite-native/analytics": "workspace:*"
"@suite-native/atoms": "workspace:*"
+ "@suite-native/connection-status": "workspace:*"
"@trezor/connect": "workspace:*"
"@trezor/styles": "workspace:*"
"@trezor/theme": "workspace:*"
@@ -9839,6 +9870,7 @@ __metadata:
"@suite-common/wallet-core": "workspace:*"
"@suite-common/wallet-types": "workspace:*"
"@suite-native/atoms": "workspace:*"
+ "@suite-native/connection-status": "workspace:*"
"@suite-native/formatters": "workspace:*"
"@suite-native/navigation": "workspace:*"
"@suite-native/theme": "workspace:*"
@@ -9848,7 +9880,6 @@ __metadata:
react-native: "npm:0.74.1"
react-native-gesture-handler: "npm:2.16.2"
react-native-reanimated: "npm:3.11.0"
- react-native-safe-area-context: "npm:4.10.3"
react-redux: "npm:8.0.7"
languageName: unknown
linkType: soft
@@ -10027,12 +10058,12 @@ __metadata:
"@mobily/ts-belt": "npm:^3.13.1"
"@suite-common/icons": "workspace:*"
"@suite-native/atoms": "workspace:*"
+ "@suite-native/connection-status": "workspace:*"
"@trezor/styles": "workspace:*"
"@trezor/theme": "workspace:*"
jotai: "npm:1.9.1"
react: "npm:18.2.0"
react-native-reanimated: "npm:3.11.0"
- react-native-safe-area-context: "npm:4.10.3"
languageName: unknown
linkType: soft