no message

This commit is contained in:
kuaifan 2025-05-26 16:41:14 +08:00
parent c178e36f9b
commit b3abe8af9c
3 changed files with 28 additions and 3 deletions

View File

@ -301,11 +301,30 @@ export default {
} }
}, },
/**
* 生成微应用名称
* @param config
* @returns {Promise<string>}
*/
async generateAppName(config) {
let name = config.id || 'micro-app'
if (!this.apps.find(item => item.name == name)) {
return name
}
name = `${config.id}_${await $A.getSHA256Hash(config.url, 8)}`
if (!this.apps.find(item => item.name == name)) {
return name
}
return `${config.id}_${await $A.getSHA256Hash(config.url)}`
},
/** /**
* 观察打开微应用 * 观察打开微应用
* @param config * @param config
*/ */
async observeMicroApp(config) { async observeMicroApp(config) {
config.name = await this.generateAppName(config)
if (config.url_type === 'inline_blank') { if (config.url_type === 'inline_blank') {
await this.inlineBlank(config) await this.inlineBlank(config)
return return
@ -314,6 +333,7 @@ export default {
await this.externalWindow(config) await this.externalWindow(config)
return return
} }
const app = this.apps.find(({name}) => name == config.name); const app = this.apps.find(({name}) => name == config.name);
if (app) { if (app) {
// //
@ -345,6 +365,10 @@ export default {
transparent: true, transparent: true,
keep_alive: false, keep_alive: false,
}; };
if (windowConfig.url) {
appConfig.url = windowConfig.url;
delete windowConfig.url;
}
// //
const path = `/single/apps/${appConfig.name}` const path = `/single/apps/${appConfig.name}`
const apps = (await $A.IDBArray("cacheMicroApps")).filter(item => item.name != appConfig.name); const apps = (await $A.IDBArray("cacheMicroApps")).filter(item => item.name != appConfig.name);

View File

@ -1512,14 +1512,16 @@ const timezone = require("dayjs/plugin/timezone");
/** /**
* 获取SHA256哈希值 * 获取SHA256哈希值
* @param str * @param str
* @param length
* @returns {Promise<string>} * @returns {Promise<string>}
*/ */
async getSHA256Hash(str) { async getSHA256Hash(str, length = 0) {
const encoder = new TextEncoder(); const encoder = new TextEncoder();
const data = encoder.encode(str); const data = encoder.encode(str);
const hashBuffer = await crypto.subtle.digest('SHA-256', data); const hashBuffer = await crypto.subtle.digest('SHA-256', data);
const hashArray = Array.from(new Uint8Array(hashBuffer)); const hashArray = Array.from(new Uint8Array(hashBuffer));
return hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); const hash = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
return length > 0 ? hash.slice(0, length) : hash;
}, },
}); });

View File

@ -4679,7 +4679,6 @@ export default {
$A.modalWarning(`应用「${config.id}」未安装`); $A.modalWarning(`应用「${config.id}」未安装`);
return; return;
} }
config.name = `${config.id}_${await $A.getSHA256Hash(config.url)}`
config.url = config.url.replace(/\{user_id}/g, state.userId) config.url = config.url.replace(/\{user_id}/g, state.userId)
.replace(/\{user_nickname}/g, encodeURIComponent(state.userInfo.nickname)) .replace(/\{user_nickname}/g, encodeURIComponent(state.userInfo.nickname))
.replace(/\{user_email}/g, encodeURIComponent(state.userInfo.email)) .replace(/\{user_email}/g, encodeURIComponent(state.userInfo.email))