message_admin - Properly cleanup the `onPreview` listener
authorTim Otten <totten@civicrm.org>
Fri, 8 Oct 2021 21:54:46 +0000 (14:54 -0700)
committerTim Otten <totten@civicrm.org>
Fri, 8 Oct 2021 22:06:48 +0000 (15:06 -0700)
commitf6186329c190bc8c60fad61bb6850ae025ab2687
tree40015d5c4ff84972a4d97a8b53395a570d185db0
parent617345f83bce9370922ea3cdc7c16034b62949fa
message_admin - Properly cleanup the `onPreview` listener

Use-case:

1. Open the editor a message template (eg `#/edit?id=17&lang=fr_FR`). This renders the edit screen.
2. Click on the "Preview" icon.
3. Close the "Preview" dialog.
4. Change the URL to navigate internally to another template (eg `#/edit?id=17&lang=de_DE`). This renders the edit screen again.
5. Click on the "Preview" icon.

Before:

* It subsequently opens two copies of the "Preview" dialog (each with
  slightly different options).  Initially, you see one dialog.  When that
  close, you will see the other dialog.
* As you proceed through closing the dialogs, you may get console warnings
  because the dialogs have the same name -- and they consequently trip-up
  each other.

After:

* It only opens one copy of the "Preview" dialog.

Technical Details:

* When rendering the setup screen (`#1`/`#4`), it registers a listener which
  will handle the "Preview" clicks.  But the listener is not properly
  unregistered.  Consequently, old listeners hang around. So the click at
  step `#5` calls both the old+new listeners, creating two dialogs.
ext/message_admin/ang/crmMsgadm/Edit.js