Update Vite configuration to deduplicate React and React-DOM; enhance DeviceContext with syncPeqCatalog method for improved PEQ state management; refactor LuxsinAPI to streamline PEQ filter updates; replace range input with ThumbOnlyRangeSlider in Home component for better user experience.

This commit is contained in:
yangy
2026-05-28 15:18:17 +08:00
parent e6b7dcc89c
commit ce55be295a
12 changed files with 1090 additions and 772 deletions
+11 -14
View File
@@ -248,13 +248,7 @@ export class LuxsinAPI {
}
async setPeqFilters(filters: PeqFilter[]): Promise<void> {
const payload = JSON.stringify({ peqChange: { filters } });
const encoded = encodeCustomBase64(payload);
await fetch(`${this.baseUrl}/dev/info.cgi`, {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: `json=${encodeURIComponent(encoded)}`,
});
await this.postPeqJson({ peqChange: { filters } } as PeqChangePayload);
}
/** Full peq preset: name, filters, autoPre, preamp, canDel — same encoding as legacy `upgradePeq`. */
@@ -267,24 +261,27 @@ export class LuxsinAPI {
await this.postPeqJson(body);
}
/** POST `json=<custom-base64>` — matches legacy axios `upgradePeq`. */
private async postPeqJson(body: PeqChangePayload | PeqApplyPayload): Promise<void> {
const payload = JSON.stringify(body);
const encoded = encodeCustomBase64(payload);
const encoded = encodeCustomBase64(JSON.stringify(body));
const form = new URLSearchParams();
form.set("json", encoded);
await fetch(`${this.baseUrl}/dev/info.cgi`, {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: `json=${encodeURIComponent(encoded)}`,
headers: { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" },
body: form.toString(),
});
}
/** Remove one or more headphone PEQ profiles. */
async removePeq(names: string[]): Promise<void> {
const payload = JSON.stringify({ peqRemove: names });
const encoded = encodeCustomBase64(payload);
const encoded = encodeCustomBase64(JSON.stringify({ peqRemove: names }));
const form = new URLSearchParams();
form.set("json", encoded);
await fetch(`${this.baseUrl}/dev/info.cgi`, {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" },
body: `json=${encodeURIComponent(encoded)}`,
body: form.toString(),
});
}