diff --git a/esoui/ingame/campaign/campaignbrowser_shared.lua b/esoui/ingame/campaign/campaignbrowser_shared.lua
index 2e38222..7029518 100755
--- a/esoui/ingame/campaign/campaignbrowser_shared.lua
+++ b/esoui/ingame/campaign/campaignbrowser_shared.lua
@@ -61,15 +61,27 @@ end
 function ZO_CampaignBrowser_Shared:DoQueue(data)
     if data then
         if(data.type == CAMPAIGN_DATA) then
+            local function QueueCallback()
                 local canQueueIndividual, canQueueGroup = self:CanQueue(data)
                 if(canQueueIndividual and canQueueGroup) then
+                    if IsInGamepadPreferredMode() then
+                        ZO_Dialogs_ShowGamepadDialog(ZO_GAMEPAD_CAMPAIGN_QUEUE_DIALOG, data, { mainTextParams = { data.name } })
+                    else
                         ZO_Dialogs_ShowDialog("CAMPAIGN_QUEUE", {campaignId = data.id}, {mainTextParams = {data.name}})
+                    end
                 elseif(canQueueIndividual) then
                     QueueForCampaign(data.id, CAMPAIGN_QUEUE_INDIVIDUAL)
                 else
                     QueueForCampaign(data.id, CAMPAIGN_QUEUE_GROUP)
                 end
             end
+
+            if IsInLFGGroup() and GetCurrentLFGActivity() ~= LFG_ACTIVITY_AVA then
+                ZO_Dialogs_ShowPlatformDialog("CAMPAIGN_QUEUE_KICKING_FROM_LFG_GROUP_WARNING", {onAcceptCallback = QueueCallback })
+            else
+                QueueCallback()
+            end
+        end
     end
 end
 
@@ -100,6 +112,16 @@ function ZO_CampaignBrowser_Shared:SetupQueuedData(data)
     end
 end
 
+function ZO_CampaignBrowser_Shared:ShowCampaignQueueReadyDialog(campaignId, isGroup, campaignName)
+    local timeLeftSeconds = GetCampaignQueueRemainingConfirmationSeconds(campaignId, isGroup)
+    if timeLeftSeconds > 0 then
+        local timeString = ZO_FormatTime(timeLeftSeconds, TIME_FORMAT_STYLE_COLONS, TIME_FORMAT_PRECISION_TWELVE_HOUR)
+        ZO_Dialogs_ShowPlatformDialog("CAMPAIGN_QUEUE_READY", {campaignId = campaignId, isGroup = isGroup, timeLeftSeconds = timeLeftSeconds }, {mainTextParams = { campaignName, timeString }})
+    else
+        ZO_Alert(UI_ALERT_CATEGORY_ALERT, nil, SI_CAMPAIGN_BROWSER_QUEUE_ACCEPT_ERROR_EXPIRED)
+    end
+end
+
 function ZO_CampaignBrowser_Shared:BuildMasterList()
     self.masterList = {}
 
@@ -234,11 +256,11 @@ do
                 description:SetText(zo_strformat(SI_CAMPAIGN_BROWSER_SOLO_QUEUED, positionInQueue))
             end
         elseif(state == CAMPAIGN_QUEUE_REQUEST_STATE_CONFIRMING) then
-            seconds = ZO_FormatTime(GetCampaignQueueRemainingConfirmationSeconds(id, isGroup), TIME_FORMAT_STYLE_COLONS, TIME_FORMAT_PRECISION_TWELVE_HOUR)
+            local timeString = ZO_FormatTime(GetCampaignQueueRemainingConfirmationSeconds(id, isGroup), TIME_FORMAT_STYLE_COLONS, TIME_FORMAT_PRECISION_TWELVE_HOUR)
             if(isGroup) then            
-                description:SetText(zo_strformat(SI_CAMPAIGN_BROWSER_GROUP_READY, seconds))
+                description:SetText(zo_strformat(SI_CAMPAIGN_BROWSER_GROUP_READY, timeString))
             else
-                description:SetText(zo_strformat(SI_CAMPAIGN_BROWSER_SOLO_READY, seconds))
+                description:SetText(zo_strformat(SI_CAMPAIGN_BROWSER_SOLO_READY, timeString))
             end
         end
     end