|
@@ -14,22 +14,7 @@ import {baseURL} from "@/dbo/local";
|
|
|
|
|
|
const global = window as any;
|
|
|
|
|
|
-global.getImageCallback = () => {
|
|
|
- console.log("原始getImageCallback");
|
|
|
-};
|
|
|
-global.getSceneStoreCallback = () => {
|
|
|
- console.log("原始getSceneStoreCallback");
|
|
|
-};
|
|
|
-global.setSceneStoreCallback = () => {
|
|
|
- console.log("原始setSceneStoreCallback");
|
|
|
-};
|
|
|
-global.uploadImageCallback = () => {
|
|
|
- console.log("原始uploadImageCallback");
|
|
|
-};
|
|
|
-global.downloadImageCallback = () => {
|
|
|
- console.log("原始downloadImageCallback");
|
|
|
-};
|
|
|
-
|
|
|
+let count = 0;
|
|
|
export const api =
|
|
|
import.meta.env.DEV && !global.android
|
|
|
? // const api = import.meta.env.DEV
|
|
@@ -52,6 +37,7 @@ export const api =
|
|
|
},
|
|
|
async downloadImage(file) {
|
|
|
window.open(URL.createObjectURL(file));
|
|
|
+ return true;
|
|
|
},
|
|
|
async getFile(url) {
|
|
|
if (url.includes(baseURL)) {
|
|
@@ -60,7 +46,6 @@ export const api =
|
|
|
url = url.trim();
|
|
|
const data = await axios.get(url, { responseType: "blob" });
|
|
|
const base64 = await blobToBase64(data.data);
|
|
|
- console.log("请求url:" + url, "返回:" + base64.substring(0, 20))
|
|
|
return base64
|
|
|
},
|
|
|
async closePage() {
|
|
@@ -68,23 +53,18 @@ export const api =
|
|
|
},
|
|
|
}
|
|
|
: {
|
|
|
- // async setStore(data) {
|
|
|
- // return axios.post("sceneStore", data)
|
|
|
- // },
|
|
|
- // async getStore() {
|
|
|
- // return (await axios.get("/attach/sceneStore")).data
|
|
|
- // },
|
|
|
setStore(data) {
|
|
|
return new Promise((resolve) => {
|
|
|
console.log("调用setSceneStore参数", JSON.stringify(data));
|
|
|
- global.android.setSceneStore(
|
|
|
- params.m + "/store.json",
|
|
|
- JSON.stringify(data)
|
|
|
- );
|
|
|
global.setSceneStoreCallback = (data) => {
|
|
|
console.log("setSceneStoreCallback返回", data);
|
|
|
resolve(data);
|
|
|
};
|
|
|
+ global.android.setSceneStore(
|
|
|
+ params.m + "/store.json",
|
|
|
+ JSON.stringify(data),
|
|
|
+ "setSceneStoreCallback"
|
|
|
+ );
|
|
|
});
|
|
|
},
|
|
|
getStore() {
|
|
@@ -94,24 +74,26 @@ export const api =
|
|
|
console.log("getSceneStoreCallback返回", data);
|
|
|
resolve(data);
|
|
|
};
|
|
|
- global.android.getSceneStore(params.m + "/store.json");
|
|
|
+ global.android.getSceneStore(params.m + "/store.json", "getSceneStoreCallback");
|
|
|
});
|
|
|
},
|
|
|
getFile(fileUrl: string) {
|
|
|
fileUrl = fileUrl.trim();
|
|
|
if (import.meta.env.DEV) {
|
|
|
return new Promise<string>((resolve) => {
|
|
|
- global.getImageCallback = (base64) => {
|
|
|
- console.error("getImageCallback返回");
|
|
|
- // console.error("getFile", fileUrl, base64)
|
|
|
+ const apiName = `getImageCallback${count++}`
|
|
|
+ global[apiName] = (base64) => {
|
|
|
+ console.error("请求url:" + fileUrl, "返回:" + base64.substring(0, 60))
|
|
|
resolve(base64);
|
|
|
+ delete global[apiName]
|
|
|
};
|
|
|
+ console.error("请求原始url:" + fileUrl)
|
|
|
if (fileUrl.includes(params.m)) {
|
|
|
fileUrl = fileUrl.substring(fileUrl.indexOf(params.m) + params.m.length)
|
|
|
}
|
|
|
fileUrl = new URL(fileUrl, "http://www.a.com").pathname
|
|
|
- global.android.getImage(params.m + fileUrl);
|
|
|
- console.log(global, global.getImageCallback);
|
|
|
+ console.error("处理后url:" + fileUrl)
|
|
|
+ global.android.getImage(params.m + fileUrl, apiName);
|
|
|
});
|
|
|
} else {
|
|
|
return Promise.resolve(fileUrl);
|
|
@@ -119,28 +101,35 @@ export const api =
|
|
|
},
|
|
|
uploadImage(file: File) {
|
|
|
return new Promise<string>(async (resolve) => {
|
|
|
- global.uploadImageCallback = (data) => {
|
|
|
+ const apiName = `uploadImageCallback${count++}`
|
|
|
+ global[apiName] = (data) => {
|
|
|
console.log("上传图片成功,返回路径为:", data)
|
|
|
resolve(data);
|
|
|
+ delete global[apiName]
|
|
|
}
|
|
|
const data = await blobToBase64(file);
|
|
|
// console.log("上传图片", params.m + "/" + file.name, "参数:", data);
|
|
|
- global.android.uploadImage(params.m + "/" + file.name, data);
|
|
|
+ global.android.uploadImage(params.m + "/" + file.name, data, apiName);
|
|
|
});
|
|
|
},
|
|
|
downloadImage(file: File) {
|
|
|
- return new Promise(async (resolve) => {
|
|
|
- global.downloadImageCallback = resolve;
|
|
|
+ return new Promise<boolean>(async (resolve) => {
|
|
|
+ const apiName = `downloadImageCallback${count++}`
|
|
|
+ global[apiName] = () => {
|
|
|
+ console.log("已成功下载")
|
|
|
+ resolve(true);
|
|
|
+ delete global[apiName]
|
|
|
+ }
|
|
|
const data = await blobToBase64(file);
|
|
|
// file为base64
|
|
|
console.log("下载图片", file.name);
|
|
|
- global.android.downloadImage(file.name, data);
|
|
|
+ global.android.downloadImage(file.name, data, apiName);
|
|
|
});
|
|
|
},
|
|
|
closePage() {
|
|
|
return new Promise((resolve) => {
|
|
|
global.closeWebViewCallback = resolve;
|
|
|
- global.android.closeWebView();
|
|
|
+ global.android.closeWebView('closeWebViewCallback');
|
|
|
});
|
|
|
},
|
|
|
};
|
|
@@ -182,7 +171,9 @@ export const downloadImage = async (
|
|
|
? (await axios.get(data, { responseType: "blob" })).data
|
|
|
: data;
|
|
|
const file = new File([blob], name, { type: "image/jpeg" });
|
|
|
- await api.downloadImage(file);
|
|
|
+
|
|
|
+
|
|
|
+ return await api.downloadImage(file);
|
|
|
};
|
|
|
|
|
|
const syncSceneStore = () => {
|