![JAR search and dependency download from the Maven repository](/logo.png)
net.intelie.live.plugins.messenger.chat.UserRoomSettingsManager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of plugin-messenger Show documentation
Show all versions of plugin-messenger Show documentation
Intelie Live Messenger Plugin
The newest version!
package net.intelie.live.plugins.messenger.chat;
import net.intelie.live.SettingsNode;
import net.intelie.live.SettingsOptions;
import net.intelie.live.SettingsRoot;
import net.intelie.live.plugins.messenger.data.UserRoomData;
public class UserRoomSettingsManager {
private static final String LASTREAD_PREFIX = "messages/";
private static final String LASTREAD_SUFFIX = "/lastRead";
private final SettingsNode nodeSettings;
private final SettingsRoot rootSettings;
public UserRoomSettingsManager(SettingsRoot rootSettings) {
this.rootSettings = rootSettings;
this.nodeSettings = this.rootSettings.home().cd("user-config");
}
public synchronized UserRoomState setRoomMuted(Integer userId, String roomId, boolean opt) {
UserRoomState userRoomState = getUserRoomState(userId, roomId);
userRoomState.setMuted(opt);
return writeUserRoomState(userId, roomId, userRoomState);
}
public synchronized UserRoomState setRoomFavorite(Integer userId, String roomId, boolean opt) {
UserRoomState userRoomState = getUserRoomState(userId, roomId);
userRoomState.setFavorite(opt);
return writeUserRoomState(userId, roomId, userRoomState);
}
public synchronized UserRoomState getUserRoomState(Integer userId, String roomId) {
UserRoomState state = nodeSettings.cd(userId.toString()).cd(roomId).get(UserRoomState.class);
if (state != null){
return state;
}
return addRoomToUserConfig(userId, roomId);
}
public synchronized UserRoomState setLastRead(Integer userId, String roomId, UserRoomData.LastReadData data) {
UserRoomState userRoomState = getUserRoomState(userId, roomId);
userRoomState.lastReadState().setTimestamp(data.getTimestamp());
userRoomState.lastReadState().setUid(data.getUid());
return writeUserRoomState(userId, roomId, userRoomState);
}
private synchronized UserRoomState addRoomToUserConfig(Integer userId, String roomId) {
Long oldLastReadTimestamp = getOldLastReadTimestampTicket(userId, roomId);
UserRoomState userRoomState = new UserRoomState(roomId);
if (oldLastReadTimestamp != null) {
userRoomState.lastReadState().setTimestamp(oldLastReadTimestamp);
}
writeUserRoomState(userId, roomId, userRoomState);
return userRoomState;
}
private UserRoomState writeUserRoomState(Integer userId, String roomId, UserRoomState state) {
SettingsOptions options = new SettingsOptions();
options = options.enableLog(false);
nodeSettings.withOptions(options, () -> {
nodeSettings.cd(userId.toString()).cd(roomId).set(state);
return null;
});
return state;
}
private Long getOldLastReadTimestampTicket(Integer userId, String roomId) {
String path = LASTREAD_PREFIX + roomId + LASTREAD_SUFFIX;
return rootSettings.privateUser(userId).cd("ui").cd(path).get(Long.class);
}
// public void setLastRead(String channel, Long timestamp) {
// lastReadSettingsNode(channel).set(timestamp);
// }
//
// private SettingsNode lastReadSettingsNode(String channel) {
// UserDef user = loggedUser.getUser();
// String path = LASTREAD_PREFIX + channel + LASTREAD_SUFFIX;
// return settings.privateUser(user.getId()).cd("ui").cd(path);
// }
//
// private Long getLastReadPlusOne(String channel) {
// Long value = lastReadSettingsNode(channel).get(Long.class);
// if (value != null)
// value += 1;
// return value;
// }
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy