From 8e0834231429c30a3d1be317a18f211a9a762ad5 Mon Sep 17 00:00:00 2001 From: Roland Osborne Date: Fri, 27 Sep 2024 10:24:43 -0700 Subject: [PATCH] delinting mobile settings --- app/client/mobile/App.styled.ts | 9 ------ app/client/mobile/App.tsx | 13 ++------- app/client/mobile/src/LocalStore.ts | 2 +- app/client/mobile/src/NativeCrypto.ts | 4 +-- app/client/mobile/src/access/Access.tsx | 9 +----- .../mobile/src/access/useAccess.hook.ts | 6 ++-- app/client/mobile/src/channels/Channels.tsx | 4 +-- app/client/mobile/src/contacts/Contacts.tsx | 4 +-- app/client/mobile/src/context/ContextType.ts | 2 -- .../mobile/src/context/useAppContext.hook.ts | 2 +- .../src/context/useDisplayContext.hook.ts | 2 +- .../mobile/src/identity/Identity.styled.ts | 8 ------ app/client/mobile/src/identity/Identity.tsx | 2 +- .../mobile/src/identity/useIdentity.hook.ts | 5 ++-- app/client/mobile/src/root/useRoot.hook.ts | 5 ++-- app/client/mobile/src/session/Session.tsx | 28 ++++++++----------- .../mobile/src/session/useSession.hook.ts | 7 ++--- app/client/mobile/src/settings/Settings.tsx | 2 +- .../mobile/src/settings/useSettings.hook.ts | 4 +-- .../mobile/src/utils/InputCode.styled.ts | 4 +++ app/client/mobile/src/utils/InputCode.tsx | 4 +-- 21 files changed, 42 insertions(+), 84 deletions(-) delete mode 100644 app/client/mobile/App.styled.ts diff --git a/app/client/mobile/App.styled.ts b/app/client/mobile/App.styled.ts deleted file mode 100644 index 79cf7e0c..00000000 --- a/app/client/mobile/App.styled.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { - StyleSheet, -} from 'react-native'; - -export const styles = StyleSheet.create({ - highlight: { - fontWeight: '700', - }, -}); diff --git a/app/client/mobile/App.tsx b/app/client/mobile/App.tsx index 7a4572a9..dfa393bd 100644 --- a/app/client/mobile/App.tsx +++ b/app/client/mobile/App.tsx @@ -1,8 +1,7 @@ -import React, {useState} from 'react'; +import React from 'react'; import {Text} from 'react-native'; import {AppContextProvider} from './src/context/AppContext'; import {DisplayContextProvider} from './src/context/DisplayContext'; -import {styles} from './App.styled'; import {NativeRouter} from 'react-router-native'; import {Routes, Route} from 'react-router-dom'; import {Root} from './src/root/Root'; @@ -10,13 +9,8 @@ import {Access} from './src/access/Access'; import {Node} from './src/node/Node'; import {Session} from './src/session/Session'; -import {SafeAreaView, StyleSheet, useColorScheme, View} from 'react-native'; -import { - MD3LightTheme, - MD3DarkTheme, - TextInput, - PaperProvider, -} from 'react-native-paper'; +import {useColorScheme} from 'react-native'; +import {MD3LightTheme, MD3DarkTheme, PaperProvider} from 'react-native-paper'; const databagColors = { light: { @@ -107,7 +101,6 @@ const databagColors = { function App(): React.JSX.Element { const colorScheme = useColorScheme(); - const [text, setText] = useState(''); const theme = colorScheme === 'dark' diff --git a/app/client/mobile/src/LocalStore.ts b/app/client/mobile/src/LocalStore.ts index 7e94bf6b..03b26775 100644 --- a/app/client/mobile/src/LocalStore.ts +++ b/app/client/mobile/src/LocalStore.ts @@ -21,7 +21,7 @@ export class LocalStore implements SqlStore { const rows = await this.localStoreGet( `SELECT * FROM local_store WHERE key='${key}';`, ); - if (rows.length == 1 && rows[0].value != null) { + if (rows.length === 1 && rows[0].value != null) { return rows[0].value; } } catch (err) { diff --git a/app/client/mobile/src/NativeCrypto.ts b/app/client/mobile/src/NativeCrypto.ts index 6734a2f0..b42dcdf8 100644 --- a/app/client/mobile/src/NativeCrypto.ts +++ b/app/client/mobile/src/NativeCrypto.ts @@ -29,8 +29,8 @@ export class NativeCrypto implements Crypto { // generate random aes key public async aesKey(): Promise<{aesKeyHex: string}> { - const aes = await generateSecureRandom(32); - const aesHex = this.uint8ToHexStr(aes); + const aesKey = await generateSecureRandom(32); + const aesKeyHex = this.uint8ToHexStr(aesKey); return {aesKeyHex}; } diff --git a/app/client/mobile/src/access/Access.tsx b/app/client/mobile/src/access/Access.tsx index c47ece77..eff05ef2 100644 --- a/app/client/mobile/src/access/Access.tsx +++ b/app/client/mobile/src/access/Access.tsx @@ -1,5 +1,5 @@ import React, {useState} from 'react'; -import {Platform, KeyboardAvoidingView, View, Image} from 'react-native'; +import {View, Image} from 'react-native'; import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; import {useAccess} from './useAccess.hook'; import {styles} from './Access.styled'; @@ -17,9 +17,7 @@ import {BlurView} from '@react-native-community/blur'; import {InputCode} from '../utils/InputCode'; export function Access() { - const [text, setText] = useState(''); const {state, actions} = useAccess(); - const [disabled, setDisabled] = useState(false); const [showConfirm, setShowConfirm] = useState(false); const [showPassword, setShowPassword] = useState(false); const [alert, setAlert] = useState(false); @@ -46,11 +44,6 @@ export function Access() { err.message === '403' || err.message === '429' ) { - if (err.message === '429') { - setDisabled(true); - } else { - setDisabled(false); - } setOtp(true); } else { setAlert(true); diff --git a/app/client/mobile/src/access/useAccess.hook.ts b/app/client/mobile/src/access/useAccess.hook.ts index 7b635ee9..f25789bc 100644 --- a/app/client/mobile/src/access/useAccess.hook.ts +++ b/app/client/mobile/src/access/useAccess.hook.ts @@ -3,8 +3,6 @@ import {DisplayContext} from '../context/DisplayContext'; import {AppContext} from '../context/AppContext'; import {ContextType} from '../context/ContextType'; -const location = 'https://balzack.coredb.org'; - export function useAccess() { const debounceAvailable = useRef(setTimeout(() => {}, 0)); const debounceTaken = useRef(setTimeout(() => {}, 0)); @@ -27,7 +25,6 @@ export function useAccess() { taken: false, }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any const updateState = (value: any) => { setState(s => ({...s, ...value})); }; @@ -38,6 +35,7 @@ export function useAccess() { checkTaken(username, token, node, secure); getAvailable(node, secure); } + // eslint-disable-next-line react-hooks/exhaustive-deps }, [state.mode, state.username, state.token, state.node, state.secure]); const getAvailable = (node: string, secure: boolean) => { @@ -88,7 +86,7 @@ export function useAccess() { useEffect(() => { const {layout} = display.state; updateState({layout}); - }, [display.state.layout]); + }, [display.state]); const actions = { setMode: (mode: string) => { diff --git a/app/client/mobile/src/channels/Channels.tsx b/app/client/mobile/src/channels/Channels.tsx index 36fe576d..5489db7e 100644 --- a/app/client/mobile/src/channels/Channels.tsx +++ b/app/client/mobile/src/channels/Channels.tsx @@ -1,5 +1,5 @@ -import React, {useContext} from 'react'; -import {Text, Button} from 'react-native-paper'; +import React from 'react'; +import {Text} from 'react-native-paper'; import {SafeAreaView} from 'react-native'; export function Channels() { diff --git a/app/client/mobile/src/contacts/Contacts.tsx b/app/client/mobile/src/contacts/Contacts.tsx index 23e3c0fc..780cb3ba 100644 --- a/app/client/mobile/src/contacts/Contacts.tsx +++ b/app/client/mobile/src/contacts/Contacts.tsx @@ -1,5 +1,5 @@ -import React, {useContext} from 'react'; -import {Text, Button} from 'react-native-paper'; +import React from 'react'; +import {Text} from 'react-native-paper'; import {SafeAreaView} from 'react-native'; export function Contacts() { diff --git a/app/client/mobile/src/context/ContextType.ts b/app/client/mobile/src/context/ContextType.ts index 496ccae1..5ba74f9b 100644 --- a/app/client/mobile/src/context/ContextType.ts +++ b/app/client/mobile/src/context/ContextType.ts @@ -1,6 +1,4 @@ export interface ContextType { - // eslint-disable-next-line @typescript-eslint/no-explicit-any state: any; - // eslint-disable-next-line @typescript-eslint/no-explicit-any actions: any; } diff --git a/app/client/mobile/src/context/useAppContext.hook.ts b/app/client/mobile/src/context/useAppContext.hook.ts index 90034827..cb9ae471 100644 --- a/app/client/mobile/src/context/useAppContext.hook.ts +++ b/app/client/mobile/src/context/useAppContext.hook.ts @@ -15,7 +15,6 @@ export function useAppContext() { monthFirstDate: true, }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any const updateState = (value: any) => { setState(s => ({...s, ...value})); }; @@ -37,6 +36,7 @@ export function useAppContext() { useEffect(() => { setup(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const actions = { diff --git a/app/client/mobile/src/context/useDisplayContext.hook.ts b/app/client/mobile/src/context/useDisplayContext.hook.ts index f6c517cb..3637793d 100644 --- a/app/client/mobile/src/context/useDisplayContext.hook.ts +++ b/app/client/mobile/src/context/useDisplayContext.hook.ts @@ -1,4 +1,4 @@ -import {useEffect, useContext, useState, useRef} from 'react'; +import {useEffect, useState} from 'react'; import {getLanguageStrings} from '../constants/Strings'; import {useWindowDimensions} from 'react-native'; diff --git a/app/client/mobile/src/identity/Identity.styled.ts b/app/client/mobile/src/identity/Identity.styled.ts index c23e99d6..c2b68df6 100644 --- a/app/client/mobile/src/identity/Identity.styled.ts +++ b/app/client/mobile/src/identity/Identity.styled.ts @@ -95,14 +95,6 @@ export const styles = StyleSheet.create({ right: 0, backgroundColor: 'transparent', }, - modalControls: { - display: 'flex', - flexDirection: 'row', - gap: 16, - justifyContent: 'flex-end', - alignItems: 'center', - marginTop: 16, - }, allControl: { flexShrink: 1, flexGrow: 1, diff --git a/app/client/mobile/src/identity/Identity.tsx b/app/client/mobile/src/identity/Identity.tsx index d19a45b1..08e13046 100644 --- a/app/client/mobile/src/identity/Identity.tsx +++ b/app/client/mobile/src/identity/Identity.tsx @@ -1,4 +1,4 @@ -import {useState} from 'react'; +import React, {useState} from 'react'; import {Modal, TouchableOpacity, SafeAreaView, View, Image} from 'react-native'; import { Surface, diff --git a/app/client/mobile/src/identity/useIdentity.hook.ts b/app/client/mobile/src/identity/useIdentity.hook.ts index 3dde0472..82885224 100644 --- a/app/client/mobile/src/identity/useIdentity.hook.ts +++ b/app/client/mobile/src/identity/useIdentity.hook.ts @@ -1,4 +1,4 @@ -import {useEffect, useState, useContext, useRef} from 'react'; +import {useEffect, useState, useContext} from 'react'; import {AppContext} from '../context/AppContext'; import {DisplayContext} from '../context/DisplayContext'; import {ContextType} from '../context/ContextType'; @@ -9,14 +9,12 @@ export function useIdentity() { const [state, setState] = useState({ all: false, - strings: display.state.strings, profile: {} as Profile, profileSet: false, imageUrl: null, strings: display.state.strings, }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any const updateState = (value: any) => { setState(s => ({...s, ...value})); }; @@ -38,6 +36,7 @@ export function useIdentity() { identity.removeProfileListener(setProfile); }; } + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const actions = { diff --git a/app/client/mobile/src/root/useRoot.hook.ts b/app/client/mobile/src/root/useRoot.hook.ts index 6d3f25c0..4a2b0c22 100644 --- a/app/client/mobile/src/root/useRoot.hook.ts +++ b/app/client/mobile/src/root/useRoot.hook.ts @@ -11,7 +11,6 @@ export function useRoot() { pathname: '', }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any const updateState = (value: any) => { setState(s => ({...s, ...value})); }; @@ -19,7 +18,7 @@ export function useRoot() { useEffect(() => { const {pathname} = location; updateState({pathname}); - }, [location.pathname]); + }, [location]); useEffect(() => { if (state.pathname === '/session' && !app.state.session) { @@ -37,7 +36,7 @@ export function useRoot() { } else if (state.pathname !== '/session' && app.state.session) { navigate('/session'); } - }, [state.pathname, app.state.session, app.state.node]); + }, [state.pathname, app.state.session, app.state.node, navigate]); const actions = {}; diff --git a/app/client/mobile/src/session/Session.tsx b/app/client/mobile/src/session/Session.tsx index f178ce80..2dc17ec6 100644 --- a/app/client/mobile/src/session/Session.tsx +++ b/app/client/mobile/src/session/Session.tsx @@ -1,13 +1,7 @@ -import React, {useState, useContext} from 'react'; +import React, {useState} from 'react'; import {View, useColorScheme} from 'react-native'; import {styles} from './Session.styled'; -import { - BottomNavigation, - Surface, - Menu, - Button, - Text, -} from 'react-native-paper'; +import {BottomNavigation, Surface, Text} from 'react-native-paper'; import {Settings} from '../settings/Settings'; import {Channels} from '../channels/Channels'; import {Contacts} from '../contacts/Contacts'; @@ -35,7 +29,7 @@ const ProfileDrawer = createDrawerNavigator(); const DetailsDrawer = createDrawerNavigator(); export function Session() { - const {state, actions} = useSession(); + const {state} = useSession(); const scheme = useColorScheme(); const [index, setIndex] = useState(0); const [routes] = useState([ @@ -88,20 +82,20 @@ export function Session() { function DetailsScreen({nav}) { return ( - - + {({navigation}) => ( )} - - + + ); } @@ -181,15 +175,15 @@ function SettingsScreen({nav}) { } function HomeScreen({nav}) { - const [menu, setMenu] = useState(false); - return ( - + + CHANNELS + CONVERSATION diff --git a/app/client/mobile/src/session/useSession.hook.ts b/app/client/mobile/src/session/useSession.hook.ts index 7d6dbdc3..0fe80e9b 100644 --- a/app/client/mobile/src/session/useSession.hook.ts +++ b/app/client/mobile/src/session/useSession.hook.ts @@ -1,10 +1,8 @@ -import {useEffect, useState, useContext, useRef} from 'react'; +import {useEffect, useState, useContext} from 'react'; import {AppContext} from '../context/AppContext'; import {DisplayContext} from '../context/DisplayContext'; import {ContextType} from '../context/ContextType'; -const DEBOUNCE_MS = 1000; - export function useSession() { const display = useContext(DisplayContext) as ContextType; const app = useContext(AppContext) as ContextType; @@ -14,7 +12,6 @@ export function useSession() { strings: {}, }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any const updateState = (value: any) => { setState(s => ({...s, ...value})); }; @@ -22,7 +19,7 @@ export function useSession() { useEffect(() => { const {layout, strings} = display.state; updateState({layout, strings}); - }, [display.state.layout, display.state.strings]); + }, [display.state]); const actions = { logout: async () => { diff --git a/app/client/mobile/src/settings/Settings.tsx b/app/client/mobile/src/settings/Settings.tsx index 95c11f52..d2afbc2f 100644 --- a/app/client/mobile/src/settings/Settings.tsx +++ b/app/client/mobile/src/settings/Settings.tsx @@ -1,4 +1,4 @@ -import React, {useState, useContext} from 'react'; +import React, {useState} from 'react'; import { Surface, Button, diff --git a/app/client/mobile/src/settings/useSettings.hook.ts b/app/client/mobile/src/settings/useSettings.hook.ts index 1eaf55ad..4eacae07 100644 --- a/app/client/mobile/src/settings/useSettings.hook.ts +++ b/app/client/mobile/src/settings/useSettings.hook.ts @@ -38,7 +38,6 @@ export function useSettings() { fullDayTime: false, }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any const updateState = (value: any) => { setState(s => ({...s, ...value})); }; @@ -77,12 +76,13 @@ export function useSettings() { settings.removeConfigListener(setConfig); identity.removeProfileListener(setProfile); }; + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); useEffect(() => { const {fullDayTime, monthFirstDate} = app.state; updateState({fullDayTime, monthFirstDate}); - }, [app.state.fullDayTime, app.state.monthFirstDate]); + }, [app.state]); useEffect(() => { const {strings, dateFormat, timeFormat} = display.state; diff --git a/app/client/mobile/src/utils/InputCode.styled.ts b/app/client/mobile/src/utils/InputCode.styled.ts index 7f79fa3a..20e8820c 100644 --- a/app/client/mobile/src/utils/InputCode.styled.ts +++ b/app/client/mobile/src/utils/InputCode.styled.ts @@ -1,6 +1,10 @@ import {StyleSheet} from 'react-native'; export const styles = StyleSheet.create({ + container: { + width: '100%', + height: 32, + }, row: { width: '100%', height: '100%', diff --git a/app/client/mobile/src/utils/InputCode.tsx b/app/client/mobile/src/utils/InputCode.tsx index 3a69532c..e6b3e3e5 100644 --- a/app/client/mobile/src/utils/InputCode.tsx +++ b/app/client/mobile/src/utils/InputCode.tsx @@ -1,4 +1,4 @@ -import {TextInput, Text, View, TouchableOpacity} from 'react-native'; +import {TextInput, Text, View} from 'react-native'; import React, {useState, useRef} from 'react'; import {styles} from './InputCode.styled'; @@ -20,7 +20,7 @@ export function InputCode({onChangeText, style}) { return ( - + {code.charAt(0)}