sylvanaar / wow-instant-messenger

WIM (WoW Instant Messenger) is a World of Warcraft addon which brings an instant messenger feel to communication in game.
https://www.curseforge.com/wow/addons/wim-3
MIT License
12 stars 14 forks source link

Request: Bnet whisper message size increase and fixing history view of multi-part messages #46

Open Gatheringofravens opened 3 years ago

Gatheringofravens commented 3 years ago

Is your feature request related to a problem? Please describe. Two problems and at least two suggestions. I'll break them down into A and B.

A. The community API and Battle.net whispers let you send messages that are as long as 4000 characters. WIM currently only supports 255.

Please see the solution for full info.

B. Messages appear out of order issue in the history view

Please see the solution for full info.

Describe the solution you'd like Two suggestions. I'll break them down into A and B.

A. Allow Bnet messages longer than 255 characters to be sent.

Statement: The community API and Battle.net whispers let you send messages that are as long as 4000 characters.

This is in contrast to the standard SendChatMessage which has always been limited to 255 characters. As an RPer having the ability to send longer messages would be massively beneficial even if only among bnet friends as at this point WoW's low chat limit size (compared to newer games for example FF14) is problematic for more in depth discussions as well as creative writing. I know WIM is very popular among the RP population for its history features among others.

My suggestion is to check if the messages being sent are bnet whispers (or community messages but bnet whispers would get more use by far) and if so use separate logic to allow an increased size. This would require changing a number of checks in several modules (most of which are obviously connected and which I found just by searching "255" in the lua).

As to the size, there is the consideration that 4000 characters is likely far too big a value, it would make dealing with messages unmanageable as far as displaying or even scrolling through them and likely require extensive changes to WIM's scroll logic. Instead I propose a raised but still reasonable character limit of 400-600 characters.

Looking at an addon in the same space called "emotesplitter" the author there chose 400 characters and receiving messages from those using that from others displays just fine in a WIM window (even I think in the default size) and presents no scroll issues.

As an example of how this benefits, let's say I send a message of 3100 characters in length. Not uncommon for some RP's I've had. With the present WIM limits that message would be broken up into 13 different small chunk messages. With my proposed 400 character size it would be only 8 messages. This should help prevent throttling by hitting the server with fewer message send API requests at once when sending large messages (in particular I've noticed a tendency for the server at times to discard messages beyond 10).

There is also the consideration that Blizzard may eventually extend chat length sizes to catch up to other games and these changes would allow seamless enabling of that in whatever additional channels are allowed without significant additional changes.

B. Messages out of order issue in the history view

WIM has long (for years now) had an issue with multi-part messages (that is long amounts of text entered into WIM and broken up into chunks of <=255 characters before sending) appearing out of order after the fact in the history view. This makes reconstructing conversations (or RP) a bit more tedious than it should be (I tend to have to copy stuff to notepad and reorder it there).

Interestingly this issue is less present with bnet messages but it does exist with normal whispers that are multi-part. I've seen it with as small as 2-3 part messages but it's perhaps more common and more disruptive with messages that are broken up into say 6-10+ parts.

I propose to fix this that WIM either make sure each message is sent with a delay of some milliseconds from the previous and start recording milliseconds internally (even if it doesn't display them to the player) for each message sent to ensure correct ordering or it could append numbers internally to each message chunk counting up from 0 (or 1) and use those for correct ordering. Another thought is WIM could be given an option to wait 1 second between each message send. This is not ideal and if made default would rightfully disrupt and anger people who never use the history feature and just want to quickly send a long emergency message in raid for example. But as an RPer I would probably take the trade-off if it was offered.

Describe alternatives you've considered I can't possibly envision every alternative to fixing the second issue but the first issue is pretty straightforward, WIM needs to have additional logic for bnet whisper messages.

Additional context Just thought I'd submit this here. I'm not sure what became of the group repo discussed in light of Sylvanaar's passing (RIP) and this is currently active. Will be happy to re-submit to another repo if needed.