From 860e20ce1238b972adaeb9f435cd71ca2e66d8ac Mon Sep 17 00:00:00 2001 From: Alejandro <25-alejandro@users.noreply.git.krews.org> Date: Mon, 27 May 2019 22:28:30 +0300 Subject: [PATCH] Fix saved searches --- .../navigation/NavigatorFavoriteFilter.java | 3 +- .../navigation/NavigatorFilter.java | 1 + .../navigation/NavigatorHotelFilter.java | 3 +- .../navigation/NavigatorManager.java | 40 +++++++++++++++++++ .../navigation/NavigatorPublicFilter.java | 4 +- .../navigation/NavigatorRoomAdsFilter.java | 2 +- .../navigation/NavigatorUserFilter.java | 14 +++---- .../RequestNewNavigatorRoomsEvent.java | 13 ++++++ 8 files changed, 67 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorFavoriteFilter.java b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorFavoriteFilter.java index 942860b5..71225cd3 100644 --- a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorFavoriteFilter.java +++ b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorFavoriteFilter.java @@ -18,8 +18,7 @@ public class NavigatorFavoriteFilter extends NavigatorFilter { @Override public List getResult(Habbo habbo) { List resultLists = new ArrayList<>(); - List rooms = Emulator.getGameEnvironment().getRoomManager().getRoomsFavourite(habbo); - Collections.sort(rooms); + List rooms = Emulator.getGameEnvironment().getNavigatorManager().getRoomsForCategory("favorites", habbo); resultLists.add(new SearchResultList(0, "favorites", "", SearchAction.NONE, habbo.getHabboStats().navigatorWindowSettings.getListModeForCategory("favorites", ListMode.LIST), habbo.getHabboStats().navigatorWindowSettings.getDisplayModeForCategory("popular", DisplayMode.VISIBLE), rooms, true, true, DisplayOrder.ACTIVITY, -1)); return resultLists; } diff --git a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorFilter.java b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorFilter.java index bcc9767e..52475d0f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorFilter.java +++ b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorFilter.java @@ -7,6 +7,7 @@ import org.apache.commons.lang3.StringUtils; import java.lang.reflect.Method; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public abstract class NavigatorFilter { diff --git a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorHotelFilter.java b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorHotelFilter.java index a5f171e3..ff1b74b1 100644 --- a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorHotelFilter.java +++ b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorHotelFilter.java @@ -21,8 +21,9 @@ public class NavigatorHotelFilter extends NavigatorFilter { public List getResult(Habbo habbo) { boolean showInvisible = habbo.hasPermission("acc_enter_anyroom") || habbo.hasPermission(Permission.ACC_ANYROOMOWNER); List resultLists = new ArrayList<>(); + int i = 0; - resultLists.add(new SearchResultList(i, "popular", "", SearchAction.NONE, habbo.getHabboStats().navigatorWindowSettings.getListModeForCategory("popular", ListMode.fromType(Emulator.getConfig().getInt("hotel.navigator.popular.listtype"))), habbo.getHabboStats().navigatorWindowSettings.getDisplayModeForCategory("popular"), Emulator.getGameEnvironment().getRoomManager().getPopularRooms(Emulator.getConfig().getInt("hotel.navigator.popular.amount")), false, showInvisible, DisplayOrder.ORDER_NUM, -1)); + resultLists.add(new SearchResultList(i, "popular", "", SearchAction.NONE, habbo.getHabboStats().navigatorWindowSettings.getListModeForCategory("popular", ListMode.fromType(Emulator.getConfig().getInt("hotel.navigator.popular.listtype"))), habbo.getHabboStats().navigatorWindowSettings.getDisplayModeForCategory("popular"), Emulator.getGameEnvironment().getNavigatorManager().getRoomsForCategory("popular", habbo), false, showInvisible, DisplayOrder.ORDER_NUM, -1)); i++; for (Map.Entry> set : Emulator.getGameEnvironment().getRoomManager().getPopularRoomsByCategory(Emulator.getConfig().getInt("hotel.navigator.popular.category.maxresults")).entrySet()) { diff --git a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorManager.java b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorManager.java index db49d051..2767a48f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorManager.java @@ -2,6 +2,7 @@ package com.eu.habbo.habbohotel.navigation; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.users.Habbo; import gnu.trove.map.hash.THashMap; import java.lang.reflect.Method; @@ -9,6 +10,8 @@ import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -121,4 +124,41 @@ public class NavigatorManager { return null; } + + public List getRoomsForCategory(String category, Habbo habbo) { + List rooms = new ArrayList<>(); + + switch (category) { + case "my": + rooms = Emulator.getGameEnvironment().getRoomManager().getRoomsForHabbo(habbo); + break; + case "favorites": + rooms = Emulator.getGameEnvironment().getRoomManager().getRoomsFavourite(habbo); + break; + case "history_freq": + rooms = Emulator.getGameEnvironment().getRoomManager().getRoomsVisited(habbo, false, 10); + break; + case "my_groups": + rooms = Emulator.getGameEnvironment().getRoomManager().getGroupRooms(habbo, 25); + break; + case "with_rights": + rooms = Emulator.getGameEnvironment().getRoomManager().getRoomsWithRights(habbo); + break; + case "official-root": + rooms = Emulator.getGameEnvironment().getRoomManager().getPublicRooms(); + break; + case "popular": + rooms = Emulator.getGameEnvironment().getRoomManager().getPopularRooms(Emulator.getConfig().getInt("hotel.navigator.popular.amount")); + break; + case "categories": + rooms = Emulator.getGameEnvironment().getRoomManager().getRoomsPromoted(); + break; + default: + return null; + } + + Collections.sort(rooms); + + return rooms; + } } diff --git a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorPublicFilter.java b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorPublicFilter.java index 7f59ac12..49be285d 100644 --- a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorPublicFilter.java +++ b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorPublicFilter.java @@ -18,9 +18,11 @@ public class NavigatorPublicFilter extends NavigatorFilter { public List getResult(Habbo habbo) { boolean showInvisible = habbo.hasPermission("acc_enter_anyroom") || habbo.hasPermission(Permission.ACC_ANYROOMOWNER); List resultLists = new ArrayList<>(); + int i = 0; - resultLists.add(new SearchResultList(i, "official-root", "", SearchAction.NONE, habbo.getHabboStats().navigatorWindowSettings.getListModeForCategory("official-root", ListMode.THUMBNAILS), habbo.getHabboStats().navigatorWindowSettings.getDisplayModeForCategory("official-root"), Emulator.getGameEnvironment().getRoomManager().getPublicRooms(), false, showInvisible, DisplayOrder.ORDER_NUM, -1)); + resultLists.add(new SearchResultList(i, "official-root", "", SearchAction.NONE, habbo.getHabboStats().navigatorWindowSettings.getListModeForCategory("official-root", ListMode.THUMBNAILS), habbo.getHabboStats().navigatorWindowSettings.getDisplayModeForCategory("official-root"), Emulator.getGameEnvironment().getNavigatorManager().getRoomsForCategory("official-root", habbo), false, showInvisible, DisplayOrder.ORDER_NUM, -1)); i++; + for (NavigatorPublicCategory category : Emulator.getGameEnvironment().getNavigatorManager().publicCategories.values()) { if (!category.rooms.isEmpty()) { resultLists.add(new SearchResultList(i, "", category.name, SearchAction.NONE, habbo.getHabboStats().navigatorWindowSettings.getListModeForCategory(category.name, category.image), habbo.getHabboStats().navigatorWindowSettings.getDisplayModeForCategory(category.name), category.rooms, true, showInvisible, DisplayOrder.ACTIVITY, category.order)); diff --git a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorRoomAdsFilter.java b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorRoomAdsFilter.java index d11ec3f1..2e98a9c3 100644 --- a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorRoomAdsFilter.java +++ b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorRoomAdsFilter.java @@ -18,7 +18,7 @@ public class NavigatorRoomAdsFilter extends NavigatorFilter { public List getResult(Habbo habbo) { boolean showInvisible = habbo.hasPermission("acc_enter_anyroom") || habbo.hasPermission(Permission.ACC_ANYROOMOWNER); List resultList = new ArrayList<>(); - resultList.add(new SearchResultList(0, "categories", "", SearchAction.NONE, habbo.getHabboStats().navigatorWindowSettings.getListModeForCategory("categories", ListMode.LIST), habbo.getHabboStats().navigatorWindowSettings.getDisplayModeForCategory("official-root", DisplayMode.VISIBLE), Emulator.getGameEnvironment().getRoomManager().getRoomsPromoted(), false, showInvisible, DisplayOrder.ACTIVITY, 0)); + resultList.add(new SearchResultList(0, "categories", "", SearchAction.NONE, habbo.getHabboStats().navigatorWindowSettings.getListModeForCategory("categories", ListMode.LIST), habbo.getHabboStats().navigatorWindowSettings.getDisplayModeForCategory("official-root", DisplayMode.VISIBLE), Emulator.getGameEnvironment().getNavigatorManager().getRoomsForCategory("categories", habbo), false, showInvisible, DisplayOrder.ACTIVITY, 0)); return resultList; } } \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorUserFilter.java b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorUserFilter.java index 2c4e9416..997a1e5f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorUserFilter.java +++ b/src/main/java/com/eu/habbo/habbohotel/navigation/NavigatorUserFilter.java @@ -19,32 +19,30 @@ public class NavigatorUserFilter extends NavigatorFilter { public List getResult(Habbo habbo) { int i = 0; List resultLists = new ArrayList<>(); - List rooms = Emulator.getGameEnvironment().getRoomManager().getRoomsForHabbo(habbo); - Collections.sort(rooms); + + List rooms = Emulator.getGameEnvironment().getNavigatorManager().getRoomsForCategory("my", habbo); resultLists.add(new SearchResultList(i, "my", "", SearchAction.NONE, habbo.getHabboStats().navigatorWindowSettings.getListModeForCategory("my"), habbo.getHabboStats().navigatorWindowSettings.getDisplayModeForCategory("my"), rooms, true, true, DisplayOrder.ORDER_NUM, i)); i++; - List favoriteRooms = Emulator.getGameEnvironment().getRoomManager().getRoomsFavourite(habbo); - + List favoriteRooms = Emulator.getGameEnvironment().getNavigatorManager().getRoomsForCategory("favorites", habbo); if (!favoriteRooms.isEmpty()) { - Collections.sort(favoriteRooms); resultLists.add(new SearchResultList(i, "favorites", "", SearchAction.NONE, habbo.getHabboStats().navigatorWindowSettings.getListModeForCategory("favorites"), habbo.getHabboStats().navigatorWindowSettings.getDisplayModeForCategory("favorites"), favoriteRooms, true, true, DisplayOrder.ORDER_NUM, i)); i++; } - List frequentlyVisited = Emulator.getGameEnvironment().getRoomManager().getRoomsVisited(habbo, false, 10); + List frequentlyVisited = Emulator.getGameEnvironment().getNavigatorManager().getRoomsForCategory("history_freq", habbo); if (!frequentlyVisited.isEmpty()) { resultLists.add(new SearchResultList(i, "history_freq", "", SearchAction.NONE, habbo.getHabboStats().navigatorWindowSettings.getListModeForCategory("history_freq"), habbo.getHabboStats().navigatorWindowSettings.getDisplayModeForCategory("history_freq"), frequentlyVisited, true, true, DisplayOrder.ORDER_NUM, i)); i++; } - List groupRooms = Emulator.getGameEnvironment().getRoomManager().getGroupRooms(habbo, 25); + List groupRooms = Emulator.getGameEnvironment().getNavigatorManager().getRoomsForCategory("my_groups", habbo); if (!groupRooms.isEmpty()) { resultLists.add(new SearchResultList(i, "my_groups", "", SearchAction.NONE, habbo.getHabboStats().navigatorWindowSettings.getListModeForCategory("my_groups"), habbo.getHabboStats().navigatorWindowSettings.getDisplayModeForCategory("my_groups"), groupRooms, true, true, DisplayOrder.ORDER_NUM, i)); i++; } - List rightRooms = Emulator.getGameEnvironment().getRoomManager().getRoomsWithRights(habbo); + List rightRooms = Emulator.getGameEnvironment().getNavigatorManager().getRoomsForCategory("with_rights", habbo); if (!rightRooms.isEmpty()) { resultLists.add(new SearchResultList(i, "with_rights", "", SearchAction.NONE, habbo.getHabboStats().navigatorWindowSettings.getListModeForCategory("with_rights"), habbo.getHabboStats().navigatorWindowSettings.getDisplayModeForCategory("with_rights"), rightRooms, true, true, DisplayOrder.ORDER_NUM, i)); } diff --git a/src/main/java/com/eu/habbo/messages/incoming/navigator/RequestNewNavigatorRoomsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/navigator/RequestNewNavigatorRoomsEvent.java index 04bc1fa6..8db7fbe4 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/navigator/RequestNewNavigatorRoomsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/navigator/RequestNewNavigatorRoomsEvent.java @@ -17,9 +17,22 @@ public class RequestNewNavigatorRoomsEvent extends MessageHandler { String view = this.packet.readString(); String query = this.packet.readString(); + if (view.equals("query")) view = "hotel_view"; + NavigatorFilter filter = Emulator.getGameEnvironment().getNavigatorManager().filters.get(view); RoomCategory category = Emulator.getGameEnvironment().getRoomManager().getCategoryBySafeCaption(view); + if (filter == null) { + List rooms = Emulator.getGameEnvironment().getNavigatorManager().getRoomsForCategory(view, this.client.getHabbo()); + + if (rooms != null) { + List resultLists = new ArrayList<>(); + resultLists.add(new SearchResultList(0, view, query, SearchAction.NONE, this.client.getHabbo().getHabboStats().navigatorWindowSettings.getListModeForCategory(view, ListMode.LIST), this.client.getHabbo().getHabboStats().navigatorWindowSettings.getDisplayModeForCategory(view, DisplayMode.VISIBLE), rooms, true, true, DisplayOrder.ACTIVITY, -1)); + this.client.sendResponse(new NewNavigatorSearchResultsComposer(view, query, resultLists)); + return; + } + } + String filterField = "anything"; String part = query; NavigatorFilterField field = Emulator.getGameEnvironment().getNavigatorManager().filterSettings.get(filterField);