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

Merge pull request #24253 from overleaf/jdt-move-wf-instance-to-context

moving WF to editor context in anticipation for calling functionality…

GitOrigin-RevId: 368554e9308fe8e9e7ef42a4abd78690ec834520
Jimmy Domagala-Tang 1 год назад
Родитель
Сommit
5ba43eb56c

+ 10 - 0
services/web/frontend/js/shared/context/editor-context.tsx

@@ -19,6 +19,7 @@ import { useUserContext } from './user-context'
 import { saveProjectSettings } from '@/features/editor-left-menu/utils/api'
 import { saveProjectSettings } from '@/features/editor-left-menu/utils/api'
 import { PermissionsLevel } from '@/features/ide-react/types/permissions'
 import { PermissionsLevel } from '@/features/ide-react/types/permissions'
 import { useModalsContext } from '@/features/ide-react/context/modals-context'
 import { useModalsContext } from '@/features/ide-react/context/modals-context'
+import { WritefullAPI } from './types/writefull-instance'
 
 
 export const EditorContext = createContext<
 export const EditorContext = createContext<
   | {
   | {
@@ -54,6 +55,8 @@ export const EditorContext = createContext<
       setHasPremiumSuggestion: (value: boolean) => void
       setHasPremiumSuggestion: (value: boolean) => void
       setPremiumSuggestionResetDate: (date: Date) => void
       setPremiumSuggestionResetDate: (date: Date) => void
       premiumSuggestionResetDate: Date
       premiumSuggestionResetDate: Date
+      writefullInstance: WritefullAPI | null
+      setWritefullInstance: (instance: WritefullAPI) => void
     }
     }
   | undefined
   | undefined
 >(undefined)
 >(undefined)
@@ -182,6 +185,9 @@ export const EditorProvider: FC = ({ children }) => {
     )
     )
   }, [])
   }, [])
 
 
+  const [writefullInstance, setWritefullInstance] =
+    useState<WritefullAPI | null>(null)
+
   const value = useMemo(
   const value = useMemo(
     () => ({
     () => ({
       cobranding,
       cobranding,
@@ -206,6 +212,8 @@ export const EditorProvider: FC = ({ children }) => {
       setPremiumSuggestionResetDate,
       setPremiumSuggestionResetDate,
       assistantUpgraded,
       assistantUpgraded,
       setAssistantUpgraded,
       setAssistantUpgraded,
+      writefullInstance,
+      setWritefullInstance,
     }),
     }),
     [
     [
       cobranding,
       cobranding,
@@ -231,6 +239,8 @@ export const EditorProvider: FC = ({ children }) => {
       setPremiumSuggestionResetDate,
       setPremiumSuggestionResetDate,
       assistantUpgraded,
       assistantUpgraded,
       setAssistantUpgraded,
       setAssistantUpgraded,
+      writefullInstance,
+      setWritefullInstance,
     ]
     ]
   )
   )
 
 

+ 21 - 0
services/web/frontend/js/shared/context/types/writefull-instance.ts

@@ -0,0 +1,21 @@
+export interface WritefullEvents {
+  'writefull-login-complete': {
+    method: 'email-password' | 'login-with-overleaf'
+  }
+  'writefull-received-suggestions': { numberOfSuggestions: number }
+  'writefull-register-as-auto-account': { email: string }
+}
+
+export interface WritefullAPI {
+  init({
+    hasAgreedToTOS,
+    overleafUserId,
+  }: {
+    hasAgreedToTOS: boolean
+    overleafUserId: string
+  }): Promise<void>
+  addEventListener<eventName extends keyof WritefullEvents>(
+    name: eventName,
+    callback: (detail: WritefullEvents[eventName]) => void
+  ): void
+}