View Single Post
07/07/15, 03:06 PM   #1
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 1,578
[outdated] guild store API improvements

I already asked for some improvements a while ago here, but it's been almost half a year and I haven't heard anything new since then. I also have a few new things to add in the meantime, so here we go:

SetTradingHouseFilter parameter limit
The function SetTradingHouseFilter which is used to specify the arguments for the individual search filters is currently limited to accept only up to 8 filter arguments.
Because of this I can't add a Crafting > All subcategory in AwesomeGuildStore as I would need to pass 19 arguments to list all item types.

Filters
I implemented some new filters in AwesomeGuildStore that are currently only working locally on the current page.
It would be great if these were added on the server side in order to reduce the transferred data and show all matching results on one page, thus making the search faster and more efficient.

There is also some problem with item levels on certain item categories that are related to crafting professions, that makes it impossible to look for a level range on them.
This Sourflower Tea Recipe for example was listed with level 8 and level 10 in a guild store:
|H1:item:45999:3:8:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0|h|h
|H1:item:45999:3:10:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0|h|h
It would be really helpful either the item levels are adjusted so that a certain range corresponds to a crafting level, or if there was a filter that works with the required crafting level of an item.
[*] New filter types:
  • text - this one has gotten quite powerful and allows to match text and item links in a number of ways. see the Textfilter Tutorial in the description of AwesomeGuildStore for a full explanation
  • set boni - e.g. health regen, weapon damage
  • known state - for recipes, motifs, runes and item traits
  • unit price range
  • stack size range
  • crafting level filter - or a fixed item level filter

Sorting
Probably the most requested feature for AwesomeGuildStore - besides the unit price filter - is sorting the results by unit price. If this was added to the API it would save me a lot of trouble implementing local sorting by unit price.

Search Improvements
These are some features that would make finding a specific item much easier and thus reduce the amount of traffic that is generated and at the same time improve usability by making the interface more responsive.

SetPendingItemPurchase and GetTradingHouseSearchResultItemInfo only accept a local index within the last searched page.
If the search results had indices that are independent of the current page it would allow me to locally cache pages and still be able to purchase items regardless of which page of the current search is opened.
Going a step further and giving each listing a global id64 which is also returned in the guild activity log and item sold mails would also allow to track sales easier.

The theoretical limit of items in a store is 15,000 (30*500) which means there can be up to 150 pages in one store. With the current cooldown of 5 seconds that would mean that indexing a fully stocked store takes around 12-13 minutes.
Moreover in my experience most searches return more than 100 items and make additional requests necessary. Even a small increase to 200 would be well appreciated.
A limit of 5000 results would allow downloading all items in a guild store in up to 15 seconds and make more requests unnecessary as the filtering can then happen completely on client side.

In case the limit can't be increased that much, it would also be nice to have a way to query how many results a search would return before it is submitted.
Two new methods GetSearchResultPageCount and GetSearchResultItemCount would allow for some nice features.

Item Categorization
The newly added Psijic Ambrosia Recipe Fragments are currently a bit troublesome to search for.
They have the item category ITEM_TROPHY, but are unlike other trophies also consumables. Because of that they are shown in the consumable category inside the inventory, but under Misc > Trophy in AwesomeGuildStore.
In my opinion these should actually be ITEM_RECIPE, because that's what a regular user is looking for when he is thinking of the new recipe.
It would also be nice if IsItemLinkRecipeKnown can handle them, so the known recipe filter can work on them without me making special cases all over the place in AwesomeGuildStore.

Shields have an ITEMTYPE_WEAPON, even though they are always handled as armor. This makes it impossible for me to list them under Armor > All with the current restrictions on SetTradingHouseFilter, because I can't use the EQUIP_TYPE_* due to the number of different types that I would need to filter then.

I hope at least some of the easier requests can make it into Update 7, so I have something to look forward to on the addon front.