No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 

87 líneas
2.3 KiB

  1. import {createMessenger, loadWidgetConfig} from '@userlike/messenger';
  2. $(document).ready(function () {
  3. const userlikeCustomButtonSelector = document.querySelector(".userlike-custom-button");
  4. const widgetConfig = loadWidgetConfig(ihk.settings.userlikeWidgetKey);
  5. let api;
  6. // Get the config and check if the button should be shown
  7. widgetConfig.then((config) => {
  8. if (!config.hide_button) {
  9. if (userlikeCustomButtonSelector) {
  10. if (!userlikeCustomButtonSelector.classList.contains("initialized")) {
  11. userlikeCustomButtonSelector.addEventListener("click", userlikeInitClickHandler);
  12. }
  13. } else {
  14. createUserlikeMessenger();
  15. }
  16. }
  17. }).catch((error) => {
  18. console.log(error);
  19. });
  20. function userlikeInitClickHandler() {
  21. createUserlikeMessenger();
  22. userlikeCustomButtonSelector.classList.add("initialized");
  23. userlikeCustomButtonSelector.removeEventListener("click", userlikeInitClickHandler);
  24. }
  25. function createUserlikeMessenger() {
  26. const result = createMessenger({
  27. version: 1,
  28. widgetKey: ihk.settings.userlikeWidgetKey,
  29. });
  30. result.then((result) => {
  31. if (result.kind === "error") throw new Error(result.error);
  32. api = result.value.api;
  33. api.mount().then(() => {
  34. requestAnimationFrame(() => {
  35. if (ihk.settings.useOriginalChattoolButton) {
  36. // Show userlike original button
  37. api.setVisibility({
  38. main: true,
  39. button: true,
  40. notifications: true,
  41. });
  42. } else {
  43. // Show gfi button and listen to the click
  44. api.setVisibility({
  45. main: true,
  46. button: false,
  47. notifications: true,
  48. }).then(() => {
  49. setTimeout(() => {
  50. api.maximize();
  51. }, 1000);
  52. });
  53. userlikeCustomButtonSelector.addEventListener("click", () => {
  54. api.maximize();
  55. });
  56. }
  57. });
  58. }
  59. );
  60. // React to changes, for example mum of nottifications
  61. // api.state$.subscribe({
  62. // next: (state) => console.log("next", state),
  63. // complete: () => console.log("complete"),
  64. // });
  65. }).catch((error) => {
  66. console.log(error);
  67. });
  68. }
  69. });