From d747db2674c0c90be0e1853b6eb892bc7ce0af49 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 14 Dec 2018 14:48:55 -0500 Subject: [PATCH] loot tracker: submit loot to api Co-authored-by: TheStonedTurtle <29030969+TheStonedTurtle@users.noreply.github.com> --- .../loottracker/LootTrackerPlugin.java | 76 +++++++++++++++++-- 1 file changed, 70 insertions(+), 6 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java index 70ce6cc247..90664a5622 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java @@ -52,8 +52,12 @@ import net.runelite.api.SpriteID; import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ConfigChanged; +import net.runelite.api.events.SessionClose; +import net.runelite.api.events.SessionOpen; import net.runelite.api.events.WidgetLoaded; import net.runelite.api.widgets.WidgetID; +import net.runelite.client.account.AccountSession; +import net.runelite.client.account.SessionManager; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.events.NpcLootReceived; @@ -67,6 +71,10 @@ import net.runelite.client.ui.ClientToolbar; import net.runelite.client.ui.NavigationButton; import net.runelite.client.util.ImageUtil; import net.runelite.client.util.Text; +import net.runelite.http.api.loottracker.GameItem; +import net.runelite.http.api.loottracker.LootRecord; +import net.runelite.http.api.loottracker.LootRecordType; +import net.runelite.http.api.loottracker.LootTrackerClient; @PluginDescriptor( name = "Loot Tracker", @@ -103,12 +111,17 @@ public class LootTrackerPlugin extends Plugin @Inject private Client client; + @Inject + private SessionManager sessionManager; + private LootTrackerPanel panel; private NavigationButton navButton; private String eventType; private List ignoredItems = new ArrayList<>(); + private LootTrackerClient lootTrackerClient; + private static Collection stack(Collection items) { final List list = new ArrayList<>(); @@ -144,6 +157,26 @@ public class LootTrackerPlugin extends Plugin return configManager.getConfig(LootTrackerConfig.class); } + @Subscribe + public void onSessionOpen(SessionOpen sessionOpen) + { + AccountSession accountSession = sessionManager.getAccountSession(); + if (accountSession.getUuid() != null) + { + lootTrackerClient = new LootTrackerClient(accountSession.getUuid()); + } + else + { + lootTrackerClient = null; + } + } + + @Subscribe + public void onSessionClose(SessionClose sessionClose) + { + lootTrackerClient = null; + } + @Subscribe public void onConfigChanged(ConfigChanged event) { @@ -171,12 +204,19 @@ public class LootTrackerPlugin extends Plugin .build(); clientToolbar.addNavigation(navButton); + + AccountSession accountSession = sessionManager.getAccountSession(); + if (accountSession != null) + { + lootTrackerClient = new LootTrackerClient(accountSession.getUuid()); + } } @Override protected void shutDown() { clientToolbar.removeNavigation(navButton); + lootTrackerClient = null; } @Subscribe @@ -188,6 +228,12 @@ public class LootTrackerPlugin extends Plugin final int combat = npc.getCombatLevel(); final LootTrackerItem[] entries = buildEntries(stack(items)); SwingUtilities.invokeLater(() -> panel.add(name, combat, entries)); + + if (lootTrackerClient != null) + { + LootRecord lootRecord = new LootRecord(name, LootRecordType.NPC, toGameItems(items)); + lootTrackerClient.submit(lootRecord); + } } @Subscribe @@ -199,6 +245,12 @@ public class LootTrackerPlugin extends Plugin final int combat = player.getCombatLevel(); final LootTrackerItem[] entries = buildEntries(stack(items)); SwingUtilities.invokeLater(() -> panel.add(name, combat, entries)); + + if (lootTrackerClient != null) + { + LootRecord lootRecord = new LootRecord(name, LootRecordType.PLAYER, toGameItems(items)); + lootTrackerClient.submit(lootRecord); + } } @Subscribe @@ -244,14 +296,19 @@ public class LootTrackerPlugin extends Plugin .map(item -> new ItemStack(item.getId(), item.getQuantity(), client.getLocalPlayer().getLocalLocation())) .collect(Collectors.toList()); - if (!items.isEmpty()) - { - final LootTrackerItem[] entries = buildEntries(stack(items)); - SwingUtilities.invokeLater(() -> panel.add(eventType, -1, entries)); - } - else + if (items.isEmpty()) { log.debug("No items to find for Event: {} | Container: {}", eventType, container); + return; + } + + final LootTrackerItem[] entries = buildEntries(stack(items)); + SwingUtilities.invokeLater(() -> panel.add(eventType, -1, entries)); + + if (lootTrackerClient != null) + { + LootRecord lootRecord = new LootRecord(eventType, LootRecordType.EVENT, toGameItems(items)); + lootTrackerClient.submit(lootRecord); } } @@ -328,4 +385,11 @@ public class LootTrackerPlugin extends Plugin ignored); }).toArray(LootTrackerItem[]::new); } + + private static Collection toGameItems(Collection items) + { + return items.stream() + .map(item -> new GameItem(item.getId(), item.getQuantity())) + .collect(Collectors.toList()); + } }