Просмотр исходного кода

Add types to IdeContext (#8107)

GitOrigin-RevId: 6b1df81ce588558adab0c31c0f65e68e5b0c25bf
Alf Eaton 4 лет назад
Родитель
Сommit
4ca3f9cabf

+ 0 - 33
services/web/frontend/js/shared/context/ide-context.js

@@ -1,33 +0,0 @@
-import { createContext, useContext, useState } from 'react'
-import PropTypes from 'prop-types'
-import { getMockIde } from './mock/mock-ide'
-
-const IdeContext = createContext()
-
-IdeContext.Provider.propTypes = {
-  value: PropTypes.shape({
-    $scope: PropTypes.object.isRequired,
-  }),
-}
-
-export function useIdeContext() {
-  const context = useContext(IdeContext)
-
-  if (!context) {
-    throw new Error('useIdeContext is only available inside IdeProvider')
-  }
-
-  return context
-}
-
-export function IdeProvider({ ide, children }) {
-  const [value] = useState(() => ide || getMockIde())
-
-  return <IdeContext.Provider value={value}>{children}</IdeContext.Provider>
-}
-IdeProvider.propTypes = {
-  children: PropTypes.any.isRequired,
-  ide: PropTypes.shape({
-    $scope: PropTypes.object.isRequired,
-  }),
-}

+ 25 - 0
services/web/frontend/js/shared/context/ide-context.tsx

@@ -0,0 +1,25 @@
+import { createContext, FC, useContext, useState } from 'react'
+import { getMockIde } from './mock/mock-ide'
+
+type Ide = {
+  [key: string]: any // TODO: define the rest of the `ide` and `$scope` properties
+  $scope: Record<string, any>
+}
+
+const IdeContext = createContext<Ide | null>(null)
+
+export const IdeProvider: FC<{ ide: Ide }> = ({ ide, children }) => {
+  const [value] = useState(() => ide || getMockIde())
+
+  return <IdeContext.Provider value={value}>{children}</IdeContext.Provider>
+}
+
+export function useIdeContext(): Ide {
+  const context = useContext(IdeContext)
+
+  if (!context) {
+    throw new Error('useIdeContext is only available inside IdeProvider')
+  }
+
+  return context
+}