How to provide custom URL for notification

AI-generated summary

Notification Custom URL Issue

jafeth.diazc is having trouble providing a custom URL for a custom notification type in Discourse. The current notification-item widget does not support custom URLs for custom notification types.

jafeth.diazc proposes adding a conditional statement to the url method to return a custom URL if the notification type is custom. However, jafeth.diazc is unsure if this is the best approach, as custom notifications are not commonly used in plugins.

sam suggests moving away from custom notifications altogether and instead sending a PR to reserve a notification number for core. According to sam, the custom notification system has become “super messy.”

Hi,

I know that if I create a custom type notification, I can provide a data.message field with a I18n scope value to form the text of the notification. This is the code in the notification-item widget:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/widgets/notification-item.js.es6#L66-L90

However, in the function that generates the URL, I don’t see a way to return a custom URL in case the notification’s type is custom:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/widgets/notification-item.js.es6#L25-L55

I was thinking in reopening the widget and add code for such extra case, but the widget is not being exported :frowning:

What could be a solution for this? I’d appreciate some help.

Still blocked on this? Any new findings to share?

Yes :frowning:

I expected to hear from an experienced developer whether creating custom notifications is something “advisable”. I say this since I haven’t seen plugins doing it (if someone has, please let me know) nor many topics related (others than this one, which I’ve followed to create a custom notification from the backend).

In any case, I was thinking in submitting a PR to add something like the following snippet at the bottom of the url method. That would solve my problem and even be useful for other plugin developers.

if (attrs.notification_type === CUSTOM_TYPE) {
  return data.custom_url;
}

Even if it’s not worth its merging, I think I could reopen the widget and do the same, but I would need the widget to be exported, so another PR :sweat_smile:

I hope to get some advice for my issue this time :slight_smile:

My current thought around notifications is to move away from custom all together.

If you need a new notification type you should send through a PR to reserve the number for core.

The “custom” thing just became super messy.