mirror of
https://github.com/C9Glax/tranga-website.git
synced 2025-04-19 14:53:20 +02:00
32 lines
1.5 KiB
TypeScript
32 lines
1.5 KiB
TypeScript
import {ReactElement, useState} from "react";
|
|
import NotificationConnector from "../api/NotificationConnector";
|
|
import Loader from "../Loader";
|
|
import ILunaseaRecord from "../types/records/ILunaseaRecord";
|
|
|
|
export function LunaseaItem ({apiUri} : {apiUri: string}) : ReactElement{
|
|
const [record, setRecord] = useState<ILunaseaRecord>({
|
|
id: ""
|
|
});
|
|
const [loading, setLoading] = useState(false);
|
|
return <div className="NotificationConnectorItem">
|
|
<input className="NotificationConnectorItem-Name" value="LunaSea" disabled={true} />
|
|
<div className="NotificationConnectorItem-Url">
|
|
<input type="text" className="NotificationConnectorItem-RequestUrl" placeholder="device/:device_id or user/:user_id" onChange={(e) => setRecord({...record, id: e.currentTarget.value})} />
|
|
</div>
|
|
<>
|
|
<button className="NotificationConnectorItem-Save" onClick={(e) => {
|
|
if(record === null || Validate(record) === false)
|
|
return;
|
|
setLoading(true);
|
|
NotificationConnector.CreateLunasea(apiUri, record)
|
|
.finally(() => setLoading(false));
|
|
}}>Add</button>
|
|
<Loader loading={loading} style={{width:"40px",height:"40px",margin:"25vh calc(sin(70)*(50% - 40px))"}}/>
|
|
</>
|
|
</div>;
|
|
}
|
|
|
|
const regex = new RegExp("(?:device|user)\/[0-9a-zA-Z\-]+");
|
|
function Validate(record: ILunaseaRecord) : boolean {
|
|
return regex.test(record.id);
|
|
} |