aboutsummaryrefslogtreecommitdiff
path: root/src/components/mainWrapper.tsx
diff options
context:
space:
mode:
authorBobby <[email protected]>2022-11-30 23:16:07 -0500
committerBobby <[email protected]>2022-11-30 23:16:07 -0500
commitdaaa789068cebb5fdfcea6197ade6e663be46e0f (patch)
tree1cd315851b779ac28fe622da332c3c16fe1c433c /src/components/mainWrapper.tsx
downloadtcssocialify-daaa789068cebb5fdfcea6197ade6e663be46e0f.tar.xz
tcssocialify-daaa789068cebb5fdfcea6197ade6e663be46e0f.zip
socialify update
Diffstat (limited to 'src/components/mainWrapper.tsx')
-rw-r--r--src/components/mainWrapper.tsx51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/components/mainWrapper.tsx b/src/components/mainWrapper.tsx
new file mode 100644
index 0000000..41a2f6d
--- /dev/null
+++ b/src/components/mainWrapper.tsx
@@ -0,0 +1,51 @@
+import React, { useEffect, useState } from 'react'
+import { useRouter } from 'next/router'
+
+import ConfigType from '../../common/types/configType'
+import { RepoQueryResponse } from '../../common/github/repoQuery'
+import ConfigContext from '../contexts/ConfigContext'
+import { DEFAULT_CONFIG } from '../../common/configHelper'
+
+import Config from './configuration/config'
+import Preview from './preview/preview'
+import toast from './toaster'
+
+type MainWrapperProps = {
+ response: RepoQueryResponse
+}
+
+const MainWrapper = ({ response }: MainWrapperProps) => {
+ const router = useRouter()
+ const [config, setConfig] = useState<ConfigType>(DEFAULT_CONFIG)
+
+ const setConfigHelper = (config: ConfigType) => {
+ setConfig(config)
+ }
+
+ useEffect(() => {
+ if (!response || !response.repository) {
+ router.push('/')
+ toast.error('Please enter a valid GitHub repository.')
+ }
+ }, [response, router])
+
+ if (response && response.repository) {
+ const { repository } = response
+
+ return (
+ <ConfigContext.Provider value={{ config, setConfig: setConfigHelper }}>
+ <div className="flex flex-col lg:flex-row w-full justify-center items-center lg:justify-evenly">
+ <div className="hero w-fit">
+ <Preview />
+ </div>
+ <div className="hero w-fit">
+ <Config repository={repository} />
+ </div>
+ </div>
+ </ConfigContext.Provider>
+ )
+ } else {
+ return null
+ }
+}
+export default MainWrapper