IKHSAN
ENID Baca dalam Bahasa Indonesia

opendesk

Public
Branch
main
Latest commit
08d9f3328 October 2026

utils.ts

Open raw
export const isDocDirty = (doc: any, originalDoc: any) => {
  if (!doc || !originalDoc) return false;
  return JSON.stringify(doc) !== JSON.stringify(originalDoc);
};

export const validateTwilio = (twilio, telephonyAgent, twilioErrors) => {
  if (telephonyAgent.default_medium === "Twilio" && !twilio.enabled) {
    twilioErrors.value.default_medium =
      "Enable Twilio to set it as default medium";
  } else {
    twilioErrors.value.default_medium = "";
  }

  if (!twilio.enabled) {
    return;
  }

  if (!twilio.account_sid) {
    twilioErrors.value.accountSid = "Account SID is required";
  } else {
    twilioErrors.value.accountSid = "";
  }

  if (!twilio.auth_token) {
    twilioErrors.value.authToken = "Auth Token is required";
  } else {
    twilioErrors.value.authToken = "";
  }

  if (!telephonyAgent.twilio_number) {
    twilioErrors.value.number = "Number is required";
  } else if (!validatePhone(telephonyAgent.twilio_number)) {
    twilioErrors.value.number = "Please enter a valid phone number";
  } else {
    twilioErrors.value.number = "";
  }
};

export const validateExotel = (exotel, telephonyAgent, exotelErrors) => {
  if (telephonyAgent.default_medium === "Exotel" && !exotel.enabled) {
    exotelErrors.value.default_medium =
      "Enable Exotel to set it as default medium";
  } else {
    exotelErrors.value.default_medium = "";
  }

  if (!exotel.enabled) {
    return;
  }

  if (!exotel.account_sid) {
    exotelErrors.value.accountSid = "Account SID is required";
  } else {
    exotelErrors.value.accountSid = "";
  }

  if (!exotel.webhook_verify_token) {
    exotelErrors.value.webhookVerifyToken = "Webhook Verify Token is required";
  } else {
    exotelErrors.value.webhookVerifyToken = "";
  }

  if (!exotel.subdomain) {
    exotelErrors.value.subdomain = "Subdomain is required";
  } else {
    exotelErrors.value.subdomain = "";
  }

  if (!exotel.api_key) {
    exotelErrors.value.apiKey = "API Key is required";
  } else {
    exotelErrors.value.apiKey = "";
  }

  if (!exotel.api_token) {
    exotelErrors.value.apiToken = "API Token is required";
  } else {
    exotelErrors.value.apiToken = "";
  }

  if (!telephonyAgent.exotel_number) {
    exotelErrors.value.number = "Number is required";
  } else if (!validatePhone(telephonyAgent.exotel_number)) {
    exotelErrors.value.number = "Please enter a valid phone number";
  } else {
    exotelErrors.value.number = "";
  }

  if (!telephonyAgent.mobile_no) {
    exotelErrors.value.mobileNo = "Personal number is required";
  } else if (!validatePhone(telephonyAgent.mobile_no)) {
    exotelErrors.value.mobileNo = "Please enter a valid phone number";
  } else {
    exotelErrors.value.mobileNo = "";
  }
};

const validatePhone = (number: string) => {
  return /^\+?\d{8,15}$/.test(number);
};
bytes
2,804
lines
101
Type
ts
Latest commit
28 October 2026