Download
(5 Kb)
Download
Updated: 10/29/23 01:07 PM
Pictures
File Info
Compatibility:
Endless Archive (9.2.5)
base-game patch (9.1.5)
Updated:10/29/23 01:07 PM
Created:11/03/15 08:20 PM
Monthly downloads:17,164
Total downloads:1,004,960
Favorites:670
MD5:
Circonians LibNotifications  Popular! (More than 5000 hits)
Version: 1.0.11
by: sirinsidiator [More]
Who is it for?
Developers.
What does it do?
Allows you to add messages to the games notification area.

How do I use it?
Register the library in your code file:
Lua Code:
  1. local libNotification = LibNotification

After your addon is initialized call the libraries CreateProvider() function.
Lua Code:
  1. local provider = libNotification:CreateProvider()

The provider will have a notifications table. This is where you put your messages.
Lua Code:
  1. provider.notifications
How do I create a Message?

Messages need to be written in a certain format, the following is an example:
Warning: Spoiler


Create your messages and add them to your provider notifications table:
Lua Code:
  1. table.insert(provider.notifications, msg)
It is up to you to add & remove your messages from the notifications table when you are done with them.
WARNING:
The table must be numerically indexed & there can be no missing indices. I recommend using table.insert() & table.remove() for adding/removing messages

After you are done making changes Adding/Removing messages, call the update function:
Lua Code:
  1. provider:UpdateNotifications()
Try not to call this anymore than necessary.
It fires off ALL of the BuildNotificationList functions for every notification provider in the game!

Other Information
Just In case anyone needs to know for creating/selecting icons. The icon on the keyboard rowControl is 32 x 32.
The code can be found on github: https://github.com/sirinsidiator/ESO-LibNotification.
1.0.11--

- removed LibStub support
- switched to semantic versioning
- updated for Secret of the Telvanni
r10--

- fixed incorrect string id for gamepad notification header (Thanks ZOSDanBatson!)
- updated for Markarth
r9--

- added LICENSE and put the code on github
r8--

- updated for Harrowstorm and Greymoor
- added a second global variable "LibNotification" to match the ingame addon name
r7--

- updated for Dragonhold
- made LibStub dependency optional (it's now recommended to use the LibNotifications global variable to access it)
- fixed typo in "keyboardDeclineCallback" (was "keybaordDeclineCallback" before. The incorrect spelling still works, but I recommend you fix it in your addons!)
- added IsLibrary flag to manifest
r6--

- updated for Murkmire
- switched to standalone package structure (developers: make sure you remove it from the manifest and change to DependsOn!)
- permanently fixed the errors that occur when ZOS adds new notification types (thanks Chip for making these tables global!)
r5--

- updated for Summerset
r4--

- updated for Morrowind
r3--

- updated for Homestead
r2--

- updated for Dark Brotherhood
- gamepad support seems to be broken and will be updated in a future version
Version 1.2--

Gamepad Support Added

WARNING: In order to add support for notifications in gamepad mode the entire library was rewritten. There have been some changes to the required structure of the message table. Please read the new instructions for creating a message table on the addons main page.

WARNING: To avoid errors if you wish to store extra data with your message store all of your custom data in a data table inside the message table. Read the new instructions for creating a message table on the addons main page.
Archived Files (12)
File Name
Version
Size
Uploader
Date
10
5kB
sirinsidiator
12/23/20 10:47 AM
9
5kB
sirinsidiator
05/28/20 03:16 PM
8
2kB
sirinsidiator
04/24/20 03:16 PM
7
2kB
sirinsidiator
09/29/19 02:43 PM
6
2kB
sirinsidiator
09/22/18 12:28 PM
5
4kB
sirinsidiator
05/21/18 02:39 AM
4
4kB
sirinsidiator
05/23/17 02:25 AM
3
4kB
sirinsidiator
02/14/17 11:15 AM
2
4kB
sirinsidiator
06/11/16 01:58 AM
1.2
2kB
circonian
11/06/15 09:17 PM
1.1
1kB
circonian
11/04/15 07:39 PM
1.0
1kB
circonian
11/03/15 08:20 PM


Post A Reply Comment Options
Unread 05/04/22, 08:48 AM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1566
File comments: 1120
Uploads: 41
Originally Posted by TairenSoul
Not working since last update. Getting annoying guild recruitment messages in chat every few minutes. Please update! This is one of the best addon's! I would be forever grateful! Thank you very much!
I believe you got the wrong comment section. This is neither an addon nor related to guild recruitment messages in any way.
Last edited by sirinsidiator : 05/04/22 at 08:48 AM.
Report comment to moderator  
Reply With Quote
Unread 05/04/22, 08:24 AM  
TairenSoul
 
TairenSoul's Avatar

Forum posts: 0
File comments: 24
Uploads: 0
Not working since last update. Getting annoying guild recruitment messages in chat every few minutes. Please update! This is one of the best addon's! I would be forever grateful! Thank you very much!
Report comment to moderator  
Reply With Quote
Unread 09/25/19, 10:43 AM  
Marazota
AddOn Author - Click to view AddOns

Forum posts: 257
File comments: 1517
Uploads: 2
## IsLibrary: true
need to be added to the manifest of this one =)
Report comment to moderator  
Reply With Quote
Unread 05/23/19, 09:51 PM  
SteveCampsOut
 
SteveCampsOut's Avatar

Forum posts: 38
File comments: 363
Uploads: 0
Any updates coming to this lib for Elsweyr with the new guild applications added?
Report comment to moderator  
Reply With Quote
Unread 09/22/18, 12:31 PM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1566
File comments: 1120
Uploads: 41
Thanks for letting me know. The new version should permanently fix this issue. Just install it as regular addon and it should no longer happen.
Report comment to moderator  
Reply With Quote
Unread 09/20/18, 12:00 PM  
Marazota
AddOn Author - Click to view AddOns

Forum posts: 257
File comments: 1517
Uploads: 2
just created a first new hero on EU server to do Summerset Pathfinder, you know
and got this


more info

EsoUI/Libraries/ZO_ParametricScrollList/ZO_ParametricScrollList.lua:236: operator .. is not supported for nil .. string
stack traceback:
EsoUI/Libraries/ZO_ParametricScrollList/ZO_ParametricScrollList.lua:236: in function 'ZO_ParametricScrollList:AddEntryWithHeader'
|caaaaaa<Locals> self = tbl </Locals>|r
user:/AddOns/LibNotification/LibNotification/LibNotification.lua:105: in function 'GAMEPAD_NOTIFICATIONS:AddDataEntry'
|caaaaaa<Locals> self = tbl, dataType = 13, data = tbl, isHeader = true, headingText = "", entryData = tbl </Locals>|r
EsoUI/Ingame/Contacts/Notifications_Common.lua:52: in function 'ZO_NotificationProvider:AddDataEntry'
|caaaaaa<Locals> self = tbl, i = 1, isHeader = true </Locals>|r
EsoUI/Ingame/Contacts/Notifications_Common.lua:1544: in function 'ZO_NotificationManager:BuildNotificationList'
|caaaaaa<Locals> self = tbl, totalNumNotifications = 2, hasTimer = false, providerIndex = 20, provider = tbl, numNotifications = 1, listIndex = 1, isHeader = true </Locals>|r
EsoUI/Ingame/Contacts/Notifications_Common.lua:1516: in function 'ZO_NotificationManager:RefreshNotificationList'
|caaaaaa<Locals> self = tbl </Locals>|r
EsoUI/Ingame/Contacts/Notifications_Common.lua:57: in function 'ZO_NotificationProvider:PushUpdateToNotificationManager'
|caaaaaa<Locals> self = tbl, eventId = 131448 </Locals>|r
EsoUI/Ingame/Contacts/Notifications_Common.lua:33: in function 'pushUpdateCallback'
|caaaaaa<Locals> eventId = 131448 </Locals>|r
EsoUI/Ingame/Contacts/Notifications_Common.lua:905: in function 'callback'
EsoUI/Libraries/Utility/ZO_CallbackObject.lua:111: in function 'ZO_CallbackObject:FireCallbacks'
|caaaaaa<Locals> self = tbl, eventName = "OnCollectibleNotificationRe...", registry = tbl, callbackInfoIndex = 5, callbackInfo = tbl, callback = EsoUI/Ingame/Contacts/Notifications_Common.lua:905, deleted = false </Locals>|r
EsoUI/Ingame/Collections/CollectibleDataManager.lua:1170: in function 'ZO_CollectibleDataManager:OnCollectibleNotificationRemoved'
|caaaaaa<Locals> self = tbl, notificationId = 2, collectibleId = 5107, collectibleData = tbl </Locals>|r
EsoUI/Ingame/Collections/CollectibleDataManager.lua:1093: in function '(anonymous)'
|caaaaaa<Locals> _ = 131448 </Locals>|r
notifications

Last edited by Marazota : 09/20/18 at 12:04 PM.
Report comment to moderator  
Reply With Quote
Unread 06/13/16, 07:11 PM  
dorrino
AddOn Author - Click to view AddOns

Forum posts: 50
File comments: 203
Uploads: 10
Originally Posted by sirinsidiator
Originally Posted by dorrino
Originally Posted by sirinsidiator
but as nobody has complained about it until now, I guess it is not used anywhere anyways?
It is used in No Thank you and produces ~200 lua errors on readychecks
I think not too many people know about that feature yet. I did a dungeon yesterday and the groupleader just typed "r?" in chat...
That's true But imagine the surprise when somebody, having a bit of advanced knowledge, randomly rewards you will a chain of lua errors?
Report comment to moderator  
Reply With Quote
Unread 06/12/16, 01:48 AM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1566
File comments: 1120
Uploads: 41
Originally Posted by dorrino
Originally Posted by sirinsidiator
but as nobody has complained about it until now, I guess it is not used anywhere anyways?
It is used in No Thank you and produces ~200 lua errors on readychecks
I think not too many people know about that feature yet. I did a dungeon yesterday and the groupleader just typed "r?" in chat...
Report comment to moderator  
Reply With Quote
Unread 06/11/16, 05:58 PM  
dorrino
AddOn Author - Click to view AddOns

Forum posts: 50
File comments: 203
Uploads: 10
Originally Posted by sirinsidiator
but as nobody has complained about it until now, I guess it is not used anywhere anyways?
It is used in No Thank you and produces ~200 lua errors on readychecks
Report comment to moderator  
Reply With Quote
Unread 06/11/16, 01:56 AM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1566
File comments: 1120
Uploads: 41
Originally Posted by Sounomi
This library needs to be updated for update 2.4.

Seems to be an easy update with just the tables KEYBOARD_NOTIFICATION_ICONS, GAMEPAD_NOTIFICATION_ICONS, and DATA_TYPE_TO_TEMPLATE.
They're defined as local variables in EsoUI/Ingame/Contacts/Keyboard/Notifications_keyboard.lua and /Gamepad/Notifications_gamepad.lua.
Hey. I just looked into it and copied said tables over. Since I only have taken this over recently I still need to figure out how to properly test it and what the code does, but from trying the example in the description it looks like the gamepad mode is broken as no notifications show up there. I uploaded the new version and will do another update once I have time to figure it out, but as nobody has complained about it until now, I guess it is not used anywhere anyways?
Report comment to moderator  
Reply With Quote
Unread 06/10/16, 07:50 PM  
Sounomi

Forum posts: 40
File comments: 69
Uploads: 0
This library needs to be updated for update 2.4.

Seems to be an easy update with just the tables KEYBOARD_NOTIFICATION_ICONS, GAMEPAD_NOTIFICATION_ICONS, and DATA_TYPE_TO_TEMPLATE.
They're defined as local variables in EsoUI/Ingame/Contacts/Keyboard/Notifications_keyboard.lua and /Gamepad/Notifications_gamepad.lua.
Report comment to moderator  
Reply With Quote
Unread 02/14/16, 04:43 AM  
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1019
File comments: 1531
Uploads: 31
Thank you for this library, works like a charm. (Added to No Thank you to redirect Lua Errors to Notifications).
Report comment to moderator  
Reply With Quote
Unread 11/07/15, 06:54 PM  
CaptainBlagbird
 
CaptainBlagbird's Avatar
AddOn Author - Click to view AddOns

Forum posts: 53
File comments: 177
Uploads: 23
Originally Posted by circonian
I also notice that the message text associated with every notification has changed & no longer matches the heading. ONLY removing a notification would not change the heading/text of the other notifications so clearly something else has happened here.
That's right, on removing I also updated the message with the new table index (because some indices might obviously get changed on removing), I should have clarified that.

Originally Posted by circonian
If you want to test it yourself, just add that key to the MotD BuildNotificationList function (dump this in your code file) and that will fix the sort problem.
Yep, fixes it. I think I'll use this in a temporary add-on until ZOS fixed it
Report comment to moderator  
Reply With Quote
Unread 11/07/15, 06:08 PM  
circonian
AddOn Author - Click to view AddOns

Forum posts: 613
File comments: 804
Uploads: 27
Originally Posted by CaptainBlagbird
I'm still a little bit confused about the order. I'm using secsSinceRequest as recommended, I don't use sortKey or sortIndex as they are only for internal sorting, right?
I noticed the list getting unsorted while there is a MotD pending: imgur album
I see that ZO_GuildMotDProvider is the only official provider that doesn't use secsSinceRequest so I guess that's the reason. But I haven't tested with other official notifications yet. I don't care much about the list not being sorted correctly, but I wanted to point it out to you.
Yes sortIndex Is used for internal sorting. But to avoid that and other keys used by the game in the message table that is why I decided to change the instructions to say that you should just put any custom data in the message.data = { -- here -- } table. That way no matter what you put in there it wont interfere with any other special keys.




You said you "Removed a custom notification (#2)" and it is true that the notification with the heading Added #2 has disappeared, but I also notice that the message text associated with every notification has changed & no longer matches the heading. ONLY removing a notification would not change the heading/text of the other notifications so clearly something else has happened here. The sort problem does indeed exist, but something else is also going on in your test example.





You are indeed correct about the MotD though, the fact that the sort key is missing from the MotD message table is what is messing up the entire sort.
http://www.esoui.com/forums/showthread.php?p=24187#post24187

If you want to test it yourself, just add that key to the MotD BuildNotificationList function (dump this in your code file)
Warning: Spoiler

and that will fix the sort problem. Hopefully they'll fix it though.
Last edited by circonian : 11/07/15 at 06:29 PM.
Report comment to moderator  
Reply With Quote
Unread 11/07/15, 04:02 PM  
circonian
AddOn Author - Click to view AddOns

Forum posts: 613
File comments: 804
Uploads: 27
Originally Posted by CaptainBlagbird
Originally Posted by circonian
Added support for gamepad notifications. Notifications will now show up in both keyboard & gamepad mode.
Awesome thanks
I've updated my add-on with the new library version.

Originally Posted by circonian
The BuildNotificationList is getting run for both the keyboard & gamepad notification managers, which I did not expect.
Originally Posted by circonian
That seems like a bug to me. I don't know why they would run the BuildNotificationList() for both managers, it should only run for the mode your in.
Yeah that's strange.. I wonder why there are two managers anyway. Sure, sometimes it might be necessary to do something different in one case, but this could also be done with GetCVar("GamepadPreferredEnabled") (I don't know about all the stuff that happens in the background though, they probably call the functions directly from C++ or whatever the base language is).
The reason there are separate keyboard/gamepad managers is because some notifications have popup context menus when you click on a button like Friend/Guild invite. When you click decline a popup appears that gives you choices: Decline, spam, report player exc... Popups are handled differently in gamepad mode than they are in keyboard mode so they require different code in the accept/decline callbacks. Also the gamepad notifications window is built differently than the keyboard mode & requires completely different templates. Having separate managers for each simplifies the selection process when determining what type of row control, icon, exc.. to use.

You are correct that they could have just checked if they were in gamepad mode & handled it all in a single accept/decline callback, but I guess they didn't want to have to do that so they created separate providers so that keyboard/gamepad mode would have unique callbacks. Which is also why I followed suit & added separate accept/decline callbacks for keyboard/gamepad mode.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: