// ==SE_module==
// name: saved_replies
// displayName: Saved Replies
// description: A Script That Allows Users to Save and Send Custom Replies
// version: 1.5
// author: Suryadip Sarkar
// ==/SE_module==

(function () {
  'use strict';

  var im = require("interface-manager");
  var messaging = require("messaging");
  var config = require("config");

  var conversationId = null;
  var newReplyText = "";

  function displayMessage(message) {
    console.log(message);
    if (typeof shortToast === "function") {
      shortToast(message);
    } else {
      console.warn("shortToast is not available. Message:", message);
    }
  }

  function sendMessage(conversationId, message) {
    displayMessage("Attempting to send message: " + message);
    if (typeof messaging.sendChatMessage === "function") {
      messaging.sendChatMessage(conversationId, message, function (error) {
        if (error) {
          displayMessage("Error sending message: " + JSON.stringify(error));
        } else {
          displayMessage("Message sent successfully");
        }
      });
    } else {
      displayMessage("Error: messaging.sendChatMessage is not a function");
    }
  }

  function getSavedReplies() {
    return JSON.parse(config.get("savedReplies", "[]"));
  }

  function setSavedReplies(replies) {
    config.set("savedReplies", JSON.stringify(replies), true);
  }

  function addSavedReply(reply) {
    var replies = getSavedReplies();
    replies.push(reply);
    setSavedReplies(replies);
    displayMessage("Reply added: " + reply);
    updateUI();
  }

  function deleteSavedReply(index) {
    var replies = getSavedReplies();
    replies.splice(index, 1);
    setSavedReplies(replies);
    displayMessage("Reply deleted");
    updateUI();
  }

  function updateUI() {
    im.update("conversationToolbox");
  }

  function createConversationToolboxUI() {
    im.create("conversationToolbox", function (builder, args) {
      try {
        conversationId = args["conversationId"];

        builder.textInput("Enter a new reply to save", "", function (value) {
          newReplyText = value;
        }).singleLine(true);

        builder.button("  ➕ Add  ", function() {
          if (newReplyText && newReplyText.trim() !== "") {
            addSavedReply(newReplyText);
            newReplyText = "";
          } else {
            displayMessage("Please enter a reply");
          }
        });

        getSavedReplies().forEach(function(reply, index) {
          builder.text(reply);
          builder.row(function(rowBuilder) {
            rowBuilder.button("  ➡️ Send  ", function() {
              sendMessage(conversationId, reply);
            });
            rowBuilder.text("    ");
            rowBuilder.button("  🗑️ Delete  ", function() {
              deleteSavedReply(index);
            });
          });
        });
      } catch (error) {
        console.error("Error in createConversationToolboxUI: " + JSON.stringify(error));
      }
    });
  }

  function start() {
    createConversationToolboxUI();
  }

  start();
})();