RememberMe/src/main/java/com/actualplayer/rememberme/handlers/FileHandler.java

55 lines
2.0 KiB
Java

package com.actualplayer.rememberme.handlers;
import com.actualplayer.rememberme.RememberMe;
import com.actualplayer.rememberme.models.UserServer;
import com.actualplayer.rememberme.util.FileUtils;
import com.actualplayer.rememberme.util.YamlUtils;
import com.velocitypowered.api.proxy.server.RegisteredServer;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
public class FileHandler implements IRememberMeHandler {
private RememberMe rememberMe;
public FileHandler(RememberMe rememberMe) {
this.rememberMe = rememberMe;
}
public CompletableFuture<String> getLastServerName(UUID uuid) {
try {
File userFile = FileUtils.getOrCreate(rememberMe.getDataFolderPath().resolve("data"), uuid.toString() + ".yml");
UserServer userServer = YamlUtils.readFile(userFile, UserServer.class);
CompletableFuture<String> future = new CompletableFuture<>();
if(userServer == null) {
future.complete(null);
} else {
Optional<RegisteredServer> serverOpt = rememberMe.getServer().getServer(userServer.getServer());
future.complete(serverOpt.map(registeredServer -> registeredServer.getServerInfo().getName()).orElse(null));
}
return future;
} catch (IOException ex) {
return null;
}
}
public void setLastServerName(UUID uuid, String serverName) {
File userFile = FileUtils.getOrCreate(rememberMe.getDataFolderPath().resolve("data"), uuid.toString() + ".yml");
Map<String, String> userServer = new HashMap<>();
userServer.put("server", serverName);
try {
YamlUtils.writeFile(userFile, userServer);
} catch (IOException ex) {
rememberMe.getLogger().error("Failed to write server name to user file.");
}
}
}