diff --git a/.github/actions/build-ios/action.yml b/.github/actions/build-ios/action.yml
index ddb2133bd5d..b0d860537c4 100644
--- a/.github/actions/build-ios/action.yml
+++ b/.github/actions/build-ios/action.yml
@@ -58,9 +58,7 @@ runs:
path: |
~/.pods
ios/Pods
- key: pods-v1-{{ checksum "ios/Podfile.lock" }}
- restore-keys: |
- pods-v1-
+ key: pods-v2-${{ hashFiles('ios/Podfile.lock') }}
- name: pod install
run: |
diff --git a/.github/actions/upload-ios/action.yml b/.github/actions/upload-ios/action.yml
index 781851ac8d3..6c7f0db8fdc 100644
--- a/.github/actions/upload-ios/action.yml
+++ b/.github/actions/upload-ios/action.yml
@@ -57,9 +57,7 @@ runs:
path: |
~/.pods
ios/Pods
- key: pods-v1-{{ checksum "ios/Podfile.lock" }}
- restore-keys: |
- pods-v1-
+ key: pods-v2-${{ hashFiles('ios/Podfile.lock') }}
- name: Set up Xcode
uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1.7.0
diff --git a/__mocks__/react-native-localize.js b/__mocks__/react-native-localize.js
index 2800ee9024e..94e4c6a2551 100644
--- a/__mocks__/react-native-localize.js
+++ b/__mocks__/react-native-localize.js
@@ -1,2 +1,2 @@
export const initialConstants = null;
-export const findBestAvailableLanguage = () => null;
+export const findBestLanguageTag = () => null;
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 18337835f5e..0aae17adcfd 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -4,6 +4,11 @@
+
+
diff --git a/android/app/src/main/java/chat/rocket/reactnative/MainApplication.kt b/android/app/src/main/java/chat/rocket/reactnative/MainApplication.kt
index 56c88d46277..66e42b454b6 100644
--- a/android/app/src/main/java/chat/rocket/reactnative/MainApplication.kt
+++ b/android/app/src/main/java/chat/rocket/reactnative/MainApplication.kt
@@ -7,12 +7,9 @@ import com.facebook.react.ReactApplication
import com.facebook.react.ReactHost
import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative
import com.facebook.react.ReactInstanceEventListener
-import com.facebook.react.ReactNativeHost
-import com.facebook.react.ReactPackage
import com.facebook.react.bridge.ReactContext
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
-import com.facebook.react.defaults.DefaultReactNativeHost
import com.nozbe.watermelondb.jsi.WatermelonDBJSIPackage;
import com.bugsnag.android.Bugsnag
import expo.modules.ApplicationLifecycleDispatcher
@@ -39,30 +36,22 @@ import chat.rocket.reactnative.input.ExternalInputPackage
*/
open class MainApplication : Application(), ReactApplication {
- override val reactNativeHost: ReactNativeHost =
- object : DefaultReactNativeHost(this) {
- override fun getPackages(): List =
- PackageList(this).packages.apply {
- add(SSLPinningTurboPackage())
- add(WatermelonDBJSIPackage())
- add(VideoConfTurboPackage())
- add(PushNotificationTurboPackage())
- add(VoipTurboPackage())
- add(SecureStoragePackage())
- add(InvertedScrollPackage())
- add(ExternalInputPackage())
- }
-
- override fun getJSMainModuleName(): String = "index"
-
- override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG
-
- override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
- override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
- }
-
- override val reactHost: ReactHost
- get() = getDefaultReactHost(applicationContext, reactNativeHost)
+ override val reactHost: ReactHost by lazy {
+ getDefaultReactHost(
+ context = applicationContext,
+ packageList =
+ PackageList(this).packages.apply {
+ add(SSLPinningTurboPackage())
+ add(WatermelonDBJSIPackage())
+ add(VideoConfTurboPackage())
+ add(PushNotificationTurboPackage())
+ add(VoipTurboPackage())
+ add(SecureStoragePackage())
+ add(InvertedScrollPackage())
+ add(ExternalInputPackage())
+ },
+ )
+ }
override fun onCreate() {
super.onCreate()
diff --git a/android/build.gradle b/android/build.gradle
index 4c980840f56..bd70df04f2b 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -49,4 +49,5 @@ subprojects { subproject ->
}
}
+apply plugin: "expo-root-project"
apply plugin: "com.facebook.react.rootproject"
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index 42f0071e3f1..c524e3996fe 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/android/settings.gradle b/android/settings.gradle
index 9bb0709a8db..4cfee86ab00 100644
--- a/android/settings.gradle
+++ b/android/settings.gradle
@@ -1,12 +1,41 @@
-pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") }
-plugins { id("com.facebook.react.settings") }
-extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() }
+pluginManagement {
+ def reactNativeGradlePlugin = new File(
+ providers.exec {
+ workingDir(rootDir)
+ commandLine("node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })")
+ }.standardOutput.asText.get().trim()
+ ).getParentFile().absolutePath
+ includeBuild(reactNativeGradlePlugin)
+
+ def expoPluginsPath = new File(
+ providers.exec {
+ workingDir(rootDir)
+ commandLine("node", "--print", "require.resolve('expo-modules-autolinking/package.json', { paths: [require.resolve('expo/package.json')] })")
+ }.standardOutput.asText.get().trim(),
+ "../android/expo-gradle-plugin"
+ ).absolutePath
+ includeBuild(expoPluginsPath)
+}
+
+plugins {
+ id("com.facebook.react.settings")
+ id("expo-autolinking-settings")
+}
+
+extensions.configure(com.facebook.react.ReactSettingsExtension) { ex ->
+ if (System.getenv('EXPO_USE_COMMUNITY_AUTOLINKING') == '1') {
+ ex.autolinkLibrariesFromCommand()
+ } else {
+ ex.autolinkLibrariesFromCommand(expoAutolinking.rnConfigCommand)
+ }
+}
+expoAutolinking.useExpoModules()
+
rootProject.name = 'RocketChatRN'
+expoAutolinking.useExpoVersionCatalog()
+
include ':watermelondb-jsi'
project(':watermelondb-jsi').projectDir = new File(rootProject.projectDir, '../node_modules/@nozbe/watermelondb/native/android-jsi')
-include ':app'
-includeBuild('../node_modules/@react-native/gradle-plugin')
-
-apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle");
-useExpoModules()
\ No newline at end of file
+include ':app'
+includeBuild(expoAutolinking.reactNativeGradlePlugin)
diff --git a/app/containers/AudioPlayer/index.tsx b/app/containers/AudioPlayer/index.tsx
index 02fa5c60cc6..34669e75c80 100644
--- a/app/containers/AudioPlayer/index.tsx
+++ b/app/containers/AudioPlayer/index.tsx
@@ -1,10 +1,10 @@
import { useEffect, useRef, useState } from 'react';
import { InteractionManager, View } from 'react-native';
-import { type AVPlaybackStatus } from 'expo-av';
import { activateKeepAwake, deactivateKeepAwake } from 'expo-keep-awake';
import { useSharedValue } from 'react-native-reanimated';
import { useNavigation } from '@react-navigation/native';
+import { type AVPlaybackStatus } from '../../lib/methods/helpers/expoAvShim';
import { useTheme } from '../../theme';
import styles from './styles';
import Seek from './Seek';
diff --git a/app/containers/Avatar/__snapshots__/Avatar.test.tsx.snap b/app/containers/Avatar/__snapshots__/Avatar.test.tsx.snap
index 81ef3deecc6..0fa509e3429 100644
--- a/app/containers/Avatar/__snapshots__/Avatar.test.tsx.snap
+++ b/app/containers/Avatar/__snapshots__/Avatar.test.tsx.snap
@@ -34,6 +34,7 @@ exports[`Story Snapshots: AvatarBase64 should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -49,6 +50,8 @@ exports[`Story Snapshots: AvatarBase64 should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -89,6 +92,7 @@ exports[`Story Snapshots: AvatarExternalProviderUrl should match snapshot 1`] =
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -104,6 +108,8 @@ exports[`Story Snapshots: AvatarExternalProviderUrl should match snapshot 1`] =
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -144,6 +150,7 @@ exports[`Story Snapshots: AvatarPath should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -159,6 +166,8 @@ exports[`Story Snapshots: AvatarPath should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -199,6 +208,7 @@ exports[`Story Snapshots: AvatarRoomId should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -214,6 +224,8 @@ exports[`Story Snapshots: AvatarRoomId should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -254,6 +266,7 @@ exports[`Story Snapshots: AvatarText should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -269,6 +282,8 @@ exports[`Story Snapshots: AvatarText should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -309,6 +324,7 @@ exports[`Story Snapshots: AvatarUrl should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -324,6 +340,8 @@ exports[`Story Snapshots: AvatarUrl should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -364,6 +382,7 @@ exports[`Story Snapshots: Channel should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -379,6 +398,8 @@ exports[`Story Snapshots: Channel should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -419,6 +440,7 @@ exports[`Story Snapshots: Children should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -434,6 +456,8 @@ exports[`Story Snapshots: Children should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -513,6 +537,7 @@ exports[`Story Snapshots: CustomBorderRadius should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -528,6 +553,8 @@ exports[`Story Snapshots: CustomBorderRadius should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -570,6 +597,7 @@ exports[`Story Snapshots: CustomStyle should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -585,6 +613,8 @@ exports[`Story Snapshots: CustomStyle should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -625,6 +655,7 @@ exports[`Story Snapshots: Direct should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -640,6 +671,8 @@ exports[`Story Snapshots: Direct should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -690,6 +723,7 @@ exports[`Story Snapshots: Emoji should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -704,6 +738,8 @@ exports[`Story Snapshots: Emoji should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -745,6 +781,7 @@ exports[`Story Snapshots: RoomAvatarExternalProviderUrl should match snapshot 1`
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -760,6 +797,8 @@ exports[`Story Snapshots: RoomAvatarExternalProviderUrl should match snapshot 1`
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -800,6 +839,7 @@ exports[`Story Snapshots: Static should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -815,6 +855,8 @@ exports[`Story Snapshots: Static should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -935,6 +977,7 @@ exports[`Story Snapshots: Touchable should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -950,6 +993,8 @@ exports[`Story Snapshots: Touchable should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -993,6 +1038,7 @@ exports[`Story Snapshots: WithETag should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -1008,6 +1054,8 @@ exports[`Story Snapshots: WithETag should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -1048,6 +1096,7 @@ exports[`Story Snapshots: WithoutETag should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -1063,6 +1112,8 @@ exports[`Story Snapshots: WithoutETag should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
@@ -1103,6 +1154,7 @@ exports[`Story Snapshots: WrongServer should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -1118,6 +1170,8 @@ exports[`Story Snapshots: WrongServer should match snapshot 1`] = `
"width": 56,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={56}
/>
diff --git a/app/containers/Chip/__snapshots__/Chip.test.tsx.snap b/app/containers/Chip/__snapshots__/Chip.test.tsx.snap
index 113a0ba0758..93904f376ac 100644
--- a/app/containers/Chip/__snapshots__/Chip.test.tsx.snap
+++ b/app/containers/Chip/__snapshots__/Chip.test.tsx.snap
@@ -205,6 +205,7 @@ exports[`Story Snapshots: ChipText should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -220,6 +221,8 @@ exports[`Story Snapshots: ChipText should match snapshot 1`] = `
"width": 28,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={28}
/>
@@ -388,6 +391,7 @@ exports[`Story Snapshots: ChipWithShortText should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -403,6 +407,8 @@ exports[`Story Snapshots: ChipWithShortText should match snapshot 1`] = `
"width": 28,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={28}
/>
@@ -801,6 +807,7 @@ exports[`Story Snapshots: ChipWithoutIcon should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -816,6 +823,8 @@ exports[`Story Snapshots: ChipWithoutIcon should match snapshot 1`] = `
"width": 28,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={28}
/>
diff --git a/app/containers/DirectoryItem/__snapshots__/DirectoryItem.test.tsx.snap b/app/containers/DirectoryItem/__snapshots__/DirectoryItem.test.tsx.snap
index 376f230643c..69fe032cf3e 100644
--- a/app/containers/DirectoryItem/__snapshots__/DirectoryItem.test.tsx.snap
+++ b/app/containers/DirectoryItem/__snapshots__/DirectoryItem.test.tsx.snap
@@ -149,6 +149,7 @@ exports[`Story Snapshots: CustomStyle should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -166,6 +167,8 @@ exports[`Story Snapshots: CustomStyle should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -429,6 +432,7 @@ exports[`Story Snapshots: Default should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -446,6 +450,8 @@ exports[`Story Snapshots: Default should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -709,6 +715,7 @@ exports[`Story Snapshots: DirectMessage should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -726,6 +733,8 @@ exports[`Story Snapshots: DirectMessage should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -958,6 +967,7 @@ exports[`Story Snapshots: LongRoomName should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -975,6 +985,8 @@ exports[`Story Snapshots: LongRoomName should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -1448,6 +1460,7 @@ exports[`Story Snapshots: TeamMain should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -1465,6 +1478,8 @@ exports[`Story Snapshots: TeamMain should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -1728,6 +1743,7 @@ exports[`Story Snapshots: WithRightLabel should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -1745,6 +1761,8 @@ exports[`Story Snapshots: WithRightLabel should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -2027,6 +2045,7 @@ exports[`Story Snapshots: WithoutDescription should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -2044,6 +2063,8 @@ exports[`Story Snapshots: WithoutDescription should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
diff --git a/app/containers/InAppNotification/__snapshots__/NotifierComponent.test.tsx.snap b/app/containers/InAppNotification/__snapshots__/NotifierComponent.test.tsx.snap
index 299c643eae3..4e6498a64ea 100644
--- a/app/containers/InAppNotification/__snapshots__/NotifierComponent.test.tsx.snap
+++ b/app/containers/InAppNotification/__snapshots__/NotifierComponent.test.tsx.snap
@@ -154,6 +154,7 @@ exports[`Story Snapshots: ChannelMessage should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -171,6 +172,8 @@ exports[`Story Snapshots: ChannelMessage should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -500,6 +503,7 @@ exports[`Story Snapshots: DirectMessage should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -517,6 +521,8 @@ exports[`Story Snapshots: DirectMessage should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -846,6 +852,7 @@ exports[`Story Snapshots: WithBlackTheme should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -863,6 +870,8 @@ exports[`Story Snapshots: WithBlackTheme should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -1192,6 +1201,7 @@ exports[`Story Snapshots: WithDarkTheme should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -1209,6 +1219,8 @@ exports[`Story Snapshots: WithDarkTheme should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
diff --git a/app/containers/LoginServices/LoginServices.test.tsx b/app/containers/LoginServices/LoginServices.test.tsx
index d07ccee8870..ee443f6cf2b 100644
--- a/app/containers/LoginServices/LoginServices.test.tsx
+++ b/app/containers/LoginServices/LoginServices.test.tsx
@@ -19,7 +19,10 @@ generateSnapshots(stories);
jest.mock('./serviceLogin', () => ({}));
jest.mock('react-native/Libraries/Linking/Linking', () => ({
- openURL: jest.fn()
+ __esModule: true,
+ default: {
+ openURL: jest.fn()
+ }
}));
const SERVER = 'https://demo.rocket.chat';
diff --git a/app/containers/MessageComposer/components/Buttons/MicOrSendButton.tsx b/app/containers/MessageComposer/components/Buttons/MicOrSendButton.tsx
index c5a06567f94..384b256bf58 100644
--- a/app/containers/MessageComposer/components/Buttons/MicOrSendButton.tsx
+++ b/app/containers/MessageComposer/components/Buttons/MicOrSendButton.tsx
@@ -1,8 +1,8 @@
-import { Audio } from 'expo-av';
import { useContext, type ReactElement } from 'react';
import { Alert } from 'react-native';
import { PermissionStatus } from 'expo-camera';
+import { Audio } from '../../../../lib/methods/helpers/expoAvShim';
import i18n from '../../../../i18n';
import { useAppSelector } from '../../../../lib/hooks/useAppSelector';
import { openAppSettings } from '../../../../lib/methods/helpers/openAppSettings';
diff --git a/app/containers/MessageComposer/components/RecordAudio/Duration.tsx b/app/containers/MessageComposer/components/RecordAudio/Duration.tsx
index ee32696fa73..70e34cfca58 100644
--- a/app/containers/MessageComposer/components/RecordAudio/Duration.tsx
+++ b/app/containers/MessageComposer/components/RecordAudio/Duration.tsx
@@ -1,7 +1,7 @@
import { forwardRef, useImperativeHandle, useState } from 'react';
import { type FontVariant, Text } from 'react-native';
-import { type Audio } from 'expo-av';
+import { type Audio } from '../../../../lib/methods/helpers/expoAvShim';
import sharedStyles from '../../../../views/Styles';
import { useTheme } from '../../../../theme';
import { formatTime } from './utils';
diff --git a/app/containers/MessageComposer/components/RecordAudio/RecordAudio.tsx b/app/containers/MessageComposer/components/RecordAudio/RecordAudio.tsx
index 296505efd85..85810db0055 100644
--- a/app/containers/MessageComposer/components/RecordAudio/RecordAudio.tsx
+++ b/app/containers/MessageComposer/components/RecordAudio/RecordAudio.tsx
@@ -1,10 +1,10 @@
import { View, Text } from 'react-native';
import { useEffect, useRef, useState, type ReactElement } from 'react';
-import { Audio } from 'expo-av';
import { getInfoAsync } from 'expo-file-system/legacy';
import { useKeepAwake } from 'expo-keep-awake';
import { shallowEqual } from 'react-redux';
+import { Audio } from '../../../../lib/methods/helpers/expoAvShim';
import { useTheme } from '../../../../theme';
import { BaseButton } from '../Buttons';
import { CustomIcon } from '../../../CustomIcon';
diff --git a/app/containers/NewMediaCall/VoipCallLifecycle.integration.test.tsx b/app/containers/NewMediaCall/VoipCallLifecycle.integration.test.tsx
index 37a40761bbe..bb1e7af72d0 100644
--- a/app/containers/NewMediaCall/VoipCallLifecycle.integration.test.tsx
+++ b/app/containers/NewMediaCall/VoipCallLifecycle.integration.test.tsx
@@ -157,7 +157,7 @@ jest.mock('../../lib/services/voip/getPeerAutocompleteOptions', () => ({
jest.mock('../../lib/services/voip/navigateToCallRoom', () => ({
navigateToCallRoom: jest.fn().mockResolvedValue(undefined)
}));
-// playCallEndedSound → expo-av → Audio.Sound constructor not present in this test boundary.
+// playCallEndedSound → Audio.Sound constructor from the expo-av shim not present in this test boundary.
jest.mock('../../lib/services/voip/playCallEndedSound', () => ({
playCallEndedSound: jest.fn()
}));
diff --git a/app/containers/NewMediaCall/__snapshots__/FilterHeader.test.tsx.snap b/app/containers/NewMediaCall/__snapshots__/FilterHeader.test.tsx.snap
index 1007e1ae22d..abe83e61179 100644
--- a/app/containers/NewMediaCall/__snapshots__/FilterHeader.test.tsx.snap
+++ b/app/containers/NewMediaCall/__snapshots__/FilterHeader.test.tsx.snap
@@ -37,13 +37,13 @@ exports[`Story Snapshots: Default should match snapshot 1`] = `
}
>
@@ -446,6 +449,7 @@ exports[`Story Snapshots: All should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -463,6 +467,8 @@ exports[`Story Snapshots: All should match snapshot 1`] = `
"width": 28,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={28}
/>
diff --git a/app/containers/NewMediaCall/__snapshots__/PeerList.test.tsx.snap b/app/containers/NewMediaCall/__snapshots__/PeerList.test.tsx.snap
index edea1b8d2ff..f568d011882 100644
--- a/app/containers/NewMediaCall/__snapshots__/PeerList.test.tsx.snap
+++ b/app/containers/NewMediaCall/__snapshots__/PeerList.test.tsx.snap
@@ -311,6 +311,7 @@ exports[`Story Snapshots: All should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -328,6 +329,8 @@ exports[`Story Snapshots: All should match snapshot 1`] = `
"width": 28,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={28}
/>
@@ -516,6 +519,7 @@ exports[`Story Snapshots: All should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -533,6 +537,8 @@ exports[`Story Snapshots: All should match snapshot 1`] = `
"width": 28,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={28}
/>
@@ -721,6 +727,7 @@ exports[`Story Snapshots: All should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -738,6 +745,8 @@ exports[`Story Snapshots: All should match snapshot 1`] = `
"width": 28,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={28}
/>
diff --git a/app/containers/NewMediaCall/__snapshots__/SelectedPeer.test.tsx.snap b/app/containers/NewMediaCall/__snapshots__/SelectedPeer.test.tsx.snap
index 1ee4385af09..e812df5101f 100644
--- a/app/containers/NewMediaCall/__snapshots__/SelectedPeer.test.tsx.snap
+++ b/app/containers/NewMediaCall/__snapshots__/SelectedPeer.test.tsx.snap
@@ -97,6 +97,7 @@ exports[`Story Snapshots: All should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -114,6 +115,8 @@ exports[`Story Snapshots: All should match snapshot 1`] = `
"width": 28,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={28}
/>
@@ -505,6 +508,7 @@ exports[`Story Snapshots: All should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -522,6 +526,8 @@ exports[`Story Snapshots: All should match snapshot 1`] = `
"width": 28,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={28}
/>
@@ -753,6 +759,7 @@ exports[`Story Snapshots: LongUsername should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -770,6 +777,8 @@ exports[`Story Snapshots: LongUsername should match snapshot 1`] = `
"width": 28,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={28}
/>
@@ -1187,6 +1196,7 @@ exports[`Story Snapshots: User should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -1204,6 +1214,8 @@ exports[`Story Snapshots: User should match snapshot 1`] = `
"width": 28,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={28}
/>
diff --git a/app/containers/ReactionsList/__snapshots__/ReactionsList.test.tsx.snap b/app/containers/ReactionsList/__snapshots__/ReactionsList.test.tsx.snap
index 46ef94103e7..8502545eacd 100644
--- a/app/containers/ReactionsList/__snapshots__/ReactionsList.test.tsx.snap
+++ b/app/containers/ReactionsList/__snapshots__/ReactionsList.test.tsx.snap
@@ -155,6 +155,7 @@ exports[`Story Snapshots: ReactionsListFullName should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -168,6 +169,8 @@ exports[`Story Snapshots: ReactionsListFullName should match snapshot 1`] = `
"width": 24,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={24}
/>
@@ -253,6 +256,7 @@ exports[`Story Snapshots: ReactionsListFullName should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -266,6 +270,8 @@ exports[`Story Snapshots: ReactionsListFullName should match snapshot 1`] = `
"width": 24,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={24}
/>
@@ -351,6 +357,7 @@ exports[`Story Snapshots: ReactionsListFullName should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -364,6 +371,8 @@ exports[`Story Snapshots: ReactionsListFullName should match snapshot 1`] = `
"width": 24,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={24}
/>
@@ -667,6 +676,7 @@ exports[`Story Snapshots: ReactionsListFullName should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -680,6 +690,8 @@ exports[`Story Snapshots: ReactionsListFullName should match snapshot 1`] = `
"width": 36,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={36}
/>
@@ -761,6 +773,7 @@ exports[`Story Snapshots: ReactionsListFullName should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -774,6 +787,8 @@ exports[`Story Snapshots: ReactionsListFullName should match snapshot 1`] = `
"width": 36,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={36}
/>
@@ -855,6 +870,7 @@ exports[`Story Snapshots: ReactionsListFullName should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -868,6 +884,8 @@ exports[`Story Snapshots: ReactionsListFullName should match snapshot 1`] = `
"width": 36,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={36}
/>
@@ -1230,6 +1248,7 @@ exports[`Story Snapshots: ReactionsListStory should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -1243,6 +1262,8 @@ exports[`Story Snapshots: ReactionsListStory should match snapshot 1`] = `
"width": 24,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={24}
/>
@@ -1328,6 +1349,7 @@ exports[`Story Snapshots: ReactionsListStory should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -1341,6 +1363,8 @@ exports[`Story Snapshots: ReactionsListStory should match snapshot 1`] = `
"width": 24,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={24}
/>
@@ -1426,6 +1450,7 @@ exports[`Story Snapshots: ReactionsListStory should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -1439,6 +1464,8 @@ exports[`Story Snapshots: ReactionsListStory should match snapshot 1`] = `
"width": 24,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={24}
/>
@@ -1742,6 +1769,7 @@ exports[`Story Snapshots: ReactionsListStory should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -1755,6 +1783,8 @@ exports[`Story Snapshots: ReactionsListStory should match snapshot 1`] = `
"width": 36,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={36}
/>
@@ -1836,6 +1866,7 @@ exports[`Story Snapshots: ReactionsListStory should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -1849,6 +1880,8 @@ exports[`Story Snapshots: ReactionsListStory should match snapshot 1`] = `
"width": 36,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={36}
/>
@@ -1930,6 +1963,7 @@ exports[`Story Snapshots: ReactionsListStory should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -1943,6 +1977,8 @@ exports[`Story Snapshots: ReactionsListStory should match snapshot 1`] = `
"width": 36,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={36}
/>
diff --git a/app/containers/Ringer/index.tsx b/app/containers/Ringer/index.tsx
index 19dad9435cd..ec8445d0950 100644
--- a/app/containers/Ringer/index.tsx
+++ b/app/containers/Ringer/index.tsx
@@ -1,6 +1,7 @@
-import { Audio } from 'expo-av';
import { useEffect, useRef, memo } from 'react';
+import { Audio } from '../../lib/methods/helpers/expoAvShim';
+
export enum ERingerSounds {
DIALTONE = 'dialtone',
RINGTONE = 'ringtone'
diff --git a/app/containers/RoomItem/__snapshots__/RoomItem.test.tsx.snap b/app/containers/RoomItem/__snapshots__/RoomItem.test.tsx.snap
index fecaa188218..f68394b91ef 100644
--- a/app/containers/RoomItem/__snapshots__/RoomItem.test.tsx.snap
+++ b/app/containers/RoomItem/__snapshots__/RoomItem.test.tsx.snap
@@ -485,6 +485,7 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -502,6 +503,8 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -1127,6 +1130,7 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -1144,6 +1148,8 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -1810,6 +1816,7 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -1827,6 +1834,8 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -2493,6 +2502,7 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -2510,6 +2520,8 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -3176,6 +3188,7 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -3193,6 +3206,8 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -3859,6 +3874,7 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -3876,6 +3892,8 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -4542,6 +4560,7 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -4559,6 +4578,8 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -5225,6 +5246,7 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -5242,6 +5264,8 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -5908,6 +5932,7 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -5925,6 +5950,8 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -6591,6 +6618,7 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -6608,6 +6636,8 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -7274,6 +7304,7 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -7291,6 +7322,8 @@ exports[`Story Snapshots: Alerts should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -7961,6 +7994,7 @@ exports[`Story Snapshots: Basic should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -7978,6 +8012,8 @@ exports[`Story Snapshots: Basic should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -8592,6 +8628,7 @@ exports[`Story Snapshots: CondensedRoomItem should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -8609,6 +8646,8 @@ exports[`Story Snapshots: CondensedRoomItem should match snapshot 1`] = `
"width": 36,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={36}
/>
@@ -9275,6 +9314,7 @@ exports[`Story Snapshots: CondensedRoomItem should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -9292,6 +9332,8 @@ exports[`Story Snapshots: CondensedRoomItem should match snapshot 1`] = `
"width": 36,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={36}
/>
@@ -9958,6 +10000,7 @@ exports[`Story Snapshots: CondensedRoomItem should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -9975,6 +10018,8 @@ exports[`Story Snapshots: CondensedRoomItem should match snapshot 1`] = `
"width": 36,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={36}
/>
@@ -14419,6 +14464,7 @@ exports[`Story Snapshots: InvitedRoom should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -14436,6 +14482,8 @@ exports[`Story Snapshots: InvitedRoom should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -15074,6 +15122,7 @@ exports[`Story Snapshots: InvitedRoom should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -15091,6 +15140,8 @@ exports[`Story Snapshots: InvitedRoom should match snapshot 1`] = `
"width": 36,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={36}
/>
@@ -15734,6 +15785,7 @@ exports[`Story Snapshots: LastMessage should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -15751,6 +15803,8 @@ exports[`Story Snapshots: LastMessage should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -16392,6 +16446,7 @@ exports[`Story Snapshots: LastMessage should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -16409,6 +16464,8 @@ exports[`Story Snapshots: LastMessage should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -17050,6 +17107,7 @@ exports[`Story Snapshots: LastMessage should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -17067,6 +17125,8 @@ exports[`Story Snapshots: LastMessage should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -17708,6 +17768,7 @@ exports[`Story Snapshots: LastMessage should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -17725,6 +17786,8 @@ exports[`Story Snapshots: LastMessage should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -18366,6 +18429,7 @@ exports[`Story Snapshots: LastMessage should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -18383,6 +18447,8 @@ exports[`Story Snapshots: LastMessage should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -19080,6 +19146,7 @@ exports[`Story Snapshots: LastMessage should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -19097,6 +19164,8 @@ exports[`Story Snapshots: LastMessage should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -19794,6 +19863,7 @@ exports[`Story Snapshots: LastMessage should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -19811,6 +19881,8 @@ exports[`Story Snapshots: LastMessage should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -20513,6 +20585,7 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -20530,6 +20603,8 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -21140,6 +21215,7 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -21157,6 +21233,8 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -21767,6 +21845,7 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -21784,6 +21863,8 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -22394,6 +22475,7 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -22411,6 +22493,8 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -23021,6 +23105,7 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -23038,6 +23123,8 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -23648,6 +23735,7 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -23665,6 +23753,8 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -24275,6 +24365,7 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -24292,6 +24383,8 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -24902,6 +24995,7 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -24919,6 +25013,8 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -25529,6 +25625,7 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -25546,6 +25643,8 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -26156,6 +26255,7 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -26173,6 +26273,8 @@ exports[`Story Snapshots: OmnichannelIcon should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -26788,6 +26890,7 @@ exports[`Story Snapshots: Tag should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -26805,6 +26908,8 @@ exports[`Story Snapshots: Tag should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -27451,6 +27556,7 @@ exports[`Story Snapshots: Tag should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -27468,6 +27574,8 @@ exports[`Story Snapshots: Tag should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -28146,6 +28254,7 @@ exports[`Story Snapshots: Tag should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -28163,6 +28272,8 @@ exports[`Story Snapshots: Tag should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -28809,6 +28920,7 @@ exports[`Story Snapshots: Tag should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -28826,6 +28938,8 @@ exports[`Story Snapshots: Tag should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -29508,6 +29622,7 @@ exports[`Story Snapshots: Touch should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -29525,6 +29640,8 @@ exports[`Story Snapshots: Touch should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -30139,6 +30256,7 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -30156,6 +30274,8 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -30774,6 +30894,7 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -30791,6 +30912,8 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -31401,6 +31524,7 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -31418,6 +31542,8 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -32028,6 +32154,7 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -32045,6 +32172,8 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -32655,6 +32784,7 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -32672,6 +32802,8 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -33282,6 +33414,7 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -33299,6 +33432,8 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -33909,6 +34044,7 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -33926,6 +34062,8 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -34536,6 +34674,7 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -34553,6 +34692,8 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -35163,6 +35304,7 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -35180,6 +35322,8 @@ exports[`Story Snapshots: Type should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -35795,6 +35939,7 @@ exports[`Story Snapshots: User should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -35812,6 +35957,8 @@ exports[`Story Snapshots: User should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
@@ -36430,6 +36577,7 @@ exports[`Story Snapshots: User should match snapshot 1`] = `
onProgress={[Function]}
placeholder={[]}
priority="high"
+ sfEffect={null}
source={
[
{
@@ -36447,6 +36595,8 @@ exports[`Story Snapshots: User should match snapshot 1`] = `
"width": 48,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={48}
/>
diff --git a/app/containers/SearchBox/__snapshots__/SearchBox.test.tsx.snap b/app/containers/SearchBox/__snapshots__/SearchBox.test.tsx.snap
index 522b0f136ff..134955c59a7 100644
--- a/app/containers/SearchBox/__snapshots__/SearchBox.test.tsx.snap
+++ b/app/containers/SearchBox/__snapshots__/SearchBox.test.tsx.snap
@@ -10,13 +10,13 @@ exports[`Story Snapshots: Basic should match snapshot 1`] = `
testID="searchbox"
>
@@ -355,6 +358,7 @@ exports[`Story Snapshots: Content should match snapshot 1`] = `
},
]
}
+ sfEffect={null}
source={
[
{
@@ -369,6 +373,8 @@ exports[`Story Snapshots: Content should match snapshot 1`] = `
"width": 44,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={44}
/>
@@ -586,6 +592,7 @@ exports[`Story Snapshots: Content should match snapshot 1`] = `
},
]
}
+ sfEffect={null}
source={
[
{
@@ -600,6 +607,8 @@ exports[`Story Snapshots: Content should match snapshot 1`] = `
"width": 44,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={44}
/>
@@ -951,6 +960,7 @@ exports[`Story Snapshots: SwipeActions should match snapshot 1`] = `
},
]
}
+ sfEffect={null}
source={
[
{
@@ -965,6 +975,8 @@ exports[`Story Snapshots: SwipeActions should match snapshot 1`] = `
"width": 44,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={44}
/>
@@ -1313,6 +1325,7 @@ exports[`Story Snapshots: SwipeActions should match snapshot 1`] = `
},
]
}
+ sfEffect={null}
source={
[
{
@@ -1327,6 +1340,8 @@ exports[`Story Snapshots: SwipeActions should match snapshot 1`] = `
"width": 44,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={44}
/>
@@ -1551,6 +1566,7 @@ exports[`Story Snapshots: Themes should match snapshot 1`] = `
},
]
}
+ sfEffect={null}
source={
[
{
@@ -1565,6 +1581,8 @@ exports[`Story Snapshots: Themes should match snapshot 1`] = `
"width": 44,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={44}
/>
@@ -1782,6 +1800,7 @@ exports[`Story Snapshots: Themes should match snapshot 1`] = `
},
]
}
+ sfEffect={null}
source={
[
{
@@ -1796,6 +1815,8 @@ exports[`Story Snapshots: Themes should match snapshot 1`] = `
"width": 44,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={44}
/>
@@ -2013,6 +2034,7 @@ exports[`Story Snapshots: Themes should match snapshot 1`] = `
},
]
}
+ sfEffect={null}
source={
[
{
@@ -2027,6 +2049,8 @@ exports[`Story Snapshots: Themes should match snapshot 1`] = `
"width": 44,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={44}
/>
diff --git a/app/containers/TextInput/__snapshots__/TextInput.test.tsx.snap b/app/containers/TextInput/__snapshots__/TextInput.test.tsx.snap
index 28d74179c3d..98ce6834c99 100644
--- a/app/containers/TextInput/__snapshots__/TextInput.test.tsx.snap
+++ b/app/containers/TextInput/__snapshots__/TextInput.test.tsx.snap
@@ -9,13 +9,13 @@ exports[`Story Snapshots: Icons should match snapshot 1`] = `
}
>
@@ -3939,13 +3942,13 @@ exports[`Story Snapshots: ModalInputWithAddField should match snapshot 1`] = `
First field
diff --git a/app/containers/markdown/__snapshots__/Markdown.test.tsx.snap b/app/containers/markdown/__snapshots__/Markdown.test.tsx.snap
index 009e5615a36..a2e686881e3 100644
--- a/app/containers/markdown/__snapshots__/Markdown.test.tsx.snap
+++ b/app/containers/markdown/__snapshots__/Markdown.test.tsx.snap
@@ -736,6 +736,7 @@ exports[`Story Snapshots: Emoji should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -749,6 +750,8 @@ exports[`Story Snapshots: Emoji should match snapshot 1`] = `
"width": 15,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={15}
/>
@@ -797,6 +800,7 @@ exports[`Story Snapshots: Emoji should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -810,6 +814,8 @@ exports[`Story Snapshots: Emoji should match snapshot 1`] = `
"width": 15,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={15}
/>
@@ -858,6 +864,7 @@ exports[`Story Snapshots: Emoji should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -871,6 +878,8 @@ exports[`Story Snapshots: Emoji should match snapshot 1`] = `
"width": 15,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={15}
/>
@@ -959,6 +968,7 @@ exports[`Story Snapshots: Emoji should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -972,6 +982,8 @@ exports[`Story Snapshots: Emoji should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -1266,6 +1278,7 @@ exports[`Story Snapshots: Image should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -1280,6 +1293,8 @@ exports[`Story Snapshots: Image should match snapshot 1`] = `
"width": 300,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={300}
/>
diff --git a/app/containers/markdown/components/Inline.tsx b/app/containers/markdown/components/Inline.tsx
index 284a8193ef9..ae77d8efbd8 100644
--- a/app/containers/markdown/components/Inline.tsx
+++ b/app/containers/markdown/components/Inline.tsx
@@ -11,7 +11,7 @@ import InlineCode from './InlineCode';
import Image from './Image';
import MarkdownContext from '../contexts/MarkdownContext';
import Timestamp from './Timestamp';
-// import { InlineKaTeX, KaTeX } from './Katex';
+import { InlineKaTeX } from './Katex';
interface IParagraphProps {
value: ParagraphProps['value'];
@@ -69,8 +69,7 @@ const Inline = ({ value, forceTrim }: IParagraphProps): ReactElement | null => {
case 'INLINE_CODE':
return ;
case 'INLINE_KATEX':
- // return ;
- return {block.value};
+ return ;
case 'TIMESTAMP':
return ;
default:
diff --git a/app/containers/markdown/components/Katex.test.tsx b/app/containers/markdown/components/Katex.test.tsx
new file mode 100644
index 00000000000..0a56fb3ce03
--- /dev/null
+++ b/app/containers/markdown/components/Katex.test.tsx
@@ -0,0 +1,52 @@
+import { type Root } from '@rocket.chat/message-parser';
+import { act, render } from '@testing-library/react-native';
+import { type StyleProp, StyleSheet, type ViewStyle } from 'react-native';
+import { type WebViewMessageEvent } from 'react-native-webview';
+
+import Markdown from '..';
+
+interface IKatexMockProps {
+ expression: string;
+ onMessage: (event: WebViewMessageEvent) => void;
+ style: StyleProp;
+}
+
+jest.mock('react-native-katex', () => {
+ const { View } = require('react-native');
+ return {
+ __esModule: true,
+ default: ({ expression, onMessage, style }: IKatexMockProps) => (
+
+ {expression}
+
+ )
+ };
+});
+
+const blockMd: Root = [{ type: 'KATEX', value: 'x^2' }];
+const inlineMd: Root = [{ type: 'PARAGRAPH', value: [{ type: 'INLINE_KATEX', value: 'x^2' }] }];
+
+describe('KaTeX rendering', () => {
+ it('routes a KATEX block node to the Katex WebView, not the $$...$$ code fallback', () => {
+ const { getByTestId, queryByText } = render();
+
+ expect(getByTestId('katex-webview')).toBeTruthy();
+ expect(queryByText('$$x^2$$')).toBeNull();
+ });
+
+ it('keeps inline katex as raw source', () => {
+ const { getByText, queryByTestId } = render();
+
+ expect(getByText('$x^2$')).toBeTruthy();
+ expect(queryByTestId('katex-webview')).toBeNull();
+ });
+
+ it('resizes to the height posted by the WebView', () => {
+ const { getByTestId } = render();
+ const webView = getByTestId('katex-webview');
+
+ act(() => webView.props.onMessage({ nativeEvent: { data: '120' } }));
+
+ expect(StyleSheet.flatten(getByTestId('katex-webview').props.style).height).toBe(120);
+ });
+});
diff --git a/app/containers/markdown/components/Katex.tsx b/app/containers/markdown/components/Katex.tsx
index 2fe8b0afd77..6b65b308868 100644
--- a/app/containers/markdown/components/Katex.tsx
+++ b/app/containers/markdown/components/Katex.tsx
@@ -1,52 +1,62 @@
import { type KaTeX as KaTeXProps } from '@rocket.chat/message-parser';
-import { type ReactElement } from 'react';
+import { useState, type ReactElement } from 'react';
import { type StyleProp, type ViewStyle } from 'react-native';
import Katex from 'react-native-katex';
-// eslint-disable-next-line import/no-unresolved
-import MathView, { MathText } from 'react-native-math-view';
+import { type WebViewMessageEvent } from 'react-native-webview';
+import InlineCode from './InlineCode';
import { isAndroid } from '../../../lib/methods/helpers/deviceInfo';
import { useTheme } from '../../../theme';
-import { DEFAULT_MESSAGE_HEIGHT } from '../../message/utils';
interface IKaTeXProps {
value: KaTeXProps['value'];
}
-const BLOCK_ENV_PATTERN = /\\begin\s*\{\s*(array|matrix|pmatrix|bmatrix|Bmatrix|vmatrix|Vmatrix)\s*\}/;
+const INITIAL_HEIGHT = 20;
-export const KaTeX = ({ value }: IKaTeXProps): ReactElement | null => {
+// Re-post height after layout settles: an initial read misses late glyph/webfont
+// metrics (e.g. \Huge), leaving the container too short and clipping the expression.
+const injectedJavaScript = `
+ function postHeight() { window.ReactNativeWebView.postMessage(String(document.body.scrollHeight)); }
+ postHeight();
+ new ResizeObserver(postHeight).observe(document.body);
+ if (document.fonts && document.fonts.ready) document.fonts.ready.then(postHeight);
+ true;
+`;
+
+// Center horizontally and reset margins, but omit the fork default's height:100%:
+// with a full-height body scrollHeight reflects the container, breaking the height handshake.
+const inlineStyle = (color: string) => `
+body { color: ${color}; margin: 0; display: flex; justify-content: center; }
+.katex { margin: 0; }
+`;
+
+export const KaTeX = ({ value }: IKaTeXProps): ReactElement => {
const { colors } = useTheme();
- const fixAndroidWebviewCrashStyle: StyleProp = isAndroid ? { opacity: 0.99, overflow: 'hidden' } : {};
- // KaTeX array does not render correctly in MathView (shows gray box).
- // MathView does not throw, so renderError is never triggered.
- if (BLOCK_ENV_PATTERN.test(value)) {
- return (
-
- );
- }
+ const [height, setHeight] = useState(INITIAL_HEIGHT);
+
+ const onMessage = (event: WebViewMessageEvent) => {
+ const newHeight = Number(event.nativeEvent.data);
+ if (!Number.isNaN(newHeight) && newHeight > 0) {
+ setHeight(newHeight);
+ }
+ };
+
+ const androidCrashWorkaround: StyleProp = isAndroid ? { opacity: 0.99, overflow: 'hidden' } : {};
return (
- (
-
- )}
+
);
};
-export const InlineKaTeX = ({ value }: IKaTeXProps): ReactElement | null => {
- const { colors } = useTheme();
- return ;
-};
+export const InlineKaTeX = ({ value }: IKaTeXProps): ReactElement => (
+
+);
diff --git a/app/containers/message/components/__tests__/__snapshots__/Message.test.tsx.snap b/app/containers/message/components/__tests__/__snapshots__/Message.test.tsx.snap
index 4b0bda15861..d2b143196a4 100644
--- a/app/containers/message/components/__tests__/__snapshots__/Message.test.tsx.snap
+++ b/app/containers/message/components/__tests__/__snapshots__/Message.test.tsx.snap
@@ -10,13 +10,13 @@ exports[`Story Snapshots: Archived should match snapshot 1`] = `
>
@@ -473,13 +476,13 @@ exports[`Story Snapshots: ArchivedLargeFont should match snapshot 1`] = `
>
@@ -936,13 +942,13 @@ exports[`Story Snapshots: AttachmentWithTextAndLink should match snapshot 1`] =
>
@@ -1707,13 +1716,13 @@ exports[`Story Snapshots: AttachmentWithTextAndLinkLargeFont should match snapsh
>
@@ -2478,13 +2490,13 @@ exports[`Story Snapshots: Avatar should match snapshot 1`] = `
>
@@ -2936,13 +2951,13 @@ exports[`Story Snapshots: Avatar should match snapshot 1`] = `
@@ -3394,13 +3412,13 @@ exports[`Story Snapshots: Avatar should match snapshot 1`] = `
@@ -4310,13 +4331,13 @@ exports[`Story Snapshots: Avatar should match snapshot 1`] = `
@@ -4789,13 +4813,13 @@ exports[`Story Snapshots: Basic should match snapshot 1`] = `
>
@@ -5247,13 +5274,13 @@ exports[`Story Snapshots: Basic should match snapshot 1`] = `
@@ -5718,13 +5748,13 @@ exports[`Story Snapshots: BasicLargeFont should match snapshot 1`] = `
>
@@ -6176,13 +6209,13 @@ exports[`Story Snapshots: BasicLargeFont should match snapshot 1`] = `
@@ -6647,13 +6683,13 @@ exports[`Story Snapshots: BlockQuote should match snapshot 1`] = `
>
@@ -7136,13 +7175,13 @@ exports[`Story Snapshots: BlockQuote should match snapshot 1`] = `
@@ -7688,13 +7730,13 @@ exports[`Story Snapshots: BlockQuoteLargeFont should match snapshot 1`] = `
>
@@ -8177,13 +8222,13 @@ exports[`Story Snapshots: BlockQuoteLargeFont should match snapshot 1`] = `
@@ -8729,13 +8777,13 @@ exports[`Story Snapshots: Broadcast should match snapshot 1`] = `
>
@@ -9320,13 +9371,13 @@ exports[`Story Snapshots: BroadcastLargeFont should match snapshot 1`] = `
>
@@ -9911,13 +9965,13 @@ exports[`Story Snapshots: CollapsedAttachments should match snapshot 1`] = `
>
@@ -10521,13 +10578,13 @@ exports[`Story Snapshots: CollapsedAttachments should match snapshot 1`] = `
@@ -11346,13 +11406,13 @@ exports[`Story Snapshots: CollapsedAttachmentsLargeFont should match snapshot 1`
>
@@ -11956,13 +12019,13 @@ exports[`Story Snapshots: CollapsedAttachmentsLargeFont should match snapshot 1`
@@ -12781,13 +12847,13 @@ exports[`Story Snapshots: CollapsibleAttachmentWithText should match snapshot 1`
>
@@ -13393,13 +13462,13 @@ exports[`Story Snapshots: CollapsibleAttachmentWithText should match snapshot 1`
@@ -14359,13 +14431,13 @@ exports[`Story Snapshots: CollapsibleAttachmentWithTextLargeFont should match sn
>
@@ -14971,13 +15046,13 @@ exports[`Story Snapshots: CollapsibleAttachmentWithTextLargeFont should match sn
@@ -15937,13 +16015,13 @@ exports[`Story Snapshots: ColoredAttachments should match snapshot 1`] = `
>
@@ -17169,13 +17250,13 @@ exports[`Story Snapshots: ColoredAttachmentsLargeFont should match snapshot 1`]
>
@@ -18401,13 +18485,13 @@ exports[`Story Snapshots: CustomFields should match snapshot 1`] = `
>
@@ -19214,13 +19301,13 @@ exports[`Story Snapshots: CustomFields should match snapshot 1`] = `
@@ -20298,13 +20388,13 @@ exports[`Story Snapshots: CustomFieldsLargeFont should match snapshot 1`] = `
>
@@ -21111,13 +21204,13 @@ exports[`Story Snapshots: CustomFieldsLargeFont should match snapshot 1`] = `
@@ -22195,13 +22291,13 @@ exports[`Story Snapshots: DateAndUnreadSeparators should match snapshot 1`] = `
>
@@ -22715,13 +22814,13 @@ exports[`Story Snapshots: DateAndUnreadSeparators should match snapshot 1`] = `
@@ -23217,13 +23319,13 @@ exports[`Story Snapshots: DateAndUnreadSeparators should match snapshot 1`] = `
/>
@@ -23958,13 +24063,13 @@ exports[`Story Snapshots: DateAndUnreadSeparators should match snapshot 1`] = `
/>
@@ -24429,13 +24537,13 @@ exports[`Story Snapshots: DateAndUnreadSeparatorsLargeFont should match snapshot
>
@@ -24949,13 +25060,13 @@ exports[`Story Snapshots: DateAndUnreadSeparatorsLargeFont should match snapshot
@@ -25451,13 +25565,13 @@ exports[`Story Snapshots: DateAndUnreadSeparatorsLargeFont should match snapshot
/>
@@ -26192,13 +26309,13 @@ exports[`Story Snapshots: DateAndUnreadSeparatorsLargeFont should match snapshot
/>
@@ -26663,13 +26783,13 @@ exports[`Story Snapshots: Discussion should match snapshot 1`] = `
>
@@ -27241,13 +27364,13 @@ exports[`Story Snapshots: Discussion should match snapshot 1`] = `
@@ -27821,13 +27947,13 @@ exports[`Story Snapshots: Discussion should match snapshot 1`] = `
@@ -28401,13 +28530,13 @@ exports[`Story Snapshots: Discussion should match snapshot 1`] = `
@@ -28994,13 +29126,13 @@ exports[`Story Snapshots: DiscussionLargeFont should match snapshot 1`] = `
>
@@ -29572,13 +29707,13 @@ exports[`Story Snapshots: DiscussionLargeFont should match snapshot 1`] = `
@@ -30152,13 +30290,13 @@ exports[`Story Snapshots: DiscussionLargeFont should match snapshot 1`] = `
@@ -30732,13 +30873,13 @@ exports[`Story Snapshots: DiscussionLargeFont should match snapshot 1`] = `
@@ -31325,13 +31469,13 @@ exports[`Story Snapshots: Edited should match snapshot 1`] = `
>
@@ -31819,13 +31966,13 @@ exports[`Story Snapshots: Edited should match snapshot 1`] = `
@@ -32588,13 +32738,13 @@ exports[`Story Snapshots: EditedLargeFont should match snapshot 1`] = `
@@ -33335,13 +33488,13 @@ exports[`Story Snapshots: EditingLargeFont should match snapshot 1`] = `
>
@@ -33807,13 +33963,13 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
>
@@ -34264,13 +34423,13 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
@@ -34702,13 +34864,13 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
@@ -35133,6 +35298,7 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -35146,6 +35312,8 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -35177,6 +35345,7 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -35190,6 +35359,8 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -35221,6 +35392,7 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -35234,6 +35406,8 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -35253,13 +35427,13 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
@@ -35684,6 +35861,7 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -35697,6 +35875,8 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -35716,13 +35896,13 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
@@ -36166,6 +36349,7 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -36179,6 +36363,8 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -36198,13 +36384,13 @@ exports[`Story Snapshots: Emojis should match snapshot 1`] = `
@@ -36726,13 +36915,13 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
>
@@ -37183,13 +37375,13 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
@@ -37621,13 +37816,13 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
@@ -38052,6 +38250,7 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -38065,6 +38264,8 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -38096,6 +38297,7 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -38109,6 +38311,8 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -38140,6 +38344,7 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -38153,6 +38358,8 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -38172,13 +38379,13 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
@@ -38603,6 +38813,7 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -38616,6 +38827,8 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -38635,13 +38848,13 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
@@ -39085,6 +39301,7 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -39098,6 +39315,8 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
"width": 30,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={30}
/>
@@ -39117,13 +39336,13 @@ exports[`Story Snapshots: EmojisLargeFont should match snapshot 1`] = `
@@ -39645,13 +39867,13 @@ exports[`Story Snapshots: Encrypted should match snapshot 1`] = `
>
@@ -40140,13 +40365,13 @@ exports[`Story Snapshots: Encrypted should match snapshot 1`] = `
@@ -41086,6 +41314,7 @@ exports[`Story Snapshots: Encrypted should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -41099,6 +41328,8 @@ exports[`Story Snapshots: Encrypted should match snapshot 1`] = `
"width": 19,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={19}
/>
@@ -41339,13 +41570,13 @@ exports[`Story Snapshots: Encrypted should match snapshot 1`] = `
@@ -41723,7 +41957,7 @@ exports[`Story Snapshots: Encrypted should match snapshot 1`] = `
importantForAccessibility="yes"
orderFocusType={0}
orderIndex={2}
- orderKey="«r28»"
+ orderKey="_r_28_"
style={
{
"flex": 1,
@@ -41773,13 +42007,13 @@ exports[`Story Snapshots: Encrypted should match snapshot 1`] = `
@@ -42264,13 +42501,13 @@ exports[`Story Snapshots: Encrypted should match snapshot 1`] = `
@@ -42759,7 +42999,7 @@ exports[`Story Snapshots: Encrypted should match snapshot 1`] = `
@@ -43238,13 +43481,13 @@ exports[`Story Snapshots: Encrypted should match snapshot 1`] = `
@@ -43763,13 +44009,13 @@ exports[`Story Snapshots: Encrypted should match snapshot 1`] = `
@@ -44564,13 +44813,13 @@ exports[`Story Snapshots: EncryptedLargeFont should match snapshot 1`] = `
@@ -45510,6 +45762,7 @@ exports[`Story Snapshots: EncryptedLargeFont should match snapshot 1`] = `
onLoadStart={[Function]}
onProgress={[Function]}
placeholder={[]}
+ sfEffect={null}
source={
[
{
@@ -45523,6 +45776,8 @@ exports[`Story Snapshots: EncryptedLargeFont should match snapshot 1`] = `
"width": 19,
}
}
+ symbolSize={null}
+ symbolWeight={null}
transition={null}
width={19}
/>
@@ -45763,13 +46018,13 @@ exports[`Story Snapshots: EncryptedLargeFont should match snapshot 1`] = `
@@ -46147,7 +46405,7 @@ exports[`Story Snapshots: EncryptedLargeFont should match snapshot 1`] = `
importantForAccessibility="yes"
orderFocusType={0}
orderIndex={2}
- orderKey="«r2h»"
+ orderKey="_r_2h_"
style={
{
"flex": 1,
@@ -46197,13 +46455,13 @@ exports[`Story Snapshots: EncryptedLargeFont should match snapshot 1`] = `
@@ -46688,13 +46949,13 @@ exports[`Story Snapshots: EncryptedLargeFont should match snapshot 1`] = `
@@ -47183,7 +47447,7 @@ exports[`Story Snapshots: EncryptedLargeFont should match snapshot 1`] = `
@@ -47662,13 +47929,13 @@ exports[`Story Snapshots: EncryptedLargeFont should match snapshot 1`] = `
@@ -48187,13 +48457,13 @@ exports[`Story Snapshots: EncryptedLargeFont should match snapshot 1`] = `
@@ -48936,7 +49209,7 @@ exports[`Story Snapshots: Error should match snapshot 1`] = `
@@ -49392,7 +49668,7 @@ exports[`Story Snapshots: ErrorLargeFont should match snapshot 1`] = `
>
@@ -49835,7 +50114,7 @@ exports[`Story Snapshots: ErrorLargeFont should match snapshot 1`] = `
@@ -50291,13 +50573,13 @@ exports[`Story Snapshots: FileAttachmentsWithFilenames should match snapshot 1`]
>
@@ -50888,13 +51173,13 @@ exports[`Story Snapshots: FileAttachmentsWithFilenames should match snapshot 1`]
@@ -51485,13 +51773,13 @@ exports[`Story Snapshots: FileAttachmentsWithFilenames should match snapshot 1`]
@@ -52082,13 +52373,13 @@ exports[`Story Snapshots: FileAttachmentsWithFilenames should match snapshot 1`]
@@ -52756,13 +53050,13 @@ exports[`Story Snapshots: FileAttachmentsWithFilenames should match snapshot 1`]
@@ -53802,13 +54099,13 @@ exports[`Story Snapshots: FileAttachmentsWithFilenamesLargeFont should match sna
@@ -54399,13 +54699,13 @@ exports[`Story Snapshots: FileAttachmentsWithFilenamesLargeFont should match sna
@@ -54996,13 +55299,13 @@ exports[`Story Snapshots: FileAttachmentsWithFilenamesLargeFont should match sna
@@ -55670,13 +55976,13 @@ exports[`Story Snapshots: FileAttachmentsWithFilenamesLargeFont should match sna
@@ -56871,13 +57180,13 @@ exports[`Story Snapshots: FullName should match snapshot 1`] = `
>
@@ -57342,13 +57654,13 @@ exports[`Story Snapshots: FullNameLargeFont should match snapshot 1`] = `
>
@@ -57813,13 +58128,13 @@ exports[`Story Snapshots: GroupedMessages should match snapshot 1`] = `
>
@@ -58271,13 +58589,13 @@ exports[`Story Snapshots: GroupedMessages should match snapshot 1`] = `
@@ -58729,13 +59050,13 @@ exports[`Story Snapshots: GroupedMessages should match snapshot 1`] = `
@@ -59652,13 +59976,13 @@ exports[`Story Snapshots: GroupedMessagesLargeFont should match snapshot 1`] = `
>
@@ -60110,13 +60437,13 @@ exports[`Story Snapshots: GroupedMessagesLargeFont should match snapshot 1`] = `
@@ -60568,13 +60898,13 @@ exports[`Story Snapshots: GroupedMessagesLargeFont should match snapshot 1`] = `
@@ -61491,13 +61824,13 @@ exports[`Story Snapshots: Ignored should match snapshot 1`] = `
>
@@ -61758,7 +62094,7 @@ exports[`Story Snapshots: Ignored should match snapshot 1`] = `
importantForAccessibility="yes"
orderFocusType={0}
orderIndex={2}
- orderKey="«r3i»"
+ orderKey="_r_3i_"
style={
{
"flex": 1,
@@ -61820,13 +62156,13 @@ exports[`Story Snapshots: IgnoredLargeFont should match snapshot 1`] = `
>
@@ -62087,7 +62426,7 @@ exports[`Story Snapshots: IgnoredLargeFont should match snapshot 1`] = `
importantForAccessibility="yes"
orderFocusType={0}
orderIndex={2}
- orderKey="«r3j»"
+ orderKey="_r_3j_"
style={
{
"flex": 1,
@@ -62149,13 +62488,13 @@ exports[`Story Snapshots: InlineKatex should match snapshot 1`] = `
>
@@ -62574,8 +62916,32 @@ exports[`Story Snapshots: InlineKatex should match snapshot 1`] = `
}
}
>
-
- xˆ2 + yˆ2 - zˆ2
+
+
+ $xˆ2 + yˆ2 - zˆ2$
+
@@ -62606,13 +62972,13 @@ exports[`Story Snapshots: InlineKatexLargeFont should match snapshot 1`] = `
>
@@ -63031,8 +63400,32 @@ exports[`Story Snapshots: InlineKatexLargeFont should match snapshot 1`] = `
}
}
>
-
- xˆ2 + yˆ2 - zˆ2
+
+
+ $xˆ2 + yˆ2 - zˆ2$
+
@@ -63063,13 +63456,13 @@ exports[`Story Snapshots: JitsiCall should match snapshot 1`] = `
>
@@ -63596,13 +63992,13 @@ exports[`Story Snapshots: JitsiCallLargeFont should match snapshot 1`] = `
>
@@ -64129,13 +64528,13 @@ exports[`Story Snapshots: Katex should match snapshot 1`] = `
>
@@ -64554,13 +64956,13 @@ exports[`Story Snapshots: KatexArray should match snapshot 1`] = `
>
@@ -64979,13 +65384,13 @@ exports[`Story Snapshots: KatexArrayLargeFont should match snapshot 1`] = `
>
@@ -65404,13 +65812,13 @@ exports[`Story Snapshots: KatexLargeFont should match snapshot 1`] = `
>
@@ -65829,13 +66240,13 @@ exports[`Story Snapshots: Lists should match snapshot 1`] = `
>
@@ -66469,13 +66883,13 @@ exports[`Story Snapshots: Lists should match snapshot 1`] = `
@@ -67059,13 +67476,13 @@ exports[`Story Snapshots: Lists should match snapshot 1`] = `
@@ -67559,13 +67979,13 @@ exports[`Story Snapshots: Lists should match snapshot 1`] = `
@@ -68480,13 +68903,13 @@ exports[`Story Snapshots: ListsLargeFont should match snapshot 1`] = `
@@ -69070,13 +69496,13 @@ exports[`Story Snapshots: ListsLargeFont should match snapshot 1`] = `
@@ -69570,13 +69999,13 @@ exports[`Story Snapshots: ListsLargeFont should match snapshot 1`] = `
@@ -70309,13 +70741,13 @@ exports[`Story Snapshots: LongNameUser should match snapshot 1`] = `
@@ -70803,13 +71238,13 @@ exports[`Story Snapshots: LongNameUser should match snapshot 1`] = `
@@ -71297,13 +71735,13 @@ exports[`Story Snapshots: LongNameUser should match snapshot 1`] = `
@@ -71792,7 +72233,7 @@ exports[`Story Snapshots: LongNameUser should match snapshot 1`] = `
@@ -72235,13 +72679,13 @@ exports[`Story Snapshots: LongNameUser should match snapshot 1`] = `
@@ -72724,13 +73171,13 @@ exports[`Story Snapshots: LongNameUser should match snapshot 1`] = `
@@ -73249,7 +73699,7 @@ exports[`Story Snapshots: LongNameUser should match snapshot 1`] = `
@@ -73828,7 +74281,7 @@ exports[`Story Snapshots: LongNameUser should match snapshot 1`] = `
@@ -74407,7 +74863,7 @@ exports[`Story Snapshots: LongNameUser should match snapshot 1`] = `
@@ -74999,13 +75458,13 @@ exports[`Story Snapshots: LongNameUserLargeFont should match snapshot 1`] = `
>
@@ -75457,13 +75919,13 @@ exports[`Story Snapshots: LongNameUserLargeFont should match snapshot 1`] = `
@@ -75951,13 +76416,13 @@ exports[`Story Snapshots: LongNameUserLargeFont should match snapshot 1`] = `
@@ -76445,13 +76913,13 @@ exports[`Story Snapshots: LongNameUserLargeFont should match snapshot 1`] = `
@@ -76940,7 +77411,7 @@ exports[`Story Snapshots: LongNameUserLargeFont should match snapshot 1`] = `
@@ -77383,13 +77857,13 @@ exports[`Story Snapshots: LongNameUserLargeFont should match snapshot 1`] = `
@@ -77872,13 +78349,13 @@ exports[`Story Snapshots: LongNameUserLargeFont should match snapshot 1`] = `
@@ -78397,7 +78877,7 @@ exports[`Story Snapshots: LongNameUserLargeFont should match snapshot 1`] = `
@@ -78976,7 +79459,7 @@ exports[`Story Snapshots: LongNameUserLargeFont should match snapshot 1`] = `
@@ -79555,7 +80041,7 @@ exports[`Story Snapshots: LongNameUserLargeFont should match snapshot 1`] = `
@@ -80147,13 +80636,13 @@ exports[`Story Snapshots: Mentions should match snapshot 1`] = `
>
@@ -80784,13 +81276,13 @@ exports[`Story Snapshots: Mentions should match snapshot 1`] = `
@@ -81416,13 +81911,13 @@ exports[`Story Snapshots: MentionsLargeFont should match snapshot 1`] = `
>
@@ -82053,13 +82551,13 @@ exports[`Story Snapshots: MentionsLargeFont should match snapshot 1`] = `
@@ -82685,13 +83186,13 @@ exports[`Story Snapshots: Message should match snapshot 1`] = `
>