2025-03-29 21:00:33 +01:00
parent b0cbb416d6
commit d358611133
3 changed files with 63 additions and 1 deletions

View File

@ -5,6 +5,7 @@ import NotificationConnectorFunctions from "../NotificationConnectorFunctions";
import {LunaseaItem} from "./records/ILunaseaRecord";
import {GotifyItem} from "./records/IGotifyRecord";
import {NtfyItem} from "./records/INtfyRecord";
import {PushoverItem} from "./records/IPushoverRecord";
export default interface INotificationConnector {
name: string;
@ -29,12 +30,14 @@ export function NotificationConnectorItem({apiUri, notificationConnector} : {api
case "gotify": setSelectedConnectorElement(<GotifyItem apiUri={apiUri} />); break;
case "ntfy": setSelectedConnectorElement(<NtfyItem apiUri={apiUri} />); break;
case "lunasea": setSelectedConnectorElement(<LunaseaItem apiUri={apiUri} />); break;
case "pushover": setSelectedConnectorElement(<PushoverItem apiUri={apiUri} />); break;
}
}}>
<option value="default">Generic REST</option>
<option value="gotify">Gotify</option>
<option value="ntfy">Ntfy</option>
<option value="lunasea">Lunasea</option>
<option value="pushover">Pushover</option>
</select>
{selectedConnectorElement}
</div>;

View File

@ -0,0 +1,43 @@
import {ReactElement, useState} from "react";
import NotificationConnectorFunctions from "../../NotificationConnectorFunctions";
import Loader from "../../Loader";
import "../../../styles/notificationConnector.css";
import {isValidUri} from "../../../App";
export default interface IPushoverRecord {
apptoken: string;
user: string;
}
function Validate(record: IPushoverRecord) : boolean {
if(record.apptoken.length < 1)
return false;
if(record.user.length < 1)
return false;
return true;
}
export function PushoverItem ({apiUri} : {apiUri: string}) : ReactElement{
const [info, setInfo] = useState<IPushoverRecord>({
apptoken: "",
user: ""
});
const [loading, setLoading] = useState(false);
return <div className="NotificationConnectorItem">
<input className="NotificationConnectorItem-Name" value="Pushover" disabled={true} />
<div className="NotificationConnectorItem-Ident">
<input type="text" className="NotificationConnectorItem-Apptoken" placeholder="Apptoken" onChange={(e) => setInfo({...info, apptoken: e.currentTarget.value})} />
<input type="text" className="NotificationConnectorItem-User" placeholder="User" onChange={(e) => setInfo({...info, user: e.currentTarget.value})} />
</div>
<>
<button className="NotificationConnectorItem-Save" onClick={(e) => {
if(info === null || Validate(info) === false)
return;
setLoading(true);
NotificationConnectorFunctions.CreatePushover(apiUri, info)
.finally(() => setLoading(false));
}}>Add</button>
<Loader loading={loading} style={{width:"40px",height:"40px",margin:"25vh calc(sin(70)*(50% - 40px))"}}/>
</>
</div>;
}