From 08d80e6236f67375261402970b308384ecdc933c Mon Sep 17 00:00:00 2001 From: Elias Nahum Date: Thu, 12 May 2022 12:54:43 -0400 Subject: [PATCH] Replace lottie loading spinner for activity indicator (#6266) --- android/app/build.gradle | 1 - .../mattermost/rnbeta/MainApplication.java | 2 - android/settings.gradle | 2 - .../loading/__snapshots__/index.test.tsx.snap | 40 +- app/components/loading/index.tsx | 43 +- app/components/loading/spinner.json | 501 ------------------ .../action_button/index.tsx | 2 +- .../browse_channels/browse_channels.tsx | 7 +- app/screens/browse_channels/channel_list.tsx | 9 +- .../create_direct_message/user_list.tsx | 9 +- .../channel_info_form.tsx | 10 +- app/screens/edit_server/form.tsx | 2 +- .../filtered_list/filtered_list.tsx | 2 +- .../categories_list/categories/categories.tsx | 10 +- .../servers_list/server_item/server_item.tsx | 3 +- app/screens/login/form.tsx | 6 +- app/screens/mfa/index.tsx | 2 +- app/screens/saved_posts/saved_posts.tsx | 28 +- app/screens/server/form.tsx | 6 +- app/utils/theme/index.ts | 4 +- ios/Podfile | 1 - ios/Podfile.lock | 14 +- package-lock.json | 68 --- package.json | 2 - types/api/preferences.d.ts | 3 +- 25 files changed, 64 insertions(+), 713 deletions(-) delete mode 100644 app/components/loading/spinner.json diff --git a/android/app/build.gradle b/android/app/build.gradle index 33c0ad58b..834fb150e 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -288,7 +288,6 @@ dependencies { implementation "com.facebook.react:react-native:+" // From node_modules implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2' - implementation project(':lottie-react-native') implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" diff --git a/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java b/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java index 482106510..24179d2b7 100644 --- a/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java +++ b/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java @@ -12,7 +12,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.airbnb.android.react.lottie.LottiePackage; import com.mattermost.helpers.RealPathUtil; import com.wix.reactnativenotifications.RNNotificationsPackage; @@ -62,7 +61,6 @@ public class MainApplication extends NavigationApplication implements INotificat // Packages that cannot be autolinked yet can be added manually here, for example: // packages.add(new MyReactNativePackage()); packages.add(new RNNotificationsPackage(MainApplication.this)); - packages.add(new LottiePackage()); packages.add( diff --git a/android/settings.gradle b/android/settings.gradle index 5e99d34a8..505de9266 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -6,8 +6,6 @@ if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid') } -include ':lottie-react-native' -project(':lottie-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/lottie-react-native/src/android') include ':reactnativenotifications' project(':reactnativenotifications').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-notifications/lib/android/app') apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) diff --git a/app/components/loading/__snapshots__/index.test.tsx.snap b/app/components/loading/__snapshots__/index.test.tsx.snap index 89cf2bb84..6256aca4b 100644 --- a/app/components/loading/__snapshots__/index.test.tsx.snap +++ b/app/components/loading/__snapshots__/index.test.tsx.snap @@ -2,44 +2,6 @@ exports[`Loading should match snapshot 1`] = ` - - - + `; diff --git a/app/components/loading/index.tsx b/app/components/loading/index.tsx index 075140e46..c728be112 100644 --- a/app/components/loading/index.tsx +++ b/app/components/loading/index.tsx @@ -1,49 +1,30 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import LottieView from 'lottie-react-native'; -import React, {useEffect, useRef} from 'react'; -import {StyleSheet, View, ViewStyle} from 'react-native'; +import React from 'react'; +import {ActivityIndicator, View, ViewStyle} from 'react-native'; + +import {useTheme} from '@context/theme'; type LoadingProps = { containerStyle?: ViewStyle; - style?: ViewStyle; + size?: number | 'small' | 'large'; color?: string; + themeColor?: keyof Theme; } -const Loading = ({containerStyle, style, color}: LoadingProps) => { - const lottieRef = useRef(null); - - // This is a workaround as it seems that autoPlay does not work properly on - // newer versions of RN - useEffect(() => { - const animationFrame = requestAnimationFrame(() => { - lottieRef.current?.reset(); - lottieRef.current?.play(); - }); - - return () => cancelAnimationFrame(animationFrame); - }, []); +const Loading = ({containerStyle, size, color, themeColor}: LoadingProps) => { + const theme = useTheme(); + const indicatorColor = themeColor ? theme[themeColor] : color; return ( - ); }; -const styles = StyleSheet.create({ - lottie: { - height: 32, - width: 32, - }, -}); - export default Loading; diff --git a/app/components/loading/spinner.json b/app/components/loading/spinner.json deleted file mode 100644 index 7a9d55e9e..000000000 --- a/app/components/loading/spinner.json +++ /dev/null @@ -1,501 +0,0 @@ -{ - "v": "5.5.7", - "meta": { - "g": "LottieFiles AE 0.1.20", - "a": "", - "k": "", - "d": "", - "tc": "" - }, - "fr": 60, - "ip": 0, - "op": 40, - "w": 32, - "h": 32, - "nm": "Spinner - white", - "ddd": 0, - "assets": [], - "layers": [ - { - "ddd": 0, - "ind": 1, - "ty": 4, - "nm": "Shape Layer 2", - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.833 - ], - "y": [ - 0.833 - ] - }, - "o": { - "x": [ - 0.167 - ], - "y": [ - 0.167 - ] - }, - "t": 0, - "s": [ - 0 - ] - }, - { - "t": 40, - "s": [ - 360 - ] - } - ], - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 16, - 16, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "d": 1, - "ty": "el", - "s": { - "a": 0, - "k": [ - 27, - 27 - ], - "ix": 2 - }, - "p": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 3 - }, - "nm": "Ellipse Path 1", - "mn": "ADBE Vector Shape - Ellipse", - "hd": false - }, - { - "ty": "gs", - "o": { - "a": 0, - "k": 100, - "ix": 9 - }, - "w": { - "a": 0, - "k": 3, - "ix": 10 - }, - "g": { - "p": 3, - "k": { - "a": 0, - "k": [ - 0.001, - 1, - 1, - 1, - 0.5, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0, - 1, - 0.5, - 0.5, - 1, - 0 - ], - "ix": 8 - } - }, - "s": { - "a": 0, - "k": [ - 2.423, - 11.896 - ], - "ix": 4 - }, - "e": { - "a": 0, - "k": [ - 1.431, - -12.387 - ], - "ix": 5 - }, - "t": 1, - "lc": 1, - "lj": 1, - "ml": 4, - "ml2": { - "a": 0, - "k": 4, - "ix": 13 - }, - "bm": 0, - "nm": "Gradient Stroke 1", - "mn": "ADBE Vector Graphic - G-Stroke", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 0.05, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Ellipse 1", - "np": 3, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 1800, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 2, - "ty": 4, - "nm": "Shape Layer 1", - "parent": 1, - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 0, - "k": 0, - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 0, - 0, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "hasMask": true, - "masksProperties": [ - { - "inv": false, - "mode": "a", - "pt": { - "a": 0, - "k": { - "i": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "o": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - -15.95, - -15.938 - ], - [ - -15.963, - 16 - ], - [ - -0.025, - 16 - ], - [ - -0.013, - -15.938 - ] - ], - "c": true - }, - "ix": 1 - }, - "o": { - "a": 0, - "k": 100, - "ix": 3 - }, - "x": { - "a": 0, - "k": 0, - "ix": 4 - }, - "nm": "Mask 1" - } - ], - "shapes": [ - { - "ty": "gr", - "it": [ - { - "d": 1, - "ty": "el", - "s": { - "a": 0, - "k": [ - 27, - 27 - ], - "ix": 2 - }, - "p": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 3 - }, - "nm": "Ellipse Path 1", - "mn": "ADBE Vector Shape - Ellipse", - "hd": false - }, - { - "ty": "st", - "c": { - "a": 0, - "k": [ - 1, - 1, - 1, - 1 - ], - "ix": 3 - }, - "o": { - "a": 0, - "k": 100, - "ix": 4 - }, - "w": { - "a": 0, - "k": 3, - "ix": 5 - }, - "lc": 1, - "lj": 1, - "ml": 4, - "bm": 0, - "nm": "Stroke 1", - "mn": "ADBE Vector Graphic - Stroke", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 0.05, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Ellipse 1", - "np": 3, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 1800, - "st": 0, - "bm": 0 - } - ], - "markers": [] -} diff --git a/app/components/post_list/post/body/content/message_attachments/action_button/index.tsx b/app/components/post_list/post/body/content/message_attachments/action_button/index.tsx index 261314a96..d429ae9f7 100644 --- a/app/components/post_list/post/body/content/message_attachments/action_button/index.tsx +++ b/app/components/post_list/post/body/content/message_attachments/action_button/index.tsx @@ -19,7 +19,7 @@ type Props = { id: string; name: string; postId: string; - theme: Theme; + theme: ExtendedTheme; } const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => { diff --git a/app/screens/browse_channels/browse_channels.tsx b/app/screens/browse_channels/browse_channels.tsx index 0320f3373..1a20ce06d 100644 --- a/app/screens/browse_channels/browse_channels.tsx +++ b/app/screens/browse_channels/browse_channels.tsx @@ -67,11 +67,6 @@ const style = StyleSheet.create({ justifyContent: 'center' as const, alignItems: 'center' as const, }, - loading: { - height: 32, - width: 32, - justifyContent: 'center' as const, - }, }); type Props = { @@ -198,7 +193,7 @@ export default function BrowseChannels(props: Props) { content = ( ); diff --git a/app/screens/browse_channels/channel_list.tsx b/app/screens/browse_channels/channel_list.tsx index d679b3a27..8534690b5 100644 --- a/app/screens/browse_channels/channel_list.tsx +++ b/app/screens/browse_channels/channel_list.tsx @@ -32,11 +32,6 @@ const getStyleFromTheme = makeStyleSheetFromTheme((theme: Theme) => { justifyContent: 'center' as const, alignItems: 'center' as const, }, - loading: { - height: 32, - width: 32, - justifyContent: 'center' as const, - }, listContainer: { paddingHorizontal: 20, flexGrow: 1, @@ -87,9 +82,9 @@ export default function ChannelList({ return ( ); diff --git a/app/screens/create_direct_message/user_list.tsx b/app/screens/create_direct_message/user_list.tsx index e3ccf2580..2cdf69244 100644 --- a/app/screens/create_direct_message/user_list.tsx +++ b/app/screens/create_direct_message/user_list.tsx @@ -80,11 +80,6 @@ const getStyleFromTheme = makeStyleSheetFromTheme((theme) => { justifyContent: 'center' as const, alignItems: 'center' as const, }, - loading: { - height: 32, - width: 32, - justifyContent: 'center' as const, - }, noResultContainer: { flexGrow: 1, alignItems: 'center' as const, @@ -167,9 +162,9 @@ export default function UserList({ return ( ); }, [loading, theme]); diff --git a/app/screens/create_or_edit_channel/channel_info_form.tsx b/app/screens/create_or_edit_channel/channel_info_form.tsx index 42ae9d40f..07816e7f6 100644 --- a/app/screens/create_or_edit_channel/channel_info_form.tsx +++ b/app/screens/create_or_edit_channel/channel_info_form.tsx @@ -56,9 +56,9 @@ const getStyleSheet = makeStyleSheetFromTheme((theme) => ({ paddingHorizontal: 15, }, loading: { - height: 20, - width: 20, - color: theme.centerChannelBg, + flex: 1, + alignItems: 'center', + justifyContent: 'center', }, textInput: { marginTop: 30, @@ -195,7 +195,9 @@ export default function ChannelInfoForm({ ); diff --git a/app/screens/edit_server/form.tsx b/app/screens/edit_server/form.tsx index cce18c5a4..43fe2289e 100644 --- a/app/screens/edit_server/form.tsx +++ b/app/screens/edit_server/form.tsx @@ -140,7 +140,7 @@ const EditServerForm = ({ buttonIcon = ( ); } diff --git a/app/screens/find_channels/filtered_list/filtered_list.tsx b/app/screens/find_channels/filtered_list/filtered_list.tsx index e1a997a70..8538b64a8 100644 --- a/app/screens/find_channels/filtered_list/filtered_list.tsx +++ b/app/screens/find_channels/filtered_list/filtered_list.tsx @@ -186,7 +186,7 @@ const FilteredList = ({ return ( ); diff --git a/app/screens/home/channel_list/categories_list/categories/categories.tsx b/app/screens/home/channel_list/categories_list/categories/categories.tsx index 8345a6028..d3308b708 100644 --- a/app/screens/home/channel_list/categories_list/categories/categories.tsx +++ b/app/screens/home/channel_list/categories_list/categories/categories.tsx @@ -35,11 +35,6 @@ const styles = StyleSheet.create({ justifyContent: 'center', flex: 1, }, - loading: { - justifyContent: 'center', - height: 32, - width: 32, - }, }); const extractKey = (item: CategoryModel | 'UNREADS') => (item === 'UNREADS' ? 'UNREADS' : item.id); @@ -115,7 +110,10 @@ const Categories = ({categories, onlyUnreads, unreadsOnTop}: Props) => { )} {switchingTeam && ( - + )} diff --git a/app/screens/home/channel_list/servers/servers_list/server_item/server_item.tsx b/app/screens/home/channel_list/servers/servers_list/server_item/server_item.tsx index 8cd365152..6b36f87b0 100644 --- a/app/screens/home/channel_list/servers/servers_list/server_item/server_item.tsx +++ b/app/screens/home/channel_list/servers/servers_list/server_item/server_item.tsx @@ -405,8 +405,9 @@ const ServerItem = ({ } {switching && } diff --git a/app/screens/login/form.tsx b/app/screens/login/form.tsx index 33cb94998..4b6a1c456 100644 --- a/app/screens/login/form.tsx +++ b/app/screens/login/form.tsx @@ -68,10 +68,6 @@ const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => ({ loginButton: { marginTop: 25, }, - loading: { - height: 20, - width: 20, - }, })); const LoginForm = ({config, extra, keyboardAwareRef, numberSSOs, serverDisplayName, launchError, launchType, license, serverUrl, theme}: LoginProps) => { @@ -304,7 +300,7 @@ const LoginForm = ({config, extra, keyboardAwareRef, numberSSOs, serverDisplayNa buttonIcon = ( ); } diff --git a/app/screens/mfa/index.tsx b/app/screens/mfa/index.tsx index fc58cd5e0..be91ee9fd 100644 --- a/app/screens/mfa/index.tsx +++ b/app/screens/mfa/index.tsx @@ -247,7 +247,7 @@ const MFA = ({config, goToHome, license, loginId, password, serverDisplayName, s {isLoading && } selectOrderedPosts(posts, 0, false, '', '', false, isTimezoneEnabled, currentTimezone, false).reverse(), [posts]); + const close = () => { + if (componentId) { + dismissModal({componentId}); + return true; + } + + return false; + }; + useEffect(() => { fetchSavedPosts(serverUrl).finally(() => { setLoading(false); @@ -82,7 +91,7 @@ function SavedMessages({ navigationButtonPressed: ({buttonId}: { buttonId: string }) => { switch (buttonId) { case closeButtonId: - dismissModal({componentId}); + close(); break; } }, @@ -94,6 +103,15 @@ function SavedMessages({ }; }, [componentId, closeButtonId]); + useEffect(() => { + let listener: EventSubscription|undefined; + if (!isTablet && componentId) { + listener = BackHandler.addEventListener('hardwareBackPress', close); + } + + return () => listener?.remove(); + }, [componentId, isTablet]); + const onViewableItemsChanged = useCallback(({viewableItems}: ViewableItemsChanged) => { if (!viewableItems.length) { return; @@ -120,7 +138,7 @@ function SavedMessages({ {loading ? ( ) : ( @@ -163,7 +181,7 @@ function SavedMessages({ style={styles.flex} > ({ padding: 0, top: -2, }, - loading: { - height: 20, - width: 20, - }, })); const ServerForm = ({ @@ -154,7 +150,7 @@ const ServerForm = ({ buttonIcon = ( ); } diff --git a/app/utils/theme/index.ts b/app/utils/theme/index.ts index 5797cf593..7a6f9fe2f 100644 --- a/app/utils/theme/index.ts +++ b/app/utils/theme/index.ts @@ -218,8 +218,8 @@ const themeTypeMap: ThemeTypeMap = { }; // setThemeDefaults will set defaults on the theme for any unset properties. -export function setThemeDefaults(theme: Theme): Theme { - const themes = Preferences.THEMES as Record; +export function setThemeDefaults(theme: ExtendedTheme): Theme { + const themes = Preferences.THEMES as Record; const defaultTheme = themes.denim; const processedTheme = {...theme}; diff --git a/ios/Podfile b/ios/Podfile index b4d42696b..4683b7824 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -31,7 +31,6 @@ target 'Mattermost' do # TODO: Remove this once upstream PR https://github.com/daltoniam/Starscream/pull/871 is merged pod 'Starscream', :git => 'https://github.com/mattermost/Starscream.git', :commit => 'cb83dd247339ff6c155f0e749d6fe2cc145f5283' - pod 'lottie-react-native', :path => '../node_modules/lottie-react-native' end diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 8a53a3f21..ce65f83e4 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -91,10 +91,6 @@ PODS: - libwebp/mux (1.2.1): - libwebp/demux - libwebp/webp (1.2.1) - - lottie-ios (3.2.3) - - lottie-react-native (5.0.1): - - lottie-ios (~> 3.2.3) - - React-Core - OpenSSL-Universal (1.1.1100) - Permission-Camera (3.3.1): - RNPermissions @@ -568,8 +564,6 @@ DEPENDENCIES: - hermes-engine (~> 0.11.0) - jail-monkey (from `../node_modules/jail-monkey`) - libevent (~> 2.1.12) - - lottie-ios (from `../node_modules/lottie-ios`) - - lottie-react-native (from `../node_modules/lottie-react-native`) - OpenSSL-Universal (= 1.1.1100) - Permission-Camera (from `../node_modules/react-native-permissions/ios/Camera`) - Permission-PhotoLibrary (from `../node_modules/react-native-permissions/ios/PhotoLibrary`) @@ -689,10 +683,6 @@ EXTERNAL SOURCES: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" jail-monkey: :path: "../node_modules/jail-monkey" - lottie-ios: - :path: "../node_modules/lottie-ios" - lottie-react-native: - :path: "../node_modules/lottie-react-native" Permission-Camera: :path: "../node_modules/react-native-permissions/ios/Camera" Permission-PhotoLibrary: @@ -865,8 +855,6 @@ SPEC CHECKSUMS: jail-monkey: 07b83767601a373db876e939b8dbf3f5eb15f073 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 libwebp: 98a37e597e40bfdb4c911fc98f2c53d0b12d05fc - lottie-ios: c058aeafa76daa4cf64d773554bccc8385d0150e - lottie-react-native: a029a86e1689c86a07169c520ae770e84348cd20 OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c Permission-Camera: bae27a8503530770c35aadfecbb97ec71823382a Permission-PhotoLibrary: ddb5a158725b29cb12e9e477e8a5f5151c66cc3c @@ -947,6 +935,6 @@ SPEC CHECKSUMS: Yoga: 6671cf077f614314c22fd09ddf87d7abeee64e96 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: bb161ae7bf12d0d04e6c9584b673aeeee5bf3639 +PODFILE CHECKSUM: f02af9f9635e939cc75998e2f4c943a59e23940a COCOAPODS: 1.11.3 diff --git a/package-lock.json b/package-lock.json index ed3541965..6afc1ca95 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,8 +40,6 @@ "emoji-regex": "10.1.0", "fuse.js": "6.5.3", "jail-monkey": "2.6.0", - "lottie-ios": "3.2.3", - "lottie-react-native": "5.0.1", "mime-db": "1.52.0", "moment-timezone": "0.5.34", "react": "17.0.2", @@ -15755,26 +15753,6 @@ "loose-envify": "cli.js" } }, - "node_modules/lottie-ios": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/lottie-ios/-/lottie-ios-3.2.3.tgz", - "integrity": "sha512-mubYMN6+1HXa8z3EJKBvNBkl4UoVM4McjESeB2PgvRMSngmJtC5yUMRdhbbrIAn5Liu3hFGao/14s5hQIgtkRQ==" - }, - "node_modules/lottie-react-native": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/lottie-react-native/-/lottie-react-native-5.0.1.tgz", - "integrity": "sha512-V+ODPqiHOSRzEWg8VsfrJBicgc2k0ZPlCjk3J7ULUkh94smL1nrsF/n4OGukj4MLZwonpv+frVK7pPh5U7t3rQ==", - "dependencies": { - "invariant": "^2.2.2", - "prop-types": "^15.5.10", - "react-native-safe-modules": "^1.0.3" - }, - "peerDependencies": { - "lottie-ios": "^3.2.3", - "react": "*", - "react-native": ">=0.46" - } - }, "node_modules/lowlight": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", @@ -19459,22 +19437,6 @@ "react-native": "*" } }, - "node_modules/react-native-safe-modules": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/react-native-safe-modules/-/react-native-safe-modules-1.0.3.tgz", - "integrity": "sha512-DUxti4Z+AgJ/ZsO5U7p3uSCUBko8JT8GvFlCeOXk9bMd+4qjpoDvMYpfbixXKgL88M+HwmU/KI1YFN6gsQZyBA==", - "dependencies": { - "dedent": "^0.6.0" - }, - "peerDependencies": { - "react-native": "*" - } - }, - "node_modules/react-native-safe-modules/node_modules/dedent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.6.0.tgz", - "integrity": "sha1-Dm2o8M5Sg471zsXI+TlrDBtko8s=" - }, "node_modules/react-native-screens": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.13.1.tgz", @@ -35448,21 +35410,6 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, - "lottie-ios": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/lottie-ios/-/lottie-ios-3.2.3.tgz", - "integrity": "sha512-mubYMN6+1HXa8z3EJKBvNBkl4UoVM4McjESeB2PgvRMSngmJtC5yUMRdhbbrIAn5Liu3hFGao/14s5hQIgtkRQ==" - }, - "lottie-react-native": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/lottie-react-native/-/lottie-react-native-5.0.1.tgz", - "integrity": "sha512-V+ODPqiHOSRzEWg8VsfrJBicgc2k0ZPlCjk3J7ULUkh94smL1nrsF/n4OGukj4MLZwonpv+frVK7pPh5U7t3rQ==", - "requires": { - "invariant": "^2.2.2", - "prop-types": "^15.5.10", - "react-native-safe-modules": "^1.0.3" - } - }, "lowlight": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", @@ -38499,21 +38446,6 @@ "integrity": "sha512-OOX+W2G4YYufvryonn6Kw6YnyT8ZThkxPHZBD04NLHaZmicUaaDVII/PZ3M5fD1o5N62+T+8K4bCS5Un2ggvkA==", "requires": {} }, - "react-native-safe-modules": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/react-native-safe-modules/-/react-native-safe-modules-1.0.3.tgz", - "integrity": "sha512-DUxti4Z+AgJ/ZsO5U7p3uSCUBko8JT8GvFlCeOXk9bMd+4qjpoDvMYpfbixXKgL88M+HwmU/KI1YFN6gsQZyBA==", - "requires": { - "dedent": "^0.6.0" - }, - "dependencies": { - "dedent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.6.0.tgz", - "integrity": "sha1-Dm2o8M5Sg471zsXI+TlrDBtko8s=" - } - } - }, "react-native-screens": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.13.1.tgz", diff --git a/package.json b/package.json index c5a112868..2c2055503 100644 --- a/package.json +++ b/package.json @@ -38,8 +38,6 @@ "emoji-regex": "10.1.0", "fuse.js": "6.5.3", "jail-monkey": "2.6.0", - "lottie-ios": "3.2.3", - "lottie-react-native": "5.0.1", "mime-db": "1.52.0", "moment-timezone": "0.5.34", "react": "17.0.2", diff --git a/types/api/preferences.d.ts b/types/api/preferences.d.ts index 4ab199f78..9e0a104e8 100644 --- a/types/api/preferences.d.ts +++ b/types/api/preferences.d.ts @@ -10,7 +10,6 @@ type ThemeKey = 'denim' | 'sapphire' | 'quartz' | 'indigo' | 'onyx' | 'custom'; type ThemeType = 'Denim' | 'Sapphire' | 'Quartz' | 'Indigo' | 'Onyx' | 'custom'; type Theme = { - [key: string]: string | undefined; type?: ThemeType | LegacyThemeType; sidebarBg: string; sidebarText: string; @@ -38,4 +37,6 @@ type Theme = { codeTheme: string; }; +type ExtendedTheme = Theme & {[key: string]: string | undefined}; + type ThemeTypeMap = Record;