Skip to content

Commit 435520d

Browse files
committed
feat(shopping): add shortcut to skip buy confirmation dialogs
Made-with: Cursor
1 parent 25dcca7 commit 435520d

File tree

9 files changed

+47
-6
lines changed

9 files changed

+47
-6
lines changed

Locales/enUS.lua

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,10 @@ AUCTIONATOR_LOCALES.enUS = function()
502502
L["CONFIG_SHOPPING_ALWAYS_CONFIRM_QUANTITY_TOOLTIP_HEADER"] = "Confirm quantity every time"
503503
L["CONFIG_SHOPPING_ALWAYS_CONFIRM_QUANTITY_TOOLTIP_TEXT"] = "By default the quantity is confirmed just once, this makes it so you have to type it a second time to confirm the purchase."
504504

505+
L["CONFIG_SHOPPING_SKIP_BUY_CONFIRMATION"] = "Shortcut to skip buy confirmation dialogs"
506+
L["CONFIG_SHOPPING_SKIP_BUY_CONFIRMATION_TOOLTIP_HEADER"] = "Skip confirmation"
507+
L["CONFIG_SHOPPING_SKIP_BUY_CONFIRMATION_TOOLTIP_TEXT"] = "When using this shortcut (e.g. Alt+Right Click), purchases are completed immediately without showing the confirmation dialog.\n\n|cffff0000Use with caution.|r"
508+
505509
L["POSTING_SETTINGS_COLON"] = "Posting Settings:"
506510
L["ADD_TO_X"] = "Add to %s"
507511
L["REMOVE_FROM_X"] = "Remove from %s"

Source/Components/Frames/DropDown.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<Ui xmlns="http://www.blizzard.com/wow/ui/">
2-
<Frame name="AuctionatorDropDown" mixin="AuctionatorDropDownMixin" virtual="true">
2+
<Frame name="AuctionatorDropDown" mixin="AuctionatorDropDownMixin,AuctionatorConfigTooltipMixin" inherits="AuctionatorConfigurationTooltip" virtual="true">
33
<!--
44
<KeyValues>
55
<KeyValue key="labelText" value="" type="string"/>
@@ -9,6 +9,8 @@
99
-->
1010
<Scripts>
1111
<OnLoad method="OnLoad"/>
12+
<OnEnter method="OnEnter"/>
13+
<OnLeave method="OnLeave"/>
1214
</Scripts>
1315
<Size y="40"/>
1416

Source_ModernAH/Config/Frames/ShoppingAlt.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,18 @@
1616
<Anchor point="TOPLEFT" relativeKey="$parent.ListMissingTerms" relativePoint="BOTTOMLEFT" />
1717
</Anchors>
1818
</Frame>
19+
<Frame inherits="AuctionatorDropDown" parentKey="SkipBuyConfirmationShortcut">
20+
<KeyValues>
21+
<KeyValue key="labelText" value="AUCTIONATOR_L_CONFIG_SHOPPING_SKIP_BUY_CONFIRMATION" type="global" />
22+
<KeyValue key="tooltipTitleText" value="AUCTIONATOR_L_CONFIG_SHOPPING_SKIP_BUY_CONFIRMATION_TOOLTIP_HEADER" type="global" />
23+
<KeyValue key="tooltipText" value="AUCTIONATOR_L_CONFIG_SHOPPING_SKIP_BUY_CONFIRMATION_TOOLTIP_TEXT" type="global"/>
24+
<KeyValue key="textString" value="LEFT_CLICK;RIGHT_CLICK;ALT_LEFT_CLICK;ALT_RIGHT_CLICK;SHIFT_LEFT_CLICK;SHIFT_RIGHT_CLICK;DISABLED" type="string"/>
25+
<KeyValue key="valuesString" value="left click;right click;alt left click;alt right click;shift left click;shift right click;none" type="string"/>
26+
</KeyValues>
27+
<Anchors>
28+
<Anchor point="TOPLEFT" relativeKey="$parent.AlwaysConfirmQuantity" relativePoint="BOTTOMLEFT" />
29+
</Anchors>
30+
</Frame>
1931
</Frames>
2032
</Frame>
2133
</Ui>

Source_ModernAH/Config/Main.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Auctionator.Config.Options.SELLING_SPLIT_PANELS = "selling_split_panels"
1515
Auctionator.Config.Options.COLUMNS_SHOPPING_BUY_ITEM = "columns_shopping_buy_item"
1616
Auctionator.Config.Options.COLUMNS_SHOPPING_BUY_COMMODITY = "columns_shopping_buy_commodity"
1717
Auctionator.Config.Options.SHOPPING_ALWAYS_CONFIRM_COMMODITY_QUANTITY = "shopping_always_confirm_commodity_quantity"
18+
Auctionator.Config.Options.SHOPPING_SKIP_BUY_CONFIRMATION = "shopping_skip_buy_confirmation"
1819

1920
Auctionator.Config.Options.CRAFTING_INFO_SHOW_CHEAPEST_QUALITIES_COST = "crafting_info_show_cheapest_qualities_cost"
2021

@@ -39,6 +40,7 @@ Auctionator.Config.Defaults[Auctionator.Config.Options.CRAFTING_INFO_SHOW_CHEAPE
3940
Auctionator.Config.Defaults[Auctionator.Config.Options.COLUMNS_SHOPPING_BUY_ITEM] = {}
4041
Auctionator.Config.Defaults[Auctionator.Config.Options.COLUMNS_SHOPPING_BUY_COMMODITY] = {}
4142
Auctionator.Config.Defaults[Auctionator.Config.Options.SHOPPING_ALWAYS_CONFIRM_COMMODITY_QUANTITY] = false
43+
Auctionator.Config.Defaults[Auctionator.Config.Options.SHOPPING_SKIP_BUY_CONFIRMATION] = Auctionator.Config.Shortcuts.NONE
4244

4345
Auctionator.Config.Defaults[Auctionator.Config.Options.AUCTION_DURATION] = 24
4446
Auctionator.Config.Defaults[Auctionator.Config.Options.AUCTION_SALES_PREFERENCE] = Auctionator.Config.SalesTypes.PERCENTAGE

Source_ModernAH/Config/Mixins/ShoppingAlt.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ function AuctionatorConfigShoppingAltFrameMixin:ShowSettings()
44
AuctionatorConfigShoppingFrameMixin.ShowSettings(self)
55

66
self.AlwaysConfirmQuantity:SetChecked(Auctionator.Config.Get(Auctionator.Config.Options.SHOPPING_ALWAYS_CONFIRM_COMMODITY_QUANTITY))
7+
self.SkipBuyConfirmationShortcut:SetValue(Auctionator.Config.Get(Auctionator.Config.Options.SHOPPING_SKIP_BUY_CONFIRMATION))
78
end
89

910
function AuctionatorConfigShoppingAltFrameMixin:Save()
1011
AuctionatorConfigShoppingFrameMixin.Save(self)
1112

1213
Auctionator.Config.Set(Auctionator.Config.Options.SHOPPING_ALWAYS_CONFIRM_COMMODITY_QUANTITY, self.AlwaysConfirmQuantity:GetChecked())
14+
Auctionator.Config.Set(Auctionator.Config.Options.SHOPPING_SKIP_BUY_CONFIRMATION, self.SkipBuyConfirmationShortcut:GetValue())
1315
end

Source_ModernAH/Tabs/Buying/Commodity/Frames/Main.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@
250250
<Button parentKey="BuyButton" inherits="UIPanelDynamicResizeButtonTemplate" text="AUCTIONATOR_L_BUY_NOW">
251251
<Scripts>
252252
<OnClick>
253-
self:GetParent():GetParent():BuyClicked()
253+
self:GetParent():GetParent():BuyClicked(button)
254254
</OnClick>
255255
</Scripts>
256256
<Anchors>

Source_ModernAH/Tabs/Buying/Commodity/Mixins/Main.lua

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ function AuctionatorBuyCommodityFrameTemplateMixin:UpdateView()
210210
self.DetailsContainer.BuyButton:Disable()
211211
end
212212
end
213-
function AuctionatorBuyCommodityFrameTemplateMixin:BuyClicked()
213+
function AuctionatorBuyCommodityFrameTemplateMixin:BuyClicked(button)
214214
local minUnitPrice = self.results[1].price
215215
local maxUnitPrice = self.results[1].price
216216
for _, r in ipairs(self.results) do
@@ -220,7 +220,11 @@ function AuctionatorBuyCommodityFrameTemplateMixin:BuyClicked()
220220
maxUnitPrice = r.price
221221
end
222222
local shift = (maxUnitPrice - minUnitPrice) / minUnitPrice * 100
223-
if shift >= 50 then
223+
local shortcut = Auctionator.Config.Get(Auctionator.Config.Options.SHOPPING_SKIP_BUY_CONFIRMATION)
224+
local skipConfirm = shortcut ~= Auctionator.Config.Shortcuts.NONE and
225+
Auctionator.Utilities.IsShortcutActive(shortcut, button or "LeftButton")
226+
self.skipConfirmation = skipConfirm
227+
if not skipConfirm and shift >= 50 then
224228
self.WidePriceRangeWarningDialog:SetDetails({
225229
minUnitPrice = minUnitPrice,
226230
maxUnitPrice = maxUnitPrice,
@@ -249,6 +253,13 @@ local function GetMedianUnit(quantity, results)
249253
end
250254

251255
function AuctionatorBuyCommodityFrameTemplateMixin:CheckPurchase(newUnitPrice, newTotalPrice)
256+
if self.skipConfirmation then
257+
C_AuctionHouse.ConfirmCommoditiesPurchase(self.expectedItemID, self.selectedQuantity)
258+
FrameUtil.UnregisterFrameForEvents(self, PURCHASE_EVENTS)
259+
self.waitingForPurchase = false
260+
return
261+
end
262+
252263
local originalUnitPrice = self:GetPrices()
253264

254265
local prefix = ""

Source_ModernAH/Tabs/Buying/Item/Mixins/Dialog.lua

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,16 @@ function AuctionatorBuyItemDialogMixin:Reset()
1111
self.price = nil
1212
end
1313

14-
function AuctionatorBuyItemDialogMixin:ReceiveEvent(eventName, rowData)
14+
function AuctionatorBuyItemDialogMixin:ReceiveEvent(eventName, rowData, skipConfirmation)
1515
self.PurchaseDetails:SetText(AUCTIONATOR_L_PAYING_X:format(GetMoneyString(rowData.price, true)))
1616
self.price = rowData.price
1717
self.auctionID = rowData.auctionID
1818

19+
if skipConfirmation then
20+
self:BuyClicked()
21+
return
22+
end
23+
1924
if rowData.itemLink:match("battlepet") then
2025
local speciesID, _, breedQuality = BattlePetToolTip_UnpackBattlePetLink(rowData.itemLink)
2126
local name, icon = C_PetJournal.GetPetInfoBySpeciesID(speciesID)

Source_ModernAH/Tabs/ResultsListing/Mixins/BuyItemRow.lua

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,12 @@ function AuctionatorBuyItemRowMixin:OnClick(button, ...)
3939
Auctionator.Utilities.InsertLink(self.rowData.itemLink)
4040

4141
elseif self.rowData.canBuy then
42+
local shortcut = Auctionator.Config.Get(Auctionator.Config.Options.SHOPPING_SKIP_BUY_CONFIRMATION)
43+
local skipConfirmation = shortcut ~= Auctionator.Config.Shortcuts.NONE and
44+
Auctionator.Utilities.IsShortcutActive(shortcut, button)
4245
Auctionator.EventBus
4346
:RegisterSource(self, "BuyItemRow")
44-
:Fire(self, Auctionator.Buying.Events.ShowItemConfirmation, self.rowData)
47+
:Fire(self, Auctionator.Buying.Events.ShowItemConfirmation, self.rowData, skipConfirmation)
4548
:UnregisterSource(self)
4649
end
4750
end

0 commit comments

Comments
 (0)