mirror of
https://github.com/GravitLauncher/Launcher
synced 2024-11-15 03:31:15 +03:00
[FIX} New API bug fixes
This commit is contained in:
parent
c90a13af71
commit
f1559183a1
11 changed files with 109 additions and 12 deletions
|
@ -1,6 +1,7 @@
|
||||||
package pro.gravit.launcher.runtime.backend;
|
package pro.gravit.launcher.runtime.backend;
|
||||||
|
|
||||||
import pro.gravit.launcher.core.LauncherNetworkAPI;
|
import pro.gravit.launcher.core.LauncherNetworkAPI;
|
||||||
|
import pro.gravit.launcher.core.api.features.AuthFeatureAPI;
|
||||||
import pro.gravit.launcher.core.backend.UserSettings;
|
import pro.gravit.launcher.core.backend.UserSettings;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -19,5 +20,24 @@ public static class AuthorizationData {
|
||||||
public String refreshToken;
|
public String refreshToken;
|
||||||
@LauncherNetworkAPI
|
@LauncherNetworkAPI
|
||||||
public long expireIn;
|
public long expireIn;
|
||||||
|
|
||||||
|
public AuthFeatureAPI.AuthToken toToken() {
|
||||||
|
return new AuthFeatureAPI.AuthToken() {
|
||||||
|
@Override
|
||||||
|
public String getAccessToken() {
|
||||||
|
return accessToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getRefreshToken() {
|
||||||
|
return refreshToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getExpire() {
|
||||||
|
return expireIn;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,8 @@ CompletableFuture<LauncherBackendAPI.ReadyProfile> downloadProfile(ClientProfile
|
||||||
AtomicReference<DownloadedDir> clientRef = new AtomicReference<>();
|
AtomicReference<DownloadedDir> clientRef = new AtomicReference<>();
|
||||||
AtomicReference<DownloadedDir> assetRef = new AtomicReference<>();
|
AtomicReference<DownloadedDir> assetRef = new AtomicReference<>();
|
||||||
AtomicReference<DownloadedDir> javaRef = new AtomicReference<>();
|
AtomicReference<DownloadedDir> javaRef = new AtomicReference<>();
|
||||||
return downloadDir(profile.getDir(), profile.getClientUpdateMatcher(), settings.view, callback).thenCompose((clientDir -> {
|
return LauncherAPIHolder.profile().changeCurrentProfile(profile)
|
||||||
|
.thenCompose(vv -> downloadDir(profile.getDir(), profile.getClientUpdateMatcher(), settings.view, callback)).thenCompose((clientDir -> {
|
||||||
clientRef.set(clientDir);
|
clientRef.set(clientDir);
|
||||||
return downloadAsset(profile.getAssetDir(), profile.getAssetUpdateMatcher(), profile.getAssetIndex(), callback);
|
return downloadAsset(profile.getAssetDir(), profile.getAssetUpdateMatcher(), profile.getAssetIndex(), callback);
|
||||||
})).thenCompose(assetDir -> {
|
})).thenCompose(assetDir -> {
|
||||||
|
@ -53,7 +54,7 @@ CompletableFuture<LauncherBackendAPI.ReadyProfile> downloadProfile(ClientProfile
|
||||||
|
|
||||||
CompletableFuture<DownloadedDir> downloadAsset(String dirName, FileNameMatcher matcher, String assetIndexString, LauncherBackendAPI.DownloadCallback callback) {
|
CompletableFuture<DownloadedDir> downloadAsset(String dirName, FileNameMatcher matcher, String assetIndexString, LauncherBackendAPI.DownloadCallback callback) {
|
||||||
Path targetDir = DirBridge.dirUpdates.resolve(dirName);
|
Path targetDir = DirBridge.dirUpdates.resolve(dirName);
|
||||||
Path assetIndexPath = targetDir.resolve("indexes").resolve(assetIndexString);
|
Path assetIndexPath = targetDir.resolve("indexes").resolve(assetIndexString+".json");
|
||||||
return LauncherAPIHolder.profile().fetchUpdateInfo(dirName).thenComposeAsync((response) -> {
|
return LauncherAPIHolder.profile().fetchUpdateInfo(dirName).thenComposeAsync((response) -> {
|
||||||
callback.onStage(LauncherBackendAPI.DownloadCallback.STAGE_ASSET_VERIFY);
|
callback.onStage(LauncherBackendAPI.DownloadCallback.STAGE_ASSET_VERIFY);
|
||||||
return verifyAssetIndex(assetIndexString, response, assetIndexPath, targetDir);
|
return verifyAssetIndex(assetIndexString, response, assetIndexPath, targetDir);
|
||||||
|
@ -116,7 +117,7 @@ CompletableFuture<DownloadedDir> downloadDir(Path targetDir, ProfileFeatureAPI.U
|
||||||
callback.onStage(LauncherBackendAPI.DownloadCallback.STAGE_HASHING);
|
callback.onStage(LauncherBackendAPI.DownloadCallback.STAGE_HASHING);
|
||||||
HashedDir realFiles = new HashedDir(targetDir, matcher, false, true);
|
HashedDir realFiles = new HashedDir(targetDir, matcher, false, true);
|
||||||
callback.onStage(LauncherBackendAPI.DownloadCallback.STAGE_DIFF);
|
callback.onStage(LauncherBackendAPI.DownloadCallback.STAGE_DIFF);
|
||||||
return realFiles.diff(updateInfo.getHashedDir(), matcher);
|
return updateInfo.getHashedDir().diff(realFiles, matcher);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
@ -165,7 +166,12 @@ private List<Downloader.SizedFile> collectFilesAndCreateDirectories(Path dir, Ha
|
||||||
List<Downloader.SizedFile> files = new ArrayList<>();
|
List<Downloader.SizedFile> files = new ArrayList<>();
|
||||||
mismatch.walk(File.separator, (path, name, entry) -> {
|
mismatch.walk(File.separator, (path, name, entry) -> {
|
||||||
if(entry.getType() == HashedEntry.Type.DIR) {
|
if(entry.getType() == HashedEntry.Type.DIR) {
|
||||||
Files.createDirectory(dir.resolve(path));
|
var dirPath = dir.resolve(path);
|
||||||
|
if(!Files.exists(dirPath)) {
|
||||||
|
Files.createDirectory(dirPath);
|
||||||
|
} else if (!Files.isDirectory(dirPath)) {
|
||||||
|
throw new IOException(String.format("%s is not a directory", path));
|
||||||
|
}
|
||||||
return HashedDir.WalkAction.CONTINUE;
|
return HashedDir.WalkAction.CONTINUE;
|
||||||
}
|
}
|
||||||
String pathFixed = path.replace(File.separatorChar, '/');
|
String pathFixed = path.replace(File.separatorChar, '/');
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
import pro.gravit.launcher.core.backend.exceptions.LauncherBackendException;
|
import pro.gravit.launcher.core.backend.exceptions.LauncherBackendException;
|
||||||
import pro.gravit.launcher.core.backend.extensions.Extension;
|
import pro.gravit.launcher.core.backend.extensions.Extension;
|
||||||
import pro.gravit.launcher.runtime.NewLauncherSettings;
|
import pro.gravit.launcher.runtime.NewLauncherSettings;
|
||||||
|
import pro.gravit.launcher.runtime.client.DirBridge;
|
||||||
import pro.gravit.launcher.runtime.client.ServerPinger;
|
import pro.gravit.launcher.runtime.client.ServerPinger;
|
||||||
import pro.gravit.launcher.runtime.debug.DebugMain;
|
import pro.gravit.launcher.runtime.debug.DebugMain;
|
||||||
import pro.gravit.launcher.runtime.managers.SettingsManager;
|
import pro.gravit.launcher.runtime.managers.SettingsManager;
|
||||||
|
@ -73,6 +74,7 @@ private void doInit() throws Exception {
|
||||||
allSettings = settingsManager.getConfig();
|
allSettings = settingsManager.getConfig();
|
||||||
backendSettings = (BackendSettings) getUserSettings("backend", (k) -> new BackendSettings());
|
backendSettings = (BackendSettings) getUserSettings("backend", (k) -> new BackendSettings());
|
||||||
permissions = new ClientPermissions();
|
permissions = new ClientPermissions();
|
||||||
|
DirBridge.dirUpdates = DirBridge.defaultUpdatesDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -102,6 +104,14 @@ public CompletableFuture<LauncherInitData> init() {
|
||||||
}, executorService);
|
}, executorService);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AuthFeatureAPI.AuthToken getAuthToken() {
|
||||||
|
return backendSettings.auth.toToken();
|
||||||
|
}
|
||||||
|
|
||||||
|
public AuthMethod getAuthMethod() {
|
||||||
|
return authMethod;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void selectAuthMethod(AuthMethod method) {
|
public void selectAuthMethod(AuthMethod method) {
|
||||||
this.authMethod = method;
|
this.authMethod = method;
|
||||||
|
@ -175,9 +185,11 @@ public ClientProfileSettings makeClientProfileSettings(ProfileFeatureAPI.ClientP
|
||||||
var settings = backendSettings.settings.get(profile.getUUID());
|
var settings = backendSettings.settings.get(profile.getUUID());
|
||||||
if(settings == null) {
|
if(settings == null) {
|
||||||
settings = new ProfileSettingsImpl((ClientProfile) profile);
|
settings = new ProfileSettingsImpl((ClientProfile) profile);
|
||||||
|
settings.backend = this;
|
||||||
|
settings.updateEnabledMods();
|
||||||
} else {
|
} else {
|
||||||
settings = settings.copy();
|
settings = settings.copy();
|
||||||
settings.initAfterGson((ClientProfile) profile, this);
|
//settings.initAfterGson((ClientProfile) profile, this);
|
||||||
}
|
}
|
||||||
return settings;
|
return settings;
|
||||||
}
|
}
|
||||||
|
@ -211,6 +223,7 @@ public CompletableFuture<List<Java>> getAvailableJava() {
|
||||||
return e;
|
return e;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
return availableJavasFuture;
|
||||||
}
|
}
|
||||||
return CompletableFuture.completedFuture(availableJavas);
|
return CompletableFuture.completedFuture(availableJavas);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
import pro.gravit.utils.helper.JavaHelper;
|
import pro.gravit.utils.helper.JavaHelper;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
public class ProfileSettingsImpl implements LauncherBackendAPI.ClientProfileSettings {
|
public class ProfileSettingsImpl implements LauncherBackendAPI.ClientProfileSettings {
|
||||||
transient ClientProfile profile;
|
transient ClientProfile profile;
|
||||||
|
@ -120,6 +121,30 @@ public JavaHelper.JavaVersion getSelectedJava() {
|
||||||
return selectedJava;
|
return selectedJava;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JavaHelper.JavaVersion getRecommendedJava() {
|
||||||
|
JavaHelper.JavaVersion result = null;
|
||||||
|
try {
|
||||||
|
for(var java : backend.getAvailableJava().get()) {
|
||||||
|
if(isRecommended(java)) {
|
||||||
|
return (JavaHelper.JavaVersion) java;
|
||||||
|
}
|
||||||
|
if(isCompatible(java)) {
|
||||||
|
if(result == null) {
|
||||||
|
result = (JavaHelper.JavaVersion) java;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(result.getMajorVersion() < java.getMajorVersion()) {
|
||||||
|
result = (JavaHelper.JavaVersion) java;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (InterruptedException | ExecutionException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setSelectedJava(LauncherBackendAPI.Java java) {
|
public void setSelectedJava(LauncherBackendAPI.Java java) {
|
||||||
selectedJava = (JavaHelper.JavaVersion) java;
|
selectedJava = (JavaHelper.JavaVersion) java;
|
||||||
|
@ -138,6 +163,7 @@ public boolean isCompatible(LauncherBackendAPI.Java java) {
|
||||||
@Override
|
@Override
|
||||||
public ProfileSettingsImpl copy() {
|
public ProfileSettingsImpl copy() {
|
||||||
ProfileSettingsImpl cloned = new ProfileSettingsImpl();
|
ProfileSettingsImpl cloned = new ProfileSettingsImpl();
|
||||||
|
cloned.backend = backend;
|
||||||
cloned.profile = profile;
|
cloned.profile = profile;
|
||||||
cloned.ram = new HashMap<>(ram);
|
cloned.ram = new HashMap<>(ram);
|
||||||
cloned.flags = new HashSet<>(flags);
|
cloned.flags = new HashSet<>(flags);
|
||||||
|
@ -155,7 +181,9 @@ public void updateEnabledMods() {
|
||||||
for(var e : view.enabled) {
|
for(var e : view.enabled) {
|
||||||
enabled.add(e.name);
|
enabled.add(e.name);
|
||||||
}
|
}
|
||||||
saveJavaPath = selectedJava.getPath().toAbsolutePath().toString();
|
if(selectedJava != null) {
|
||||||
|
saveJavaPath = selectedJava.getPath().toAbsolutePath().toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initAfterGson(ClientProfile profile, LauncherBackendImpl backend) {
|
public void initAfterGson(ClientProfile profile, LauncherBackendImpl backend) {
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
package pro.gravit.launcher.runtime.backend;
|
package pro.gravit.launcher.runtime.backend;
|
||||||
|
|
||||||
import pro.gravit.launcher.base.Launcher;
|
import pro.gravit.launcher.base.Launcher;
|
||||||
|
import pro.gravit.launcher.base.events.request.AuthRequestEvent;
|
||||||
import pro.gravit.launcher.base.profiles.ClientProfile;
|
import pro.gravit.launcher.base.profiles.ClientProfile;
|
||||||
import pro.gravit.launcher.base.profiles.ClientProfileBuilder;
|
import pro.gravit.launcher.base.profiles.ClientProfileBuilder;
|
||||||
import pro.gravit.launcher.base.profiles.PlayerProfile;
|
import pro.gravit.launcher.base.profiles.PlayerProfile;
|
||||||
|
import pro.gravit.launcher.core.api.LauncherAPIHolder;
|
||||||
import pro.gravit.launcher.core.api.features.ProfileFeatureAPI;
|
import pro.gravit.launcher.core.api.features.ProfileFeatureAPI;
|
||||||
import pro.gravit.launcher.core.backend.LauncherBackendAPI;
|
import pro.gravit.launcher.core.backend.LauncherBackendAPI;
|
||||||
import pro.gravit.launcher.runtime.client.ClientLauncherProcess;
|
import pro.gravit.launcher.runtime.client.ClientLauncherProcess;
|
||||||
|
@ -61,9 +63,14 @@ public void run(LauncherBackendAPI.RunCallback callback) {
|
||||||
builder.setUpdateExclusions(new ArrayList<>());
|
builder.setUpdateExclusions(new ArrayList<>());
|
||||||
profile = builder.createClientProfile();
|
profile = builder.createClientProfile();
|
||||||
}
|
}
|
||||||
process = new ClientLauncherProcess(clientDir.path(), assetDir.path(), settings.getSelectedJava(), clientDir.path().resolve("resourcepacks"),
|
var java = settings.getSelectedJava();
|
||||||
|
if(java == null) {
|
||||||
|
java = settings.getRecommendedJava();
|
||||||
|
}
|
||||||
|
process = new ClientLauncherProcess(clientDir.path(), assetDir.path(), java, clientDir.path().resolve("resourcepacks"),
|
||||||
profile, new PlayerProfile(backend.getSelfUser()), settings.view, backend.getSelfUser().getAccessToken(),
|
profile, new PlayerProfile(backend.getSelfUser()), settings.view, backend.getSelfUser().getAccessToken(),
|
||||||
clientDir.dir(), assetDir.dir(), javaDir == null ? null : javaDir.dir());
|
clientDir.dir(), assetDir.dir(), javaDir == null ? null : javaDir.dir(),
|
||||||
|
new AuthRequestEvent.OAuthRequestEvent(backend.getAuthToken()), backend.getAuthMethod().getName());
|
||||||
process.params.ram = (int) (settings.getReservedMemoryBytes(LauncherBackendAPI.ClientProfileSettings.MemoryClass.TOTAL) >> 20);
|
process.params.ram = (int) (settings.getReservedMemoryBytes(LauncherBackendAPI.ClientProfileSettings.MemoryClass.TOTAL) >> 20);
|
||||||
if (process.params.ram > 0) {
|
if (process.params.ram > 0) {
|
||||||
process.jvmArgs.add("-Xms" + process.params.ram + 'M');
|
process.jvmArgs.add("-Xms" + process.params.ram + 'M');
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
import pro.gravit.launcher.base.Launcher;
|
import pro.gravit.launcher.base.Launcher;
|
||||||
import pro.gravit.launcher.base.LauncherConfig;
|
import pro.gravit.launcher.base.LauncherConfig;
|
||||||
|
import pro.gravit.launcher.base.events.request.AuthRequestEvent;
|
||||||
import pro.gravit.launcher.client.ClientLauncherEntryPoint;
|
import pro.gravit.launcher.client.ClientLauncherEntryPoint;
|
||||||
import pro.gravit.launcher.client.ClientParams;
|
import pro.gravit.launcher.client.ClientParams;
|
||||||
import pro.gravit.launcher.runtime.LauncherEngine;
|
import pro.gravit.launcher.runtime.LauncherEngine;
|
||||||
|
@ -70,6 +71,12 @@ public ClientLauncherProcess(Path clientDir, Path assetDir,
|
||||||
public ClientLauncherProcess(Path clientDir, Path assetDir, JavaHelper.JavaVersion javaVersion, Path resourcePackDir,
|
public ClientLauncherProcess(Path clientDir, Path assetDir, JavaHelper.JavaVersion javaVersion, Path resourcePackDir,
|
||||||
ClientProfile profile, PlayerProfile playerProfile, OptionalView view, String accessToken,
|
ClientProfile profile, PlayerProfile playerProfile, OptionalView view, String accessToken,
|
||||||
HashedDir clientHDir, HashedDir assetHDir, HashedDir jvmHDir) {
|
HashedDir clientHDir, HashedDir assetHDir, HashedDir jvmHDir) {
|
||||||
|
this(clientDir, assetDir, javaVersion, resourcePackDir, profile, playerProfile, view, accessToken, clientHDir, assetHDir, jvmHDir, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClientLauncherProcess(Path clientDir, Path assetDir, JavaHelper.JavaVersion javaVersion, Path resourcePackDir,
|
||||||
|
ClientProfile profile, PlayerProfile playerProfile, OptionalView view, String accessToken,
|
||||||
|
HashedDir clientHDir, HashedDir assetHDir, HashedDir jvmHDir, AuthRequestEvent.OAuthRequestEvent oAuthRequestEvent, String authId) {
|
||||||
this.javaVersion = javaVersion;
|
this.javaVersion = javaVersion;
|
||||||
this.workDir = clientDir.toAbsolutePath();
|
this.workDir = clientDir.toAbsolutePath();
|
||||||
this.executeFile = IOHelper.resolveJavaBin(this.javaVersion.jvmDir);
|
this.executeFile = IOHelper.resolveJavaBin(this.javaVersion.jvmDir);
|
||||||
|
@ -78,6 +85,8 @@ public ClientLauncherProcess(Path clientDir, Path assetDir, JavaHelper.JavaVersi
|
||||||
this.params.resourcePackDir = resourcePackDir.toAbsolutePath().toString();
|
this.params.resourcePackDir = resourcePackDir.toAbsolutePath().toString();
|
||||||
this.params.assetDir = assetDir.toAbsolutePath().toString();
|
this.params.assetDir = assetDir.toAbsolutePath().toString();
|
||||||
this.params.timestamp = System.currentTimeMillis();
|
this.params.timestamp = System.currentTimeMillis();
|
||||||
|
this.params.oauth = oAuthRequestEvent;
|
||||||
|
this.params.authId = authId;
|
||||||
Path nativesPath;
|
Path nativesPath;
|
||||||
if(profile.hasFlag(ClientProfile.CompatibilityFlags.LEGACY_NATIVES_DIR)) {
|
if(profile.hasFlag(ClientProfile.CompatibilityFlags.LEGACY_NATIVES_DIR)) {
|
||||||
nativesPath = workDir.resolve("natives");
|
nativesPath = workDir.resolve("natives");
|
||||||
|
@ -120,10 +129,8 @@ private void applyClientProfile() {
|
||||||
if (params.ram > 0) {
|
if (params.ram > 0) {
|
||||||
this.jvmArgs.add("-Xmx" + params.ram + 'M');
|
this.jvmArgs.add("-Xmx" + params.ram + 'M');
|
||||||
}
|
}
|
||||||
this.params.oauth = Request.getOAuth();
|
|
||||||
if (this.params.oauth == null) {
|
if (this.params.oauth == null) {
|
||||||
throw new UnsupportedOperationException("Legacy session not supported");
|
this.params.oauth = Request.getOAuth();
|
||||||
} else {
|
|
||||||
this.params.authId = Request.getAuthId();
|
this.params.authId = Request.getAuthId();
|
||||||
this.params.oauthExpiredTime = Request.getTokenExpiredTime();
|
this.params.oauthExpiredTime = Request.getTokenExpiredTime();
|
||||||
this.params.extendedTokens = Request.getExtendedTokens();
|
this.params.extendedTokens = Request.getExtendedTokens();
|
||||||
|
|
|
@ -87,6 +87,12 @@ public OAuthRequestEvent(String accessToken, String refreshToken, long expire) {
|
||||||
this.expire = expire;
|
this.expire = expire;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public OAuthRequestEvent(AuthFeatureAPI.AuthToken token) {
|
||||||
|
this.accessToken = token.getAccessToken();
|
||||||
|
this.refreshToken = token.getRefreshToken();
|
||||||
|
this.expire = token.getExpire();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getAccessToken() {
|
public String getAccessToken() {
|
||||||
return accessToken;
|
return accessToken;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package pro.gravit.launcher.base.request;
|
package pro.gravit.launcher.base.request;
|
||||||
|
|
||||||
import pro.gravit.launcher.base.Launcher;
|
import pro.gravit.launcher.base.Launcher;
|
||||||
|
import pro.gravit.launcher.base.profiles.ClientProfile;
|
||||||
import pro.gravit.launcher.base.request.auth.*;
|
import pro.gravit.launcher.base.request.auth.*;
|
||||||
import pro.gravit.launcher.base.request.auth.password.*;
|
import pro.gravit.launcher.base.request.auth.password.*;
|
||||||
import pro.gravit.launcher.base.request.update.ProfilesRequest;
|
import pro.gravit.launcher.base.request.update.ProfilesRequest;
|
||||||
|
@ -89,6 +90,8 @@ private AuthRequest.AuthPasswordInterface convertAuthPassword(AuthMethodPassword
|
||||||
return new AuthCodePassword(oauth.redirectUrl());
|
return new AuthCodePassword(oauth.redirectUrl());
|
||||||
} else if(password instanceof AuthRequest.AuthPasswordInterface custom) {
|
} else if(password instanceof AuthRequest.AuthPasswordInterface custom) {
|
||||||
return custom;
|
return custom;
|
||||||
|
} else if(password == null) {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
|
@ -164,6 +167,11 @@ public CompletableFuture<List<ProfileFeatureAPI.ClientProfile>> getProfiles() {
|
||||||
return request.request(new ProfilesRequest()).thenApply(response -> (List) response.profiles);
|
return request.request(new ProfilesRequest()).thenApply(response -> (List) response.profiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompletableFuture<Void> changeCurrentProfile(ClientProfile profile) {
|
||||||
|
return request.request(new SetProfileRequest((pro.gravit.launcher.base.profiles.ClientProfile) profile)).thenApply(response -> null);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<UpdateInfo> fetchUpdateInfo(String dirName) {
|
public CompletableFuture<UpdateInfo> fetchUpdateInfo(String dirName) {
|
||||||
return request.request(new UpdateRequest(dirName)).thenApply(response -> new UpdateInfoData(response.hdir, response.url));
|
return request.request(new UpdateRequest(dirName)).thenApply(response -> new UpdateInfoData(response.hdir, response.url));
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
public interface ProfileFeatureAPI extends FeatureAPI {
|
public interface ProfileFeatureAPI extends FeatureAPI {
|
||||||
CompletableFuture<List<ClientProfile>> getProfiles();
|
CompletableFuture<List<ClientProfile>> getProfiles();
|
||||||
|
CompletableFuture<Void> changeCurrentProfile(ClientProfile profile);
|
||||||
CompletableFuture<UpdateInfo> fetchUpdateInfo(String dirName);
|
CompletableFuture<UpdateInfo> fetchUpdateInfo(String dirName);
|
||||||
|
|
||||||
interface UpdateInfo {
|
interface UpdateInfo {
|
||||||
|
|
|
@ -63,6 +63,7 @@ interface ClientProfileSettings {
|
||||||
void enableOptional(ProfileFeatureAPI.OptionalMod mod, ChangedOptionalStatusCallback callback);
|
void enableOptional(ProfileFeatureAPI.OptionalMod mod, ChangedOptionalStatusCallback callback);
|
||||||
void disableOptional(ProfileFeatureAPI.OptionalMod mod, ChangedOptionalStatusCallback callback);
|
void disableOptional(ProfileFeatureAPI.OptionalMod mod, ChangedOptionalStatusCallback callback);
|
||||||
Java getSelectedJava();
|
Java getSelectedJava();
|
||||||
|
Java getRecommendedJava();
|
||||||
void setSelectedJava(Java java);
|
void setSelectedJava(Java java);
|
||||||
boolean isRecommended(Java java);
|
boolean isRecommended(Java java);
|
||||||
boolean isCompatible(Java java);
|
boolean isCompatible(Java java);
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
id 'org.openjfx.javafxplugin' version '0.1.0' apply false
|
id 'org.openjfx.javafxplugin' version '0.1.0' apply false
|
||||||
}
|
}
|
||||||
group = 'pro.gravit.launcher'
|
group = 'pro.gravit.launcher'
|
||||||
version = '5.6.8'
|
version = '5.7.0-SNAPSHOT'
|
||||||
|
|
||||||
apply from: 'props.gradle'
|
apply from: 'props.gradle'
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue