fix: 修复多个外设无法认证的问题
refactor: 同时使用更加优雅的方式处理injection
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
import { ref } from "vue";
|
||||
import { createInjectionState } from "@vueuse/core";
|
||||
import { RemoteUpdateClient, DataClient, Board } from "@/APIClient";
|
||||
import { Common } from "@/utils/Common";
|
||||
import { isUndefined } from "lodash";
|
||||
import { AuthManager } from "@/utils/AuthManager";
|
||||
import { toFileParameterOrNull } from "./Common";
|
||||
|
||||
// 统一的板卡数据接口,扩展原有的Board类型
|
||||
export interface BoardData extends Board {
|
||||
@@ -178,10 +178,10 @@ const [useProvideBoardManager, useBoardManager] = createInjectionState(() => {
|
||||
|
||||
const uploadResult = await remoteUpdater.uploadBitstreams(
|
||||
board.ipAddr,
|
||||
Common.toFileParameterOrNull(goldBitstream),
|
||||
Common.toFileParameterOrNull(appBitstream1),
|
||||
Common.toFileParameterOrNull(appBitstream2),
|
||||
Common.toFileParameterOrNull(appBitstream3),
|
||||
toFileParameterOrNull(goldBitstream),
|
||||
toFileParameterOrNull(appBitstream1),
|
||||
toFileParameterOrNull(appBitstream2),
|
||||
toFileParameterOrNull(appBitstream3),
|
||||
);
|
||||
|
||||
if (!uploadResult) {
|
||||
|
||||
@@ -1,22 +1,50 @@
|
||||
import { type FileParameter } from "@/APIClient";
|
||||
import { isNull, isUndefined } from "lodash";
|
||||
|
||||
export namespace Common {
|
||||
export function toFileParameter(object: File): FileParameter {
|
||||
if (isNull(object) || isUndefined(object))
|
||||
throw new Error("File is Null or Undefined");
|
||||
export function toFileParameter(object: File): FileParameter {
|
||||
if (isNull(object) || isUndefined(object))
|
||||
throw new Error("File is Null or Undefined");
|
||||
return {
|
||||
data: object,
|
||||
fileName: object.name,
|
||||
};
|
||||
}
|
||||
|
||||
export function toFileParameterOrNull(
|
||||
object?: File | null,
|
||||
): FileParameter | null {
|
||||
if (isNull(object) || isUndefined(object)) return null;
|
||||
else
|
||||
return {
|
||||
data: object,
|
||||
fileName: object.name
|
||||
}
|
||||
}
|
||||
|
||||
export function toFileParameterOrNull(object?: File | null): FileParameter | null {
|
||||
if (isNull(object) || isUndefined(object)) return null;
|
||||
else return {
|
||||
data: object,
|
||||
fileName: object.name
|
||||
}
|
||||
}
|
||||
|
||||
fileName: object.name,
|
||||
};
|
||||
}
|
||||
|
||||
export function toFileParameterOrUndefined(
|
||||
object?: File | undefined,
|
||||
): FileParameter | undefined {
|
||||
if (isNull(object) || isUndefined(object)) return undefined;
|
||||
else
|
||||
return {
|
||||
data: object,
|
||||
fileName: object.name,
|
||||
};
|
||||
}
|
||||
|
||||
// 自定义 Hook:检查依赖注入值是否为空
|
||||
export function useRequiredInjection<T>(useFn: () => T | undefined): T {
|
||||
const value = useFn();
|
||||
if (value === undefined) {
|
||||
throw new Error("Missing required injection");
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
export function useOptionalInjection<T>(
|
||||
useFn: () => T | undefined,
|
||||
defaultValue: T,
|
||||
): T {
|
||||
const value = useFn();
|
||||
return value ?? defaultValue;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user