Skip to content

Commit eb8da50

Browse files
authored
Merge pull request #2529 from planetarium/improve/issue-2528
Refactor player arguments
2 parents ca58113 + a87754f commit eb8da50

File tree

3 files changed

+46
-77
lines changed

3 files changed

+46
-77
lines changed

src/interfaces/config.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,31 +14,24 @@ export interface IConfig {
1414
LogSizeBytes: number;
1515
Network: string;
1616
SwapAddress: string | undefined;
17-
DataProviderUrl: string | undefined;
1817
LaunchPlayer: boolean;
1918
RemoteNodeList: string[];
2019
RemoteClientStaleTipLimit: number;
2120
DownloadBaseURL: string;
2221
UseUpdate: boolean;
23-
OnboardingPortalUrl: string;
2422
ActivationCodeUrl: string;
2523
KeystoreBackupDocumentationUrl: string;
2624
UnitySentrySampleRate: number;
2725
DiscordUrl: string;
28-
MarketServiceUrl: string;
2926
TrayOnClose: boolean;
3027
Planet: string;
3128
PlanetRegistryUrl: string;
32-
PatrolRewardServiceUrl: string;
3329
MeadPledgePortalUrl: string;
34-
SeasonPassServiceUrl: string;
35-
IAPServiceHostUrl: string;
36-
AppleMarketUrl: string;
37-
GoogleMarketUrl: string;
38-
GuildServiceUrl: string | undefined;
39-
GuildIconBucket: string | undefined;
40-
Maintenance: boolean;
4130
SwapAvailabilityCheckServiceUrl: string;
42-
ArenaServiceUrl: string;
4331
ThorSeasonBannerUrl: string | undefined;
32+
PlayerConfig: PlayerArguments;
33+
}
34+
35+
export interface PlayerArguments {
36+
[key: string]: any;
4437
}

src/stores/game.ts

Lines changed: 41 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { observable, action, computed, makeAutoObservable } from "mobx";
22
import { ipcRenderer, IpcRendererEvent } from "electron";
33
import { userConfigStore, get as getConfig } from "src/config";
44
import { RootStore } from "src/utils/useStore";
5+
import { PlayerArguments } from "../interfaces/config";
56

67
export default class GameStore {
78
@observable
@@ -56,63 +57,52 @@ export default class GameStore {
5657
const awsSinkGuid: string = ipcRenderer.sendSync(
5758
"get-aws-sink-cloudwatch-guid",
5859
);
59-
const dataProviderUrl = getConfig("DataProviderUrl");
60-
const portalUrl = getConfig("OnboardingPortalUrl");
61-
const unitySentrySampleRate = getConfig("UnitySentrySampleRate", 0);
62-
const marketServiceUrl = getConfig("MarketServiceUrl");
63-
const patrolRewardServiceUrl = getConfig("PatrolRewardServiceUrl");
64-
const seasonPassServiceUrl = getConfig("SeasonPassServiceUrl");
65-
const meadPledgePortalUrl = getConfig("MeadPledgePortalUrl");
6660
const genesisBlockPath = getConfig("GenesisBlockPath");
6761
const appProtocolVersion = getConfig("AppProtocolVersion");
68-
const IAPServiceHostUrl = getConfig("IAPServiceHostUrl");
69-
const appleMarketUrl = getConfig("AppleMarketUrl");
70-
const googleMarketUrl = getConfig("GoogleMarketUrl");
71-
const guildServiceUrl = getConfig("GuildServiceUrl");
72-
const guildIconBucket = getConfig("GuildIconBucket");
73-
const maintenance = getConfig("Maintenance", false);
7462
const planetRegistryUrl = getConfig("PlanetRegistryUrl");
75-
const arenaUrl = getConfig("ArenaServiceUrl");
76-
77-
const playerArgs = [
78-
`--private-key=${privateKey}`,
79-
`--rpc-client=true`,
80-
`--rpc-server-host=${host}`,
81-
`--rpc-server-port=${port}`,
82-
`--selected-planet-id=${planetId}`,
83-
`--genesis-block-path=${genesisBlockPath}`,
84-
`--language=${this._language}`,
85-
`--app-protocol-version=${appProtocolVersion}`,
86-
`--aws-sink-guid=${awsSinkGuid}`,
87-
`--on-boarding-host=${portalUrl}`,
88-
`--sentry-sample-rate=${unitySentrySampleRate}`,
89-
`--market-service-host=${marketServiceUrl}`,
90-
`--patrol-reward-service-host=${patrolRewardServiceUrl}`,
91-
`--season-pass-service-host=${seasonPassServiceUrl}`,
92-
`--mead-pledge-portal-url=${meadPledgePortalUrl}`,
93-
`--iap-service-host=${IAPServiceHostUrl}`,
94-
`--apple-market-url=${appleMarketUrl}`,
95-
`--google-market-url=${googleMarketUrl}`,
96-
`--arena-service-host=${arenaUrl}`,
97-
];
98-
99-
const appendIfDefined = (value: string | undefined, label: string) => {
100-
if (value !== undefined) {
101-
playerArgs.push(`--${label}=${value}`);
63+
const playerArguments = getConfig("PlayerConfig");
64+
65+
const initializePlayerArgs = (): string[] => {
66+
const args: string[] = [
67+
`--private-key=${privateKey}`,
68+
`--rpc-client`,
69+
`--rpc-server-host=${host}`,
70+
`--rpc-server-port=${port}`,
71+
`--selected-planet-id=${planetId}`,
72+
`--genesis-block-path=${genesisBlockPath}`,
73+
`--language=${this._language}`,
74+
`--app-protocol-version=${appProtocolVersion}`,
75+
`--planet-registry-url=${planetRegistryUrl}`,
76+
];
77+
78+
const appendIfDefined = (value: string | undefined, label: string) => {
79+
if (value !== undefined) {
80+
args.push(`--${label}=${value}`);
81+
}
82+
};
83+
84+
const pascalToKebabCase = (input: string): string => {
85+
return input
86+
.replace(/([a-z])([A-Z])/g, "$1-$2") // Add hyphen between lowercase and uppercase
87+
.replace(/([A-Z])([A-Z][a-z])/g, "$1-$2") // Handle consecutive uppercase letters
88+
.toLowerCase(); // Convert entire string to lowercase
89+
};
90+
91+
for (const [key, value] of Object.entries(playerArguments)) {
92+
const pascalKey = pascalToKebabCase(key);
93+
if (typeof value === "boolean") {
94+
if (value) {
95+
args.push(`--${pascalKey}`);
96+
}
97+
} else {
98+
appendIfDefined(value, pascalKey);
99+
}
102100
}
103-
};
104-
105-
appendIfDefined(dataProviderUrl, "api-server-host");
106-
if (planetId !== "0x000000000000" && planetId !== "0x100000000000") {
107-
appendIfDefined(guildServiceUrl, "guild-service-url");
108-
appendIfDefined(guildIconBucket, "guild-icon-bucket");
109-
}
110101

111-
if (maintenance) {
112-
playerArgs.push(`--maintenance=${maintenance}`);
113-
}
102+
return args;
103+
};
114104

115-
appendIfDefined(planetRegistryUrl, "planet-registry-url");
105+
const playerArgs = initializePlayerArgs();
116106

117107
ipcRenderer.send("launch game", {
118108
args: playerArgs,

src/stores/planetary.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -119,20 +119,6 @@ export default class PlanetaryStore {
119119
"OnboardingPortalUrl",
120120
this.planet.rpcEndpoints["world-boss.rest"],
121121
);
122-
if (this.planet.guildIconBucket) {
123-
configStore.set("GuildIconBucket", this.planet.guildIconBucket);
124-
} else {
125-
configStore.delete("GuildIconBucket");
126-
}
127-
if (this.planet.rpcEndpoints["guild.rest"]) {
128-
configStore.set(
129-
"GuildServiceUrl",
130-
this.planet.rpcEndpoints["guild.rest"][0],
131-
);
132-
} else {
133-
configStore.delete("GuildServiceUrl");
134-
}
135-
configStore.set("ArenaServiceUrl", this.planet.rpcEndpoints["arena.gql"]);
136122
}
137123
}
138124
}

0 commit comments

Comments
 (0)