mirror of
https://github.com/ZZZure/ZZZ-Plugin.git
synced 2025-12-16 05:07:46 +00:00
feat: 新增面板handler供开发者调用
This commit is contained in:
parent
73715f015f
commit
5d14c419f7
2 changed files with 117 additions and 21 deletions
|
|
@ -55,16 +55,14 @@ export const getAvatarInfoList = async (api, origin = false) => {
|
|||
};
|
||||
|
||||
/**
|
||||
* 刷新面板
|
||||
* @param {MysZZZApi} api
|
||||
* @returns {Promise<ZZZAvatarInfo[] | null>}
|
||||
* 更新面板数据
|
||||
* @param {string} uid 用户 ID
|
||||
* @param {Array} newData 新数据
|
||||
* @returns {Array} 合并后的数据
|
||||
*/
|
||||
export const refreshPanel = async api => {
|
||||
export const updatePanelData = (uid, newData) => {
|
||||
// 获取已保存数据
|
||||
const originData = getPanelData(api.uid);
|
||||
// 获取新数据
|
||||
const newData = await getAvatarInfoList(api, true);
|
||||
if (!newData) return null;
|
||||
const originData = getPanelData(uid);
|
||||
// 初始化最终数据
|
||||
const finalData = [...newData];
|
||||
// 如果有已保存的数据
|
||||
|
|
@ -77,12 +75,31 @@ export const refreshPanel = async api => {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 保存数据
|
||||
savePanelData(api.uid, finalData);
|
||||
// 格式化数据
|
||||
savePanelData(uid, finalData);
|
||||
|
||||
// 标记新数据
|
||||
finalData.forEach(item => {
|
||||
item.isNew = !!newData.find(i => i.id === item.id);
|
||||
});
|
||||
|
||||
return finalData;
|
||||
};
|
||||
|
||||
/**
|
||||
* 刷新面板
|
||||
* @param {MysZZZApi} api
|
||||
* @returns {Promise<ZZZAvatarInfo[] | null>}
|
||||
*/
|
||||
export const refreshPanel = async api => {
|
||||
// 获取新数据
|
||||
const newData = await getAvatarInfoList(api, true);
|
||||
if (!newData) return null;
|
||||
|
||||
// 合并新旧数据
|
||||
const finalData = updatePanelData(uid, newData);
|
||||
|
||||
const formattedData = finalData.map(item => new ZZZAvatarInfo(item));
|
||||
for (const item of formattedData) {
|
||||
// 下载图片资源
|
||||
|
|
@ -119,3 +136,37 @@ export const getPanel = (uid, name) => {
|
|||
if (!result) return null;
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取某个角色的面板数据(原始数据)
|
||||
* @param {string} uid
|
||||
* @param {string} name
|
||||
* @returns {ZZZAvatarInfo | null}
|
||||
*/
|
||||
export const getPanelOrigin = (uid, name) => {
|
||||
const data = getPanelData(uid);
|
||||
const id = char.aliasToID(name);
|
||||
if (!id) return null;
|
||||
// 通过 ID 获取角色数据
|
||||
const result = data.find(item => item.id === id);
|
||||
if (!result) return null;
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* 将数据数组格式化
|
||||
* @param {Array} data
|
||||
* @returns {Array<ZZZAvatarInfo>}
|
||||
*/
|
||||
export const formatPanelDatas = data => {
|
||||
return data.map(item => new ZZZAvatarInfo(item));
|
||||
};
|
||||
|
||||
/**
|
||||
* 将数据格式化
|
||||
* @param {Object} data
|
||||
* @returns {ZZZAvatarInfo}
|
||||
*/
|
||||
export const formatPanelData = data => {
|
||||
return new ZZZAvatarInfo(data);
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue