fixed session
This commit is contained in:
parent
4221587d5b
commit
6e4886b35e
1
.gitignore
vendored
1
.gitignore
vendored
@ -9,3 +9,4 @@ target
|
||||
.DS_Store
|
||||
*.log
|
||||
plans
|
||||
.codex
|
||||
@ -178,8 +178,8 @@ public class HttpServerApplication {
|
||||
|
||||
List<SearchResultItem> results = forumRepository.searchMessages(userId, searchText, forumId);
|
||||
|
||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
||||
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||
|
||||
Responses.html(ctx.exchange(), 200, Pages.searchResultsPage(
|
||||
@ -336,8 +336,8 @@ public class HttpServerApplication {
|
||||
forumRepository.putHistoryRecord(userId, 0L);
|
||||
List<ForumSummary> forums = forumRepository.listActiveForums();
|
||||
Map<Long, Integer> newCounts = forumRepository.getNewMessagesCountByUserId(userId);
|
||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
||||
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||
Responses.html(ctx.exchange(), 200, Pages.forumPage(username, forums, newCounts, loggedUsersCount, loggedUsers, pmStats));
|
||||
});
|
||||
@ -356,8 +356,8 @@ public class HttpServerApplication {
|
||||
String soundSetting = (soundRaw == null) ? "soundon" : String.valueOf(soundRaw);
|
||||
String error = (String) session.getAttribute(MEMBER_ERROR_KEY);
|
||||
session.setAttribute(MEMBER_ERROR_KEY, null);
|
||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
||||
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||
Responses.html(
|
||||
ctx.exchange(),
|
||||
@ -383,8 +383,8 @@ public class HttpServerApplication {
|
||||
session.setAttribute(CURRENT_PAGE_KEY, "chat");
|
||||
String username = String.valueOf(session.getAttribute(AUTH_USER_KEY));
|
||||
long userId = parseLong(session.getAttribute(AUTH_USER_ID_KEY), -1L);
|
||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
||||
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||
Responses.html(ctx.exchange(), 200, Pages.chatPage(username, loggedUsersCount, loggedUsers, pmStats));
|
||||
});
|
||||
@ -423,8 +423,8 @@ public class HttpServerApplication {
|
||||
List<PrivateThreadSummary> threads = totalRows == 0 ? List.of() : allThreads.subList(fromIdx, toIdx);
|
||||
int rowsFrom = totalRows == 0 ? 0 : fromIdx + 1;
|
||||
int rowsTo = toIdx;
|
||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
||||
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||
Responses.html(
|
||||
ctx.exchange(),
|
||||
@ -494,8 +494,8 @@ public class HttpServerApplication {
|
||||
String toUsername = privateMessageRepository.usernameById(toUser);
|
||||
String error = valueOrDefault((String) session.getAttribute(PM_ERROR_KEY), "");
|
||||
session.setAttribute(PM_ERROR_KEY, null);
|
||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
||||
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||
Responses.html(ctx.exchange(), 200, Pages.newPmPage(username, toUser, toUsername, error, loggedUsersCount, loggedUsers, pmStats));
|
||||
});
|
||||
@ -511,8 +511,8 @@ public class HttpServerApplication {
|
||||
String username = String.valueOf(session.getAttribute(AUTH_USER_KEY));
|
||||
String error = valueOrDefault((String) session.getAttribute(NEW_THREAD_ERROR_KEY), "");
|
||||
session.setAttribute(NEW_THREAD_ERROR_KEY, null);
|
||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
||||
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||
Responses.html(ctx.exchange(), 200, Pages.newThreadPage(username, error, loggedUsersCount, loggedUsers, pmStats));
|
||||
});
|
||||
@ -607,8 +607,8 @@ public class HttpServerApplication {
|
||||
int rowsTo = toIdx;
|
||||
String error = valueOrDefault((String) session.getAttribute(PM_ERROR_KEY), "");
|
||||
session.setAttribute(PM_ERROR_KEY, null);
|
||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
||||
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||
Responses.html(
|
||||
ctx.exchange(),
|
||||
@ -791,8 +791,8 @@ public class HttpServerApplication {
|
||||
}
|
||||
ForumDisplayView view = paginate(filtered, pageNo, perPage, searchText, showType, showImg, sortBy, sortType);
|
||||
|
||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
||||
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||
MessageRenderSettings renderSettings = settingsRepository.loadMessageRenderSettings();
|
||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||
Responses.html(
|
||||
@ -1315,8 +1315,8 @@ public class HttpServerApplication {
|
||||
tableName = "";
|
||||
}
|
||||
|
||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
||||
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||
Responses.html(
|
||||
ctx.exchange(),
|
||||
|
||||
@ -2,8 +2,10 @@ package cz.kamma.fabka.session;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@ -75,6 +77,26 @@ public class SessionManager {
|
||||
return values;
|
||||
}
|
||||
|
||||
public int countDistinctAttributeValues(String attributeKey) {
|
||||
return distinctSessionAttributeValues(attributeKey).size();
|
||||
}
|
||||
|
||||
public List<String> distinctSessionAttributeValues(String attributeKey) {
|
||||
cleanupExpired();
|
||||
Set<String> values = new LinkedHashSet<>();
|
||||
for (SessionData session : sessions.values()) {
|
||||
Object value = session.getAttribute(attributeKey);
|
||||
if (value == null) {
|
||||
continue;
|
||||
}
|
||||
String asString = String.valueOf(value).trim();
|
||||
if (!asString.isBlank()) {
|
||||
values.add(asString);
|
||||
}
|
||||
}
|
||||
return new ArrayList<>(values);
|
||||
}
|
||||
|
||||
public List<SessionData> activeSessions() {
|
||||
cleanupExpired();
|
||||
return new ArrayList<>(sessions.values());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user