ouahibelhanchi / Interpals Conversations Delete All Button

// ==UserScript==
// @name Interpals Conversations Delete All Button
// @description Provides a convenience button to delete all conversations.
// @version 1
// @author Ouahib El Hanchi
// @copyright 2019, Ouahib El Hanchi (https://www.ouahibelhanchi.me/)
// @license MIT
// @include /^https?://www\.interpals\.net/pm\.php.*$/
// @run-at document-end
// @require http://code.jquery.com/jquery-latest.js
// @grant none
// ==/UserScript==

// Helpers ====================================================================

function delete_thread(thread_id, should_block_user = false) {
  console.log("Deleting thread id: " + thread_id);

  $.ajax({
    type: "POST",
    url: "/pm.php",
    data: {
      action: "delete_thread",
      thread: thread_id,
      block_user: should_block_user
    },
    dataType: "json"
  }).done(function (data) {
    if (data.success) {
      $("#thread_" + thread_id).remove();
      console.log("Thread(" + thread_id + "): Deleted successfully.");
    }
    else {
      if (data.error) {
        console_log("Thread(" + thread_id + "): " + data.error);
      }
      else {
        console.log("Thread(" + thread_id + "): Delete failed.");
      }
    }
  }).fail(function (data) {
    console.log("Thread(" + thread_id + "): Delete failed.");
  });
}

// ----------------------------------------------------------------------------

function delete_threads(event) {
  if (!confirm("Delete all conversations?")) {
    return;
  }

  var threads = document.querySelectorAll(".pm_thread");

  if (!threads || !threads.length) {
    console.log("There are no conversations.");
    return false;
  }

  threads.forEach(function (element) {
    var thread_id = element.getAttribute("id").replace("thread_", "");
    delete_thread(thread_id);
  });
}

// Entry-point ================================================================

function main() {
  $("#controls").prepend(`
      <div style="border-left: 1px solid #ccc; float: right; line-height: 31px; padding: 0 5px;">
        <a id="delete-conversations" href="pm.php">
          <i class="fa fa-times fa-1"></i>
          Delete all conversations
        </a>
      </div>
    `);
  $("#delete-conversations").click(delete_threads);
}

// ----------------------------------------------------------------------------

main();

// END ========================================================================