feat: 🎸 WIP Switch school platform
This commit is contained in:
parent
1aaaeb64e3
commit
916ebc5e25
|
@ -7,36 +7,40 @@ import initHjarntorget from '@skolplattformen/api-hjarntorget'
|
||||||
import { ApiProvider } from '@skolplattformen/hooks'
|
import { ApiProvider } from '@skolplattformen/hooks'
|
||||||
import { ApplicationProvider, IconRegistry } from '@ui-kitten/components'
|
import { ApplicationProvider, IconRegistry } from '@ui-kitten/components'
|
||||||
import { EvaIconsPack } from '@ui-kitten/eva-icons'
|
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 { StatusBar, useColorScheme } from 'react-native'
|
||||||
import { SafeAreaProvider } from 'react-native-safe-area-context'
|
import { SafeAreaProvider } from 'react-native-safe-area-context'
|
||||||
import { AppNavigator } from './components/navigation.component'
|
import { AppNavigator } from './components/navigation.component'
|
||||||
import { LanguageProvider } from './context/language/languageContext'
|
import { LanguageProvider } from './context/language/languageContext'
|
||||||
import {
|
import { SchoolPlatformProvider } from './context/schoolPlatform/schoolPlatformContext'
|
||||||
SchoolPlatformProvider,
|
|
||||||
SchoolPlatformContext,
|
|
||||||
} from './context/schoolPlatform/schoolPlatformContext'
|
|
||||||
import { default as customMapping } from './design/mapping.json'
|
import { default as customMapping } from './design/mapping.json'
|
||||||
import { darkTheme, lightTheme } from './design/themes'
|
import { darkTheme, lightTheme } from './design/themes'
|
||||||
import useSettingsStorage from './hooks/useSettingsStorage'
|
import useSettingsStorage from './hooks/useSettingsStorage'
|
||||||
import { translations } from './utils/translation'
|
import { translations } from './utils/translation'
|
||||||
|
import { Reporter } from '@skolplattformen/hooks'
|
||||||
|
import { Api } from '@skolplattformen/api'
|
||||||
|
|
||||||
const apiSkolplattformen = initSkolplattformen(fetch, CookieManager)
|
const ApiList = new Map<string, Api>([
|
||||||
const apiHjarntorget = initHjarntorget(fetch, CookieManager)
|
// @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),
|
log: (message: string) => console.log(message),
|
||||||
error: (error, label) => console.error(label, error),
|
error: (error: Error, label?: string) => console.error(label, error),
|
||||||
}
|
}
|
||||||
: undefined
|
: undefined
|
||||||
|
|
||||||
if (__DEV__) {
|
if (__DEV__) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
const DevMenu = require('react-native-dev-menu')
|
const DevMenu = require('react-native-dev-menu')
|
||||||
DevMenu.addItem('Log AsyncStorage contents', () => logAsyncStorage())
|
DevMenu.addItem('Log AsyncStorage contents', () => logAsyncStorage())
|
||||||
}
|
}
|
||||||
|
|
||||||
const safeJsonParse = (maybeJson) => {
|
const safeJsonParse = (maybeJson: string) => {
|
||||||
if (maybeJson) {
|
if (maybeJson) {
|
||||||
try {
|
try {
|
||||||
return JSON.parse(maybeJson)
|
return JSON.parse(maybeJson)
|
||||||
|
@ -63,17 +67,18 @@ const logAsyncStorage = async () => {
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
const [usingSystemTheme] = useSettingsStorage('usingSystemTheme')
|
const [usingSystemTheme] = useSettingsStorage('usingSystemTheme')
|
||||||
|
const [currentSchoolPlatform] = useSettingsStorage('currentSchoolPlatform')
|
||||||
const [theme] = useSettingsStorage('theme')
|
const [theme] = useSettingsStorage('theme')
|
||||||
const systemTheme = useColorScheme()
|
const systemTheme = useColorScheme()
|
||||||
|
|
||||||
const colorScheme = usingSystemTheme ? systemTheme : theme
|
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 (
|
return (
|
||||||
<SchoolPlatformProvider>
|
<SchoolPlatformProvider>
|
||||||
<ApiProvider
|
<ApiProvider api={api} storage={AsyncStorage} reporter={reporter}>
|
||||||
api={apiSkolplattformen}
|
|
||||||
storage={AsyncStorage}
|
|
||||||
reporter={reporter}
|
|
||||||
>
|
|
||||||
<SafeAreaProvider>
|
<SafeAreaProvider>
|
||||||
<StatusBar
|
<StatusBar
|
||||||
backgroundColor={colorScheme === 'dark' ? '#2E3137' : '#FFF'}
|
backgroundColor={colorScheme === 'dark' ? '#2E3137' : '#FFF'}
|
||||||
|
@ -83,6 +88,7 @@ export default () => {
|
||||||
<IconRegistry icons={EvaIconsPack} />
|
<IconRegistry icons={EvaIconsPack} />
|
||||||
<ApplicationProvider
|
<ApplicationProvider
|
||||||
{...eva}
|
{...eva}
|
||||||
|
// @ts-expect-error Unknown error
|
||||||
customMapping={customMapping}
|
customMapping={customMapping}
|
||||||
theme={colorScheme === 'dark' ? darkTheme : lightTheme}
|
theme={colorScheme === 'dark' ? darkTheme : lightTheme}
|
||||||
>
|
>
|
|
@ -20,7 +20,7 @@ export const LanguageContext = React.createContext<LanguageContextProps>({
|
||||||
interface Props {
|
interface Props {
|
||||||
children: ReactNode
|
children: ReactNode
|
||||||
data: any
|
data: any
|
||||||
initialLanguageCode: string
|
initialLanguageCode?: string
|
||||||
cache: any
|
cache: any
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,12 +2,11 @@ import useSettingsStorage from '../../hooks/useSettingsStorage'
|
||||||
import React, { createContext } from 'react'
|
import React, { createContext } from 'react'
|
||||||
|
|
||||||
interface SchoolPlatformProps {
|
interface SchoolPlatformProps {
|
||||||
currentSchoolPlatform: string
|
currentSchoolPlatform?: string
|
||||||
changeSchoolPlatform: (platform: string) => void
|
changeSchoolPlatform: (platform: string) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultState: SchoolPlatformProps = {
|
const defaultState: SchoolPlatformProps = {
|
||||||
currentSchoolPlatform: 'stockholm-skolplattformen',
|
|
||||||
changeSchoolPlatform: (platform: string) =>
|
changeSchoolPlatform: (platform: string) =>
|
||||||
console.log('DEBUG ONLY: changing to', platform),
|
console.log('DEBUG ONLY: changing to', platform),
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
export * from './provider'
|
export * from './provider'
|
||||||
export * from './context'
|
export * from './context'
|
||||||
export * from './hooks'
|
export * from './hooks'
|
||||||
|
export * from './types'
|
||||||
|
|
|
@ -14,8 +14,8 @@ import {
|
||||||
import { Action, Reducer } from 'redux'
|
import { Action, Reducer } from 'redux'
|
||||||
|
|
||||||
export interface Reporter {
|
export interface Reporter {
|
||||||
log: (message: string) => void
|
log?: (message: string) => void
|
||||||
error: (error: Error, label?: string) => void
|
error?: (error: Error, label?: string) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IApiContext {
|
export interface IApiContext {
|
||||||
|
|
Loading…
Reference in New Issue