repositories
loading repo index
repositories
loading repo index
repository
loading code, commits, and activity
public Clawd ADK gateway launch mirror
stars
latest
clone command
git clone gitlawb://did:key:z6Mkq5mY...iFZ5/my-project-publ...git clone gitlawb://did:key:z6Mkq5mY.../my-project-publ...2fa351d6docs: add automaton and perps launch sources16d ago| #1 | /* eslint-disable @typescript-eslint/no-explicit-any */ |
| #2 | import { createContext } from 'react'; |
| #3 | import { Message, Memory, FileInfo } from '@/types'; |
| #4 | import { useAuth } from '@/hooks/useAuth'; |
| #5 | import { useChat } from '@/hooks/useChat'; |
| #6 | import { useFileHandler } from '@/hooks/useFileHandler'; |
| #7 | import { Provider } from '@/constants/messages'; |
| #8 | |
| #9 | interface GlobalContextType { |
| #10 | selectedUser: string; |
| #11 | selectUserHandler: (user: string) => void; |
| #12 | clearUserHandler: () => void; |
| #13 | messages: Message[]; |
| #14 | memories: Memory[]; |
| #15 | handleSend: (content: string) => Promise<void>; |
| #16 | thinking: boolean; |
| #17 | selectedMem0Key: string; |
| #18 | selectedOpenAIKey: string; |
| #19 | selectedProvider: Provider; |
| #20 | selectorHandler: (mem0: string, openai: string, provider: Provider) => void; |
| #21 | clearConfiguration: () => void; |
| #22 | selectedFile: FileInfo | null; |
| #23 | setSelectedFile: (file: FileInfo | null) => void; |
| #24 | file: File | null; |
| #25 | setFile: (file: File | null) => void; |
| #26 | } |
| #27 | |
| #28 | const GlobalContext = createContext<GlobalContextType>({} as GlobalContextType); |
| #29 | |
| #30 | const GlobalState = (props: { children: React.ReactNode }) => { |
| #31 | const { |
| #32 | mem0ApiKey: selectedMem0Key, |
| #33 | openaiApiKey: selectedOpenAIKey, |
| #34 | provider: selectedProvider, |
| #35 | user: selectedUser, |
| #36 | setAuth: selectorHandler, |
| #37 | setUser: selectUserHandler, |
| #38 | clearAuth: clearConfiguration, |
| #39 | clearUser: clearUserHandler, |
| #40 | } = useAuth(); |
| #41 | |
| #42 | const { |
| #43 | selectedFile, |
| #44 | file, |
| #45 | fileData, |
| #46 | setSelectedFile, |
| #47 | handleFile, |
| #48 | clearFile, |
| #49 | } = useFileHandler(); |
| #50 | |
| #51 | const { |
| #52 | messages, |
| #53 | memories, |
| #54 | thinking, |
| #55 | sendMessage, |
| #56 | } = useChat({ |
| #57 | user: selectedUser, |
| #58 | mem0ApiKey: selectedMem0Key, |
| #59 | openaiApiKey: selectedOpenAIKey, |
| #60 | provider: selectedProvider, |
| #61 | }); |
| #62 | |
| #63 | const handleSend = async (content: string) => { |
| #64 | if (file) { |
| #65 | await sendMessage(content, { |
| #66 | type: file.type, |
| #67 | data: fileData!, |
| #68 | }); |
| #69 | clearFile(); |
| #70 | } else { |
| #71 | await sendMessage(content); |
| #72 | } |
| #73 | }; |
| #74 | |
| #75 | const setFile = async (newFile: File | null) => { |
| #76 | if (newFile) { |
| #77 | await handleFile(newFile); |
| #78 | } else { |
| #79 | clearFile(); |
| #80 | } |
| #81 | }; |
| #82 | |
| #83 | return ( |
| #84 | <GlobalContext.Provider |
| #85 | value={{ |
| #86 | selectedUser, |
| #87 | selectUserHandler, |
| #88 | clearUserHandler, |
| #89 | messages, |
| #90 | memories, |
| #91 | handleSend, |
| #92 | thinking, |
| #93 | selectedMem0Key, |
| #94 | selectedOpenAIKey, |
| #95 | selectedProvider, |
| #96 | selectorHandler, |
| #97 | clearConfiguration, |
| #98 | selectedFile, |
| #99 | setSelectedFile, |
| #100 | file, |
| #101 | setFile, |
| #102 | }} |
| #103 | > |
| #104 | {props.children} |
| #105 | </GlobalContext.Provider> |
| #106 | ); |
| #107 | }; |
| #108 | |
| #109 | export default GlobalContext; |
| #110 | export { GlobalState }; |