From 19ded9ca7462092dd2e8ce24aeeab409a6c1cd2e Mon Sep 17 00:00:00 2001 From: Arthur Jamet Date: Thu, 8 Jun 2023 10:51:29 +0100 Subject: [PATCH] Front: Typecheck Navigators and hooks --- front/hooks/colorScheme.ts | 5 +-- front/models/LocalSettings.ts | 2 +- front/state/SettingsSlice.ts | 1 + front/tsconfig.json | 4 +- front/views/settings/PreferencesView.tsx | 10 ++--- front/views/settings/SettingsView.tsx | 53 +++--------------------- 6 files changed, 15 insertions(+), 60 deletions(-) diff --git a/front/hooks/colorScheme.ts b/front/hooks/colorScheme.ts index d8a67f3..b0e7d87 100644 --- a/front/hooks/colorScheme.ts +++ b/front/hooks/colorScheme.ts @@ -1,9 +1,8 @@ import { Appearance } from "react-native"; -import { useSelector } from "react-redux"; -import { RootState } from "../state/Store"; +import { useSelector } from "../state/Store"; const useColorScheme = (): 'light' | 'dark' => { - const colorScheme = useSelector((state: RootState) => state.settings.local.colorScheme); + const colorScheme = useSelector((state) => state.settings.local.colorScheme); const systemColorScheme = Appearance.getColorScheme(); if (colorScheme == 'system') { diff --git a/front/models/LocalSettings.ts b/front/models/LocalSettings.ts index 6f65462..c712155 100644 --- a/front/models/LocalSettings.ts +++ b/front/models/LocalSettings.ts @@ -1,4 +1,4 @@ -interface LocalSettings { +export default interface LocalSettings { deviceId: number, micVolume: number, colorScheme: 'light' | 'dark' | 'system', diff --git a/front/state/SettingsSlice.ts b/front/state/SettingsSlice.ts index d5ef39e..cb0921d 100644 --- a/front/state/SettingsSlice.ts +++ b/front/state/SettingsSlice.ts @@ -1,4 +1,5 @@ import { createSlice, PayloadAction } from "@reduxjs/toolkit"; +import LocalSettings from "../models/LocalSettings"; export const settingsSlice = createSlice({ name: 'settings', diff --git a/front/tsconfig.json b/front/tsconfig.json index e7f36ff..6569689 100644 --- a/front/tsconfig.json +++ b/front/tsconfig.json @@ -100,6 +100,8 @@ "skipLibCheck": true /* Skip type checking all .d.ts files. */ }, "exclude": [ - "node_modules", "babel.config.js", "metro.config.js", "jest.config.js" + "node_modules", "babel.config.js", "metro.config.js", + "jest.config.js", "app.config.ts", + "*/*.test.tsx" ] } diff --git a/front/views/settings/PreferencesView.tsx b/front/views/settings/PreferencesView.tsx index 95b1f38..f53a7cb 100644 --- a/front/views/settings/PreferencesView.tsx +++ b/front/views/settings/PreferencesView.tsx @@ -11,18 +11,14 @@ import { translate, Translate, } from "../../i18n/i18n"; -import { RootState, useSelector } from "../../state/Store"; +import { useSelector } from "../../state/Store"; import { updateSettings } from "../../state/SettingsSlice"; import ElementList from "../../components/GtkUI/ElementList"; const PreferencesView = () => { const dispatch = useDispatch(); - const language: AvailableLanguages = useSelector( - (state: RootState) => state.language.value - ); - const settings = useSelector( - (state: RootState) => state.settings.local - ); + const language = useSelector((state) => state.language.value); + const settings = useSelector((state) => state.settings.local); return (
diff --git a/front/views/settings/SettingsView.tsx b/front/views/settings/SettingsView.tsx index 285f917..efcfbe3 100644 --- a/front/views/settings/SettingsView.tsx +++ b/front/views/settings/SettingsView.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import { Center, Button, Text, Heading, Box } from "native-base"; import { createNativeStackNavigator } from '@react-navigation/native-stack'; import { unsetAccessToken } from '../../state/UserSlice'; @@ -16,9 +16,6 @@ import GuestToUserView from './GuestToUserView'; import { useQuery } from 'react-query'; import API from '../../API'; - -const SettingsStack = createNativeStackNavigator(); - const handleChangeEmail = async (newEmail: string): Promise => { try { let response = await API.updateUserEmail(newEmail); @@ -37,43 +34,7 @@ const handleChangePassword = async (oldPassword: string, newPassword: string): P } } -const MainView = ({ navigation }) => { - const dispatch = useDispatch(); - - return ( -
- - - - - - - - - - - - - -
- ) -} - -export const ChangePasswordView = ({ navigation }) => { +export const ChangePasswordView = () => { return (
{translate('changePassword')} @@ -82,7 +43,7 @@ export const ChangePasswordView = ({ navigation }) => { ) } -export const ChangeEmailView = ({ navigation }) => { +export const ChangeEmailView = () => { return (
{translate('changeEmail')} @@ -91,7 +52,7 @@ export const ChangeEmailView = ({ navigation }) => { ) } -export const GoogleAccountView = ({ navigation }) => { +export const GoogleAccountView = () => { return (
GoogleAccount @@ -99,7 +60,7 @@ export const GoogleAccountView = ({ navigation }) => { ) } -export const PianoSettingsView = ({ navigation }) => { +export const PianoSettingsView = () => { return (
Global settings for the virtual piano @@ -113,10 +74,6 @@ const SetttingsNavigator = () => { const userQuery = useQuery(['user'], () => API.getUserInfo()); const user = useMemo(() => userQuery.data, [userQuery]); - if (userQuery.isError) { - user.isGuest = false; - } - if (userQuery.isLoading) { return (