mirror of
https://github.com/C9Glax/tranga-website.git
synced 2025-04-19 14:53:20 +02:00
This commit is contained in:
parent
b0cbb416d6
commit
d358611133
@ -3,6 +3,7 @@ import {deleteData, getData, putData} from "../App";
|
|||||||
import IGotifyRecord from "./interfaces/records/IGotifyRecord";
|
import IGotifyRecord from "./interfaces/records/IGotifyRecord";
|
||||||
import INtfyRecord from "./interfaces/records/INtfyRecord";
|
import INtfyRecord from "./interfaces/records/INtfyRecord";
|
||||||
import ILunaseaRecord from "./interfaces/records/ILunaseaRecord";
|
import ILunaseaRecord from "./interfaces/records/ILunaseaRecord";
|
||||||
|
import IPushoverRecord from "./interfaces/records/IPushoverRecord";
|
||||||
|
|
||||||
export default class NotificationConnectorFunctions {
|
export default class NotificationConnectorFunctions {
|
||||||
|
|
||||||
@ -83,7 +84,7 @@ export default class NotificationConnectorFunctions {
|
|||||||
|
|
||||||
static async CreateLunasea(apiUri: string, lunasea: ILunaseaRecord) : Promise<string> {
|
static async CreateLunasea(apiUri: string, lunasea: ILunaseaRecord) : Promise<string> {
|
||||||
if(lunasea === undefined || lunasea === null) {
|
if(lunasea === undefined || lunasea === null) {
|
||||||
console.error(`ntfy was not provided`);
|
console.error(`lunasea was not provided`);
|
||||||
return Promise.reject();
|
return Promise.reject();
|
||||||
}
|
}
|
||||||
//console.info("Getting Notification Connectors");
|
//console.info("Getting Notification Connectors");
|
||||||
@ -95,4 +96,19 @@ export default class NotificationConnectorFunctions {
|
|||||||
return (ret);
|
return (ret);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static async CreatePushover(apiUri: string, pushover: IPushoverRecord) : Promise<string> {
|
||||||
|
if(pushover === undefined || pushover === null) {
|
||||||
|
console.error(`pushover was not provided`);
|
||||||
|
return Promise.reject();
|
||||||
|
}
|
||||||
|
//console.info("Getting Notification Connectors");
|
||||||
|
return putData(`${apiUri}/v2/NotificationConnector/Pushover`, pushover)
|
||||||
|
.then((json) => {
|
||||||
|
//console.info("Got Notification Connectors");
|
||||||
|
const ret = json as unknown as string;
|
||||||
|
//console.debug(ret);
|
||||||
|
return (ret);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
@ -5,6 +5,7 @@ import NotificationConnectorFunctions from "../NotificationConnectorFunctions";
|
|||||||
import {LunaseaItem} from "./records/ILunaseaRecord";
|
import {LunaseaItem} from "./records/ILunaseaRecord";
|
||||||
import {GotifyItem} from "./records/IGotifyRecord";
|
import {GotifyItem} from "./records/IGotifyRecord";
|
||||||
import {NtfyItem} from "./records/INtfyRecord";
|
import {NtfyItem} from "./records/INtfyRecord";
|
||||||
|
import {PushoverItem} from "./records/IPushoverRecord";
|
||||||
|
|
||||||
export default interface INotificationConnector {
|
export default interface INotificationConnector {
|
||||||
name: string;
|
name: string;
|
||||||
@ -29,12 +30,14 @@ export function NotificationConnectorItem({apiUri, notificationConnector} : {api
|
|||||||
case "gotify": setSelectedConnectorElement(<GotifyItem apiUri={apiUri} />); break;
|
case "gotify": setSelectedConnectorElement(<GotifyItem apiUri={apiUri} />); break;
|
||||||
case "ntfy": setSelectedConnectorElement(<NtfyItem apiUri={apiUri} />); break;
|
case "ntfy": setSelectedConnectorElement(<NtfyItem apiUri={apiUri} />); break;
|
||||||
case "lunasea": setSelectedConnectorElement(<LunaseaItem 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="default">Generic REST</option>
|
||||||
<option value="gotify">Gotify</option>
|
<option value="gotify">Gotify</option>
|
||||||
<option value="ntfy">Ntfy</option>
|
<option value="ntfy">Ntfy</option>
|
||||||
<option value="lunasea">Lunasea</option>
|
<option value="lunasea">Lunasea</option>
|
||||||
|
<option value="pushover">Pushover</option>
|
||||||
</select>
|
</select>
|
||||||
{selectedConnectorElement}
|
{selectedConnectorElement}
|
||||||
</div>;
|
</div>;
|
||||||
|
43
Website/modules/interfaces/records/IPushoverRecord.tsx
Normal file
43
Website/modules/interfaces/records/IPushoverRecord.tsx
Normal 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>;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user