修复未初始化 fileDownloadProvider 的问题 (#2906)

This commit is contained in:
Glavo
2024-03-08 16:26:37 +08:00
committed by GitHub
parent c85c074eee
commit cb4cd696a0

View File

@@ -55,7 +55,6 @@ public final class DownloadProviders {
private static final MojangDownloadProvider MOJANG; private static final MojangDownloadProvider MOJANG;
private static final BMCLAPIDownloadProvider BMCLAPI; private static final BMCLAPIDownloadProvider BMCLAPI;
// private static final BMCLAPIDownloadProvider MCBBS;
public static final String DEFAULT_PROVIDER_ID = "balanced"; public static final String DEFAULT_PROVIDER_ID = "balanced";
public static final String DEFAULT_RAW_PROVIDER_ID = "bmclapi"; public static final String DEFAULT_RAW_PROVIDER_ID = "bmclapi";
@@ -69,27 +68,19 @@ public final class DownloadProviders {
MOJANG = new MojangDownloadProvider(); MOJANG = new MojangDownloadProvider();
BMCLAPI = new BMCLAPIDownloadProvider(bmclapiRoot); BMCLAPI = new BMCLAPIDownloadProvider(bmclapiRoot);
// MCBBS = new BMCLAPIDownloadProvider("https://download.mcbbs.net");
rawProviders = mapOf( rawProviders = mapOf(
pair("mojang", MOJANG), pair("mojang", MOJANG),
pair("bmclapi", BMCLAPI) pair("bmclapi", BMCLAPI)
// pair("mcbbs", MCBBS)
); );
AdaptedDownloadProvider fileProvider = new AdaptedDownloadProvider(); AdaptedDownloadProvider fileProvider = new AdaptedDownloadProvider();
fileProvider.setDownloadProviderCandidates(Arrays.asList( fileProvider.setDownloadProviderCandidates(Arrays.asList(BMCLAPI, MOJANG));
// MCBBS, BalancedDownloadProvider balanced = new BalancedDownloadProvider(MOJANG, BMCLAPI);
BMCLAPI,
MOJANG));
BalancedDownloadProvider balanced = new BalancedDownloadProvider(
MOJANG,
// MCBBS,
BMCLAPI);
providersById = mapOf( providersById = mapOf(
pair("official", new AutoDownloadProvider(MOJANG, fileProvider)), pair("official", new AutoDownloadProvider(MOJANG, fileProvider)),
pair("balanced", new AutoDownloadProvider(balanced, fileProvider)), pair("balanced", new AutoDownloadProvider(balanced, fileProvider)),
pair("mirror", new AutoDownloadProvider(BMCLAPI /* MCBBS */, fileProvider))); pair("mirror", new AutoDownloadProvider(BMCLAPI, fileProvider)));
observer = FXUtils.observeWeak(() -> { observer = FXUtils.observeWeak(() -> {
FetchTask.setDownloadExecutorConcurrency( FetchTask.setDownloadExecutorConcurrency(
@@ -108,12 +99,11 @@ public final class DownloadProviders {
.orElse(providersById.get(DEFAULT_PROVIDER_ID)); .orElse(providersById.get(DEFAULT_PROVIDER_ID));
}); });
FXUtils.onChangeAndOperate(config().downloadTypeProperty(), downloadType -> { if (!rawProviders.containsKey(config().getDownloadType())) {
if (!rawProviders.containsKey(downloadType)) { config().setDownloadType(DEFAULT_RAW_PROVIDER_ID);
config().setDownloadType(DEFAULT_RAW_PROVIDER_ID); }
return;
}
FXUtils.onChangeAndOperate(config().downloadTypeProperty(), downloadType -> {
DownloadProvider primary = Optional.ofNullable(rawProviders.get(downloadType)) DownloadProvider primary = Optional.ofNullable(rawProviders.get(downloadType))
.orElse(rawProviders.get(DEFAULT_RAW_PROVIDER_ID)); .orElse(rawProviders.get(DEFAULT_RAW_PROVIDER_ID));
fileDownloadProvider.setDownloadProviderCandidates( fileDownloadProvider.setDownloadProviderCandidates(