diff --git a/tranga-website/src/Components/Settings/NotificationConnectors.tsx b/tranga-website/src/Components/Settings/NotificationConnectors.tsx new file mode 100644 index 0000000..90263fa --- /dev/null +++ b/tranga-website/src/Components/Settings/NotificationConnectors.tsx @@ -0,0 +1,78 @@ +import {ReactNode, useContext, useState} from "react"; +import { ApiContext } from "../../apiClient/ApiContext"; +import {Button, Input, Modal, ModalDialog, Tab, TabList, TabPanel, Tabs} from "@mui/joy"; +import ModalClose from "@mui/joy/ModalClose"; +import {GotifyRecord, NtfyRecord, PushoverRecord} from "../../apiClient/data-contracts.ts"; + +export default function ({open, setOpen} : {open: boolean, setOpen: (open: boolean) => void}) { + + return ( + setOpen(false)}> + + + + + Gotify + Ntfy + Pushover + + + + + + + + ); +} + +function NotificationConnectorTab({ value, children, add }: { value: string, children: ReactNode, add: (data: any) => void }) { + return ( + + {children} + + + ); +} + +function Gotify() { + const Api = useContext(ApiContext); + const [gotifyData, setGotifyData] = useState({}); + + return ( + Api.notificationConnectorGotifyUpdate(gotifyData)}> + setGotifyData({...gotifyData, name: e.target.value})} /> + setGotifyData({...gotifyData, endpoint: e.target.value})} /> + setGotifyData({...gotifyData, appToken: e.target.value})} /> + setGotifyData({...gotifyData, priority: e.target.valueAsNumber})} /> + + ); +} + +function Ntfy() { + const Api = useContext(ApiContext); + const [ntfyData, setNtfyData] = useState({}); + + return ( + Api.notificationConnectorNtfyUpdate(ntfyData)}> + setNtfyData({...ntfyData, name: e.target.value})} /> + setNtfyData({...ntfyData, endpoint: e.target.value})} /> + setNtfyData({...ntfyData, topic: e.target.value})} /> + setNtfyData({...ntfyData, username: e.target.value})} /> + setNtfyData({...ntfyData, password: e.target.value})} /> + setNtfyData({...ntfyData, priority: e.target.valueAsNumber})} /> + + ); +} + +function Pushover() { + const Api = useContext(ApiContext); + const [pushoverData, setPushoverData] = useState({}); + + return ( + Api.notificationConnectorPushoverUpdate(pushoverData)}> + setPushoverData({...pushoverData, name: e.target.value})} /> + setPushoverData({...pushoverData, user: e.target.value})} /> + setPushoverData({...pushoverData, appToken: e.target.value})} /> + + ); +} \ No newline at end of file diff --git a/tranga-website/src/Components/Settings/Settings.tsx b/tranga-website/src/Components/Settings/Settings.tsx index 11a12a0..fb9cddb 100644 --- a/tranga-website/src/Components/Settings/Settings.tsx +++ b/tranga-website/src/Components/Settings/Settings.tsx @@ -15,6 +15,7 @@ import {createContext, Dispatch, useContext, useEffect, useState} from "react"; import {Article} from '@mui/icons-material'; import {TrangaSettings} from "../../apiClient/data-contracts.ts"; import {ApiContext} from "../../apiClient/ApiContext.tsx"; +import NotificationConnectors from "./NotificationConnectors.tsx"; export const SettingsContext = createContext({}); @@ -26,7 +27,6 @@ export default function Settings({setApiUri} : {setApiUri: Dispatch("neutral"); const timerRef = React.useRef>(undefined); - const [apiUriAccordionOpen, setApiUriAccordionOpen] = React.useState(true); useEffect(() => { @@ -44,6 +44,8 @@ export default function Settings({setApiUri} : {setApiUri: Dispatch @@ -63,6 +65,10 @@ export default function Settings({setApiUri} : {setApiUri: Dispatch + + + +
Swagger Doc