feat: add app_json to application (#188)

* feat: add app_json to application

* fix: review comment

* fix: review comment

* fix: review comment

* textarea for initial json in applications form

* check/uncheck overide app_json will not erase app_json, update faile still have app_json

---------

Co-authored-by: Quan HL <quanluuhoang8@gmail.com>
Co-authored-by: Dave Horton <daveh@beachdognet.com>
This commit is contained in:
Hoan Luu Huu
2023-02-15 22:35:45 +07:00
committed by GitHub
parent 4a320b3c8c
commit b0808187bc
2 changed files with 43 additions and 0 deletions

View File

@@ -235,6 +235,7 @@ export interface Account {
export interface Application {
name: string;
app_json: null | string;
call_hook: null | WebHook;
account_sid: null | string;
messaging_hook: null | WebHook;

View File

@@ -63,6 +63,9 @@ export const ApplicationForm = ({ application }: ApplicationFormProps) => {
const [accounts] = useServiceProviderData<Account[]>("Accounts");
const [applications] = useApiData<Application[]>("Applications");
const [applicationName, setApplicationName] = useState("");
const [applicationJson, setApplicationJson] = useState("");
const [tmpApplicationJson, setTmpApplicationJson] = useState("");
const [initialApplicationJson, setInitialApplicationJson] = useState(false);
const [accountSid, setAccountSid] = useState("");
const [callWebhook, setCallWebhook] = useState<WebHook>(DEFAULT_WEBHOOK);
const [initialCallWebhook, setInitialCallWebhook] = useState(false);
@@ -145,6 +148,7 @@ export const ApplicationForm = ({ application }: ApplicationFormProps) => {
const payload = {
name: applicationName,
app_json: applicationJson || null,
call_hook: callWebhook || null,
account_sid: accountSid || null,
messaging_hook: messageWebhook || null,
@@ -185,6 +189,14 @@ export const ApplicationForm = ({ application }: ApplicationFormProps) => {
setLocation();
if (application && application.data) {
setApplicationName(application.data.name);
if (!applicationJson) {
setApplicationJson(application.data.app_json || "");
}
setTmpApplicationJson(applicationJson);
setInitialApplicationJson(
application.data.app_json != undefined &&
application.data.app_json.length !== 0
);
if (application.data.call_hook) {
setCallWebhook(application.data.call_hook);
@@ -521,6 +533,36 @@ export const ApplicationForm = ({ application }: ApplicationFormProps) => {
)}
</fieldset>
)}
{(import.meta.env.INITIAL_APP_JSON_ENABLED === undefined ||
import.meta.env.INITIAL_APP_JSON_ENABLED) && (
<fieldset>
<Checkzone
hidden
name="cz_pplication_json"
label="Override webhook for initial application"
initialCheck={initialApplicationJson}
handleChecked={(e) => {
if (e.target.checked && tmpApplicationJson) {
setApplicationJson(tmpApplicationJson);
}
if (!e.target.checked) {
setTmpApplicationJson(applicationJson);
setApplicationJson("");
}
}}
>
<textarea
id="input_application_json"
name="application_json"
rows={6}
cols={55}
placeholder="an array of jambonz verbs to execute"
value={applicationJson}
onChange={(e) => setApplicationJson(e.target.value)}
/>
</Checkzone>
</fieldset>
)}
{message && <fieldset>{<Message message={message} />}</fieldset>}
<fieldset>
<ButtonGroup left>