Skip to content

Commit b6fb386

Browse files
committed
Fix mod conf in installer
1 parent d85bf02 commit b6fb386

File tree

2 files changed

+43
-5
lines changed

2 files changed

+43
-5
lines changed

Website/src/activitys/TerminalActivity.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { useModConf } from "@Hooks/useModConf";
1414
const TerminalActivity = () => {
1515
const { context, extra } = useActivity<any>();
1616
const { settings } = useSettings();
17-
const { modConf, _modConf } = useModConf();
17+
const { modConf, __modConf } = useModConf();
1818
const [active, setActive] = React.useState<bool>(true);
1919

2020
const [lines, setLines] = React.useState<string[]>([]);
@@ -50,7 +50,7 @@ const TerminalActivity = () => {
5050
URL: path,
5151
BRANCH: branch,
5252
ROOTMANAGER: Shell.getRootManager(),
53-
..._modConf,
53+
...__modConf,
5454
};
5555

5656
Terminal.exec({
@@ -71,7 +71,7 @@ const TerminalActivity = () => {
7171
MMRL_VER: BuildConfig.VERSION_CODE.toString(),
7272
ZIPFILE: path,
7373
ROOTMANAGER: Shell.getRootManager(),
74-
..._modConf,
74+
...__modConf,
7575
};
7676

7777
Terminal.exec({

Website/src/hooks/useModConf.tsx

+40-2
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ export interface ModConf {
77
//cli
88
MSUCLI: string;
99
MSUBSU: string;
10-
MSURSP: string
10+
MSURSP: string;
1111
KSUCLI: string;
1212
KSUBSU: string;
13-
KSURSP: string
13+
KSURSP: string;
1414

1515
// default paths
1616
ADB: string;
@@ -77,12 +77,14 @@ export const INITIAL_MOD_CONF: ModConf = {
7777

7878
export interface ModConfContext {
7979
_modConf: ModConf;
80+
__modConf: ModConf;
8081
modConf<K extends keyof ModConf>(key: K, adds?: Record<string, any>): ModConf[K];
8182
setModConf<K extends keyof ModConf>(key: K, state: SetStateAction<ModConf[K]>, callback?: (state: ModConf[K]) => void): void;
8283
}
8384

8485
export const ModConfContext = createContext<ModConfContext>({
8586
_modConf: INITIAL_MOD_CONF,
87+
__modConf: INITIAL_MOD_CONF,
8688
modConf<K extends keyof ModConf>(key: K, adds?: Record<string, any>) {
8789
return key;
8890
},
@@ -108,6 +110,41 @@ export function formatString(template: string, object: object): string {
108110
});
109111
}
110112

113+
export function formatObjectEntries<O extends object = object>(object: O): O {
114+
const formatValue = (value: any): any => {
115+
if (typeof value === "string") {
116+
return value.replace(/\<(\w+(\.\w+)*)\>/gi, (match, key) => {
117+
const keys = key.split(".");
118+
let tempValue = object;
119+
for (const k of keys) {
120+
if (k in tempValue) {
121+
tempValue = tempValue[k];
122+
} else {
123+
return match;
124+
}
125+
}
126+
return formatValue(tempValue);
127+
});
128+
} else if (Array.isArray(value)) {
129+
return value.map((item: any) => formatValue(item));
130+
} else if (typeof value === "object" && value !== null) {
131+
const formattedObject: any = {};
132+
for (const prop in value) {
133+
formattedObject[prop] = formatValue(value[prop]);
134+
}
135+
return formattedObject;
136+
}
137+
return value;
138+
};
139+
140+
const formattedObject: any = {};
141+
for (const key in object) {
142+
const formattedValue = formatValue(object[key]);
143+
formattedObject[key] = formattedValue;
144+
}
145+
return formattedObject;
146+
}
147+
111148
export const ModConfProvider = (props: React.PropsWithChildren) => {
112149
const [modConf, setModConf] = useNativeStorage("modconf_v3", INITIAL_MOD_CONF);
113150

@@ -129,6 +166,7 @@ export const ModConfProvider = (props: React.PropsWithChildren) => {
129166
const contextValue = React.useMemo(
130167
() => ({
131168
_modConf: defaultComposer(INITIAL_MOD_CONF, modConf),
169+
__modConf: formatObjectEntries<ModConf>(defaultComposer(INITIAL_MOD_CONF, modConf)),
132170
modConf: (key, adds) => {
133171
return formatString(defaultComposer(INITIAL_MOD_CONF, modConf)[key], { ...modConf, ...adds });
134172
},

0 commit comments

Comments
 (0)