diff --git a/apps/skolplattformen-sthlm/App.js b/apps/skolplattformen-sthlm/App.tsx similarity index 69% rename from apps/skolplattformen-sthlm/App.js rename to apps/skolplattformen-sthlm/App.tsx index faae0b0b8..f4d29cfe8 100644 --- a/apps/skolplattformen-sthlm/App.js +++ b/apps/skolplattformen-sthlm/App.tsx @@ -7,36 +7,40 @@ import initHjarntorget from '@skolplattformen/api-hjarntorget' import { ApiProvider } from '@skolplattformen/hooks' import { ApplicationProvider, IconRegistry } from '@ui-kitten/components' import { EvaIconsPack } from '@ui-kitten/eva-icons' -import React, { useContext } from 'react' +import React, { useEffect, useState } from 'react' import { StatusBar, useColorScheme } from 'react-native' import { SafeAreaProvider } from 'react-native-safe-area-context' import { AppNavigator } from './components/navigation.component' import { LanguageProvider } from './context/language/languageContext' -import { - SchoolPlatformProvider, - SchoolPlatformContext, -} from './context/schoolPlatform/schoolPlatformContext' +import { SchoolPlatformProvider } from './context/schoolPlatform/schoolPlatformContext' import { default as customMapping } from './design/mapping.json' import { darkTheme, lightTheme } from './design/themes' import useSettingsStorage from './hooks/useSettingsStorage' import { translations } from './utils/translation' +import { Reporter } from '@skolplattformen/hooks' +import { Api } from '@skolplattformen/api' -const apiSkolplattformen = initSkolplattformen(fetch, CookieManager) -const apiHjarntorget = initHjarntorget(fetch, CookieManager) +const ApiList = new Map([ + // @ts-expect-error Why is fetch failing here? + ['stockholm-skolplattformen', initSkolplattformen(fetch, CookieManager)], + // @ts-expect-error Why is fetch failing here? + ['goteborg-hjarntorget', initHjarntorget(fetch, CookieManager)], +]) -const reporter = __DEV__ +const reporter: Reporter | undefined = __DEV__ ? { - log: (message) => console.log(message), - error: (error, label) => console.error(label, error), + log: (message: string) => console.log(message), + error: (error: Error, label?: string) => console.error(label, error), } : undefined if (__DEV__) { + // eslint-disable-next-line @typescript-eslint/no-var-requires const DevMenu = require('react-native-dev-menu') DevMenu.addItem('Log AsyncStorage contents', () => logAsyncStorage()) } -const safeJsonParse = (maybeJson) => { +const safeJsonParse = (maybeJson: string) => { if (maybeJson) { try { return JSON.parse(maybeJson) @@ -63,17 +67,18 @@ const logAsyncStorage = async () => { export default () => { const [usingSystemTheme] = useSettingsStorage('usingSystemTheme') + const [currentSchoolPlatform] = useSettingsStorage('currentSchoolPlatform') const [theme] = useSettingsStorage('theme') const systemTheme = useColorScheme() - const colorScheme = usingSystemTheme ? systemTheme : theme + + //const api = ApiList.get(currentSchoolPlatform)! + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const api = ApiList.get('goteborg-hjarntorget')! + return ( - + { diff --git a/apps/skolplattformen-sthlm/context/language/languageContext.tsx b/apps/skolplattformen-sthlm/context/language/languageContext.tsx index 01c8b1a44..872324c91 100644 --- a/apps/skolplattformen-sthlm/context/language/languageContext.tsx +++ b/apps/skolplattformen-sthlm/context/language/languageContext.tsx @@ -20,7 +20,7 @@ export const LanguageContext = React.createContext({ interface Props { children: ReactNode data: any - initialLanguageCode: string + initialLanguageCode?: string cache: any } diff --git a/apps/skolplattformen-sthlm/context/schoolPlatform/schoolPlatformContext.tsx b/apps/skolplattformen-sthlm/context/schoolPlatform/schoolPlatformContext.tsx index e95b94938..e223ec414 100644 --- a/apps/skolplattformen-sthlm/context/schoolPlatform/schoolPlatformContext.tsx +++ b/apps/skolplattformen-sthlm/context/schoolPlatform/schoolPlatformContext.tsx @@ -2,12 +2,11 @@ import useSettingsStorage from '../../hooks/useSettingsStorage' import React, { createContext } from 'react' interface SchoolPlatformProps { - currentSchoolPlatform: string + currentSchoolPlatform?: string changeSchoolPlatform: (platform: string) => void } const defaultState: SchoolPlatformProps = { - currentSchoolPlatform: 'stockholm-skolplattformen', changeSchoolPlatform: (platform: string) => console.log('DEBUG ONLY: changing to', platform), } diff --git a/libs/hooks/src/index.ts b/libs/hooks/src/index.ts index 0e72095bb..10874f616 100644 --- a/libs/hooks/src/index.ts +++ b/libs/hooks/src/index.ts @@ -1,3 +1,4 @@ export * from './provider' export * from './context' export * from './hooks' +export * from './types' diff --git a/libs/hooks/src/types.ts b/libs/hooks/src/types.ts index 3e1f6e100..9d0cfef09 100644 --- a/libs/hooks/src/types.ts +++ b/libs/hooks/src/types.ts @@ -14,8 +14,8 @@ import { import { Action, Reducer } from 'redux' export interface Reporter { - log: (message: string) => void - error: (error: Error, label?: string) => void + log?: (message: string) => void + error?: (error: Error, label?: string) => void } export interface IApiContext {