@@ -2,6 +2,7 @@ import { Flex, InstUISettingsProvider, canvas } from "@instructure/ui";
22import type { FC } from "react" ;
33import { useEffect , useMemo , useState } from "react" ;
44import { Card , CardOverlay , Loading } from "./components" ;
5+ import type { Theme } from "@instructure/ui" ;
56import {
67 getBrandConfig ,
78 getColor ,
@@ -11,14 +12,19 @@ import {
1112} from "./utils" ;
1213import "./App.css" ;
1314
15+ type ThemeOrOverride = Theme | Record < string , unknown > ;
16+
1417const App : FC = ( ) => {
1518 const [ overlayOpen , setOverlayOpen ] = useState ( false ) ;
16- const [ selectedEntry , setSelectedEntry ] = useState < PendoAPIFeature | null > (
19+ const [ selectedEntry , setSelectedEntry ] = useState <
20+ PendoAPIFeature | undefined
21+ > ( undefined ) ;
22+ const [ brandConfig , setBrandConfig ] = useState < ThemeOrOverride > ( ) ;
23+ const [ roadmap , setRoadmap ] = useState < RoadmapFeatures | undefined > (
1724 undefined ,
1825 ) ;
19- const [ brandConfig , setBrandConfig ] = useState < unknown > ( { } ) ;
20- const [ roadmap , setRoadmap ] = useState < RoadmapFeatures | null > ( undefined ) ;
2126 const [ isDark , setIsDark ] = useState ( false ) ;
27+ const [ showLoading , setShowLoading ] = useState ( false ) ;
2228
2329 useEffect ( ( ) => {
2430 const mediaQuery = window . matchMedia ( "(prefers-color-scheme: dark)" ) ;
@@ -31,13 +37,13 @@ const App: FC = () => {
3137 } , [ ] ) ;
3238
3339 useEffect ( ( ) => {
34- getRoadmap ( ) . then ( ( data ) => {
35- setRoadmap ( data ) ;
40+ void getRoadmap ( ) . then ( ( data ) => {
41+ setRoadmap ( data ?? undefined ) ;
3642 } ) ;
3743 } , [ ] ) ;
3844
3945 useEffect ( ( ) => {
40- getBrandConfig ( ) . then ( ( config ) => {
46+ void getBrandConfig ( ) . then ( ( config ) => {
4147 setBrandConfig ( config ) ;
4248 } ) ;
4349 } , [ ] ) ;
@@ -72,10 +78,9 @@ const App: FC = () => {
7278 } ) ) ;
7379 } , [ roadmap ] ) ;
7480
75- // Debounce loading state
76- const [ showLoading , setShowLoading ] = useState ( false ) ;
7781 useEffect ( ( ) => {
7882 if ( ! roadmap ) {
83+ setShowLoading ( false ) ;
7984 const timeout = setTimeout ( ( ) => setShowLoading ( true ) , 1000 ) ;
8085 return ( ) => clearTimeout ( timeout ) ;
8186 } else {
@@ -87,7 +92,7 @@ const App: FC = () => {
8792 < InstUISettingsProvider
8893 theme = { {
8994 ...canvas ,
90- ...( brandConfig as object ) ,
95+ ...brandConfig ,
9196 typography : {
9297 ...canvas . typography ,
9398 fontFamily : "Atkinson Hyperlegible Next, sans-serif" ,
@@ -121,9 +126,9 @@ const App: FC = () => {
121126 />
122127 ) }
123128 </ >
124- ) : showLoading ? (
129+ ) : ( showLoading ? (
125130 < Loading isDark = { isDark } />
126- ) : null }
131+ ) : null ) }
127132 </ InstUISettingsProvider >
128133 ) ;
129134} ;
0 commit comments