mirror of
https://github.com/crosspoint-reader/xteink-flasher.git
synced 2026-04-29 10:25:18 -07:00
Use server-side function to proxy firmware fetching
This commit is contained in:
@@ -57,7 +57,9 @@ export default class EspController {
|
||||
) => void,
|
||||
) {
|
||||
if (data.length !== 0x1000000) {
|
||||
throw `Data length must be 0x1000000, but got 0x${data.length.toString().padStart(7, "0")}`;
|
||||
throw new Error(
|
||||
`Data length must be 0x1000000, but got 0x${data.length.toString().padStart(7, "0")}`,
|
||||
);
|
||||
}
|
||||
|
||||
await this.writeData(data, 0, reportProgress);
|
||||
@@ -72,7 +74,9 @@ export default class EspController {
|
||||
) => void,
|
||||
) {
|
||||
if (data.length !== 0x2000) {
|
||||
throw `Data length must be 0x2000, but got 0x${data.length.toString().padStart(4, "0")}`;
|
||||
throw new Error(
|
||||
`Data length must be 0x2000, but got 0x${data.length.toString().padStart(4, "0")}`,
|
||||
);
|
||||
}
|
||||
|
||||
await this.writeData(data, 0xe000, reportProgress);
|
||||
@@ -102,10 +106,12 @@ export default class EspController {
|
||||
) => void,
|
||||
) {
|
||||
if (data.length > 0x640000) {
|
||||
throw `Data cannot be larger than 0x640000`;
|
||||
throw new Error(`Data cannot be larger than 0x640000`);
|
||||
}
|
||||
if (data.length < 0x320000) {
|
||||
throw `Data seems too small, are you sure this is the right file?`;
|
||||
throw new Error(
|
||||
`Data seems too small, are you sure this is the right file?`,
|
||||
);
|
||||
}
|
||||
|
||||
await this.writeData(data, 0x10000, reportProgress);
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
"use server";
|
||||
|
||||
const urls: Record<string, string> = {
|
||||
"3.0.8":
|
||||
"http://gotaserver.xteink.com/api/download/ESP32C3/V3.0.8/V3.0.8-EN.bin",
|
||||
};
|
||||
|
||||
export async function getFirmware(version: string) {
|
||||
const url = urls[version];
|
||||
|
||||
if (!url) {
|
||||
throw new Error("Unknown firmware version");
|
||||
}
|
||||
|
||||
const response = await fetch(url);
|
||||
return new Uint8Array(await response.arrayBuffer());
|
||||
}
|
||||
+2
-8
@@ -5,13 +5,7 @@ import EspController from "@/app/EspController";
|
||||
import Step from "@/components/Step/Step";
|
||||
|
||||
import styles from "./page.module.css";
|
||||
|
||||
const downloadEnglishFirmware = async () => {
|
||||
const a = await fetch(
|
||||
"http://gotaserver.xteink.com/api/download/ESP32C3/V3.0.8/V3.0.8-EN.bin",
|
||||
);
|
||||
return new Uint8Array(await a.arrayBuffer());
|
||||
};
|
||||
import { getFirmware } from "@/app/firmwareFetcher";
|
||||
|
||||
const downloadData = (data: Uint8Array, fileName: string, mimeType: string) => {
|
||||
// @ts-expect-error types say no, but browser says yes
|
||||
@@ -83,7 +77,7 @@ export default function Home() {
|
||||
updateStepData("Connect device", { status: "success" });
|
||||
|
||||
appendStep({ name: "Download firmware", status: "running", progress: -1 });
|
||||
const firmwareFile = await downloadEnglishFirmware().catch((e) => {
|
||||
const firmwareFile = await getFirmware("3.0.8").catch((e) => {
|
||||
updateStepData("Download firmware", {
|
||||
status: "failed",
|
||||
errorMessage: e.toString(),
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
"isolatedModules": true,
|
||||
"jsx": "react-jsx",
|
||||
"incremental": true,
|
||||
"noUncheckedIndexedAccess": true,
|
||||
"plugins": [
|
||||
{
|
||||
"name": "next"
|
||||
|
||||
Reference in New Issue
Block a user