锁定微信九宫切图失败提示
微信九宫切图失败不再向页面透出原生错误细节 微信九宫切图测试覆盖原生下载失败稳定提示 native shell 总门禁反查微信九宫切图失败边界
This commit is contained in:
@@ -7,6 +7,13 @@ const {
|
||||
normalizeShareGridQuery,
|
||||
} = require('../host-bridge/shareGrid');
|
||||
|
||||
const WECHAT_SHARE_GRID_SAVE_UNAVAILABLE_MESSAGE = '九宫切图保存失败。';
|
||||
|
||||
function rejectShareGridSaveFailure(reject, label, error) {
|
||||
console.error(`[share-grid] ${label}`, error);
|
||||
reject(new Error(WECHAT_SHARE_GRID_SAVE_UNAVAILABLE_MESSAGE));
|
||||
}
|
||||
|
||||
function downloadImage(imageUrl) {
|
||||
return new Promise((resolve, reject) => {
|
||||
wx.downloadFile({
|
||||
@@ -19,7 +26,7 @@ function downloadImage(imageUrl) {
|
||||
reject(new Error(`封面下载失败:${response.statusCode}`));
|
||||
},
|
||||
fail(error) {
|
||||
reject(new Error(error.errMsg || '封面下载失败'));
|
||||
rejectShareGridSaveFailure(reject, 'download failed', error);
|
||||
},
|
||||
});
|
||||
});
|
||||
@@ -31,7 +38,7 @@ function getImageInfo(src) {
|
||||
src,
|
||||
success: resolve,
|
||||
fail(error) {
|
||||
reject(new Error(error.errMsg || '读取封面失败'));
|
||||
rejectShareGridSaveFailure(reject, 'read image info failed', error);
|
||||
},
|
||||
});
|
||||
});
|
||||
@@ -67,7 +74,7 @@ function canvasToTempFilePath(canvas, width, height) {
|
||||
resolve(response.tempFilePath);
|
||||
},
|
||||
fail(error) {
|
||||
reject(new Error(error.errMsg || '导出切图失败'));
|
||||
rejectShareGridSaveFailure(reject, 'export tile failed', error);
|
||||
},
|
||||
});
|
||||
});
|
||||
@@ -81,7 +88,7 @@ function saveImageToAlbum(filePath) {
|
||||
resolve();
|
||||
},
|
||||
fail(error) {
|
||||
reject(new Error(error.errMsg || '保存到相册失败'));
|
||||
rejectShareGridSaveFailure(reject, 'save album failed', error);
|
||||
},
|
||||
});
|
||||
});
|
||||
@@ -194,8 +201,7 @@ function createWechatShareGridPage() {
|
||||
} catch (error) {
|
||||
console.error('[share-grid] save failed', error);
|
||||
this.setData({
|
||||
errorMessage:
|
||||
error && error.message ? error.message : '九宫切图保存失败。',
|
||||
errorMessage: WECHAT_SHARE_GRID_SAVE_UNAVAILABLE_MESSAGE,
|
||||
loading: false,
|
||||
});
|
||||
}
|
||||
@@ -208,5 +214,6 @@ function createWechatShareGridPage() {
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
WECHAT_SHARE_GRID_SAVE_UNAVAILABLE_MESSAGE,
|
||||
createWechatShareGridPage,
|
||||
};
|
||||
|
||||
@@ -46,4 +46,29 @@ describe('wechat share-grid shell page', () => {
|
||||
expect(page.data.loading).toBe(false);
|
||||
expect(page.data.errorMessage).toBe('缺少封面图。');
|
||||
});
|
||||
|
||||
test('hides downloadFile native failure details from the page', async () => {
|
||||
const consoleError = vi
|
||||
.spyOn(console, 'error')
|
||||
.mockImplementation(() => undefined);
|
||||
globalThis.wx.downloadFile = vi.fn(({ fail }) => {
|
||||
fail({ errMsg: 'private native download detail' });
|
||||
});
|
||||
const page = createPage();
|
||||
|
||||
await page.onLoad({
|
||||
imageUrl: 'https://web.test/cover.png',
|
||||
title: '九宫切图',
|
||||
publicWorkCode: 'PZ-0001',
|
||||
});
|
||||
|
||||
expect(page.data.loading).toBe(false);
|
||||
expect(page.data.errorMessage).toBe('九宫切图保存失败。');
|
||||
expect(page.data.errorMessage).not.toContain('private native download detail');
|
||||
expect(consoleError).toHaveBeenCalledWith(
|
||||
'[share-grid] download failed',
|
||||
{ errMsg: 'private native download detail' },
|
||||
);
|
||||
consoleError.mockRestore();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user