import { post } from '@rails/request.js';
import { showNotification, showErrorNotification } from 'utilities/notifications';
import I18n from 'retrospring/i18n';

export function createListHandler(event: Event): void {
  const button = event.target as HTMLButtonElement;
  const input = document.querySelector<HTMLInputElement>('input#new-list-name');

  post('/ajax/create_list', {
    body: {
      name: input.value,
      user: button.dataset.user
    },
    contentType: 'application/json'
  })
    .then(async response => {
      const data = await response.json;

      if (data.success) {
        document.querySelector('#lists-list ul.list-group').insertAdjacentHTML('beforeend', data.render);
      }
      
      showNotification(data.message, data.success);
    })
    .catch(err => {
      console.log(err);
      showErrorNotification(I18n.translate('frontend.error.message'));
    });
}

export function createListInputHandler(event: KeyboardEvent): void {
  // Return key
  if (event.which === 13) {
    event.preventDefault();
    document.querySelector<HTMLButtonElement>('button#create-list').click();
  }
}
import Rails from '@rails/ujs';
import { showNotification, showErrorNotification } from 'utilities/notifications';
import I18n from 'retrospring/i18n';

export function createListHandler(event: Event): void {
  const button = event.target as HTMLButtonElement;
  const input = document.querySelector<HTMLInputElement>('input#new-list-name');

  Rails.ajax({
    url: '/ajax/create_list',
    type: 'POST',
    data: new URLSearchParams({
      name: input.value,
      user: button.dataset.user
    }).toString(),
    success: (data) => {
      if (data.success) {
        document.querySelector('#lists-list ul.list-group').insertAdjacentHTML('beforeend', data.render);
      }
      
      showNotification(data.message, data.success);
    },
    error: (data, status, xhr) => {
      console.log(data, status, xhr);
      showErrorNotification(I18n.translate('frontend.error.message'));
    }
  });
}

export function createListInputHandler(event: KeyboardEvent): void {
  // Return key
  if (event.which === 13) {
    event.preventDefault();
    document.querySelector<HTMLButtonElement>('button#create-list').click();
  }
}
--- 
+++ 
@@ -1,4 +1,4 @@
-import Rails from '@rails/ujs';
+import { post } from '@rails/request.js';
 import { showNotification, showErrorNotification } from 'utilities/notifications';
 import I18n from 'retrospring/i18n';
 
@@ -6,25 +6,26 @@
   const button = event.target as HTMLButtonElement;
   const input = document.querySelector<HTMLInputElement>('input#new-list-name');
 
-  Rails.ajax({
-    url: '/ajax/create_list',
-    type: 'POST',
-    data: new URLSearchParams({
+  post('/ajax/create_list', {
+    body: {
       name: input.value,
       user: button.dataset.user
-    }).toString(),
-    success: (data) => {
+    },
+    contentType: 'application/json'
+  })
+    .then(async response => {
+      const data = await response.json;
+
       if (data.success) {
         document.querySelector('#lists-list ul.list-group').insertAdjacentHTML('beforeend', data.render);
       }
       
       showNotification(data.message, data.success);
-    },
-    error: (data, status, xhr) => {
-      console.log(data, status, xhr);
+    })
+    .catch(err => {
+      console.log(err);
       showErrorNotification(I18n.translate('frontend.error.message'));
-    }
-  });
+    });
 }
 
 export function createListInputHandler(event: KeyboardEvent): void {
Refactor list creation to use request.js
