diff --git a/src/platforms/mp-baidu/service/api/protocols.js b/src/platforms/mp-baidu/service/api/protocols.js index f0ab8b7c3ed51179cc7c09ad1a60444f5242a088..08fb92fc66e6e5aaf175a2377396dd75b2675a28 100644 --- a/src/platforms/mp-baidu/service/api/protocols.js +++ b/src/platforms/mp-baidu/service/api/protocols.js @@ -1,3 +1,4 @@ +import normalizePreviewImageArgs from '../../../mp-weixin/helpers/normalize-preview-image-args' // 不支持的 API 列表 const todos = [ 'hideKeyboard', @@ -60,14 +61,7 @@ const protocols = { }, previewImage: { args (fromArgs) { - // 处理传入索引值的情况 - const currentIndex = Number(fromArgs.current) - if (!isNaN(currentIndex)) { - const urls = fromArgs.urls && Array.isArray(fromArgs.urls) ? fromArgs.urls.concat() : [] - fromArgs.urls = urls.filter((item, index) => { - return index < currentIndex ? item !== urls[currentIndex] : true - }) - } + normalizePreviewImageArgs(fromArgs) return { indicator: false, loop: false diff --git a/src/platforms/mp-toutiao/service/api/protocols.js b/src/platforms/mp-toutiao/service/api/protocols.js index 02d03284213d391f2b514450df91ca2025ab1780..9ff4f8de5112cdcb524c04a0942a44e0e3328dd1 100644 --- a/src/platforms/mp-toutiao/service/api/protocols.js +++ b/src/platforms/mp-toutiao/service/api/protocols.js @@ -1,3 +1,5 @@ +import normalizePreviewImageArgs from '../../../mp-weixin/helpers/normalize-preview-image-args' + // 不支持的 API 列表 const todos = [ 'hideKeyboard', @@ -93,14 +95,7 @@ const protocols = { }, previewImage: { args (fromArgs) { - // 处理传入索引值的情况 - const currentIndex = Number(fromArgs.current) - if (!isNaN(currentIndex)) { - const urls = fromArgs.urls && Array.isArray(fromArgs.urls) ? fromArgs.urls.concat() : [] - fromArgs.urls = urls.filter((item, index) => { - return index < currentIndex ? item !== urls[currentIndex] : true - }) - } + normalizePreviewImageArgs(fromArgs) return { indicator: false, loop: false diff --git a/src/platforms/mp-weixin/helpers/normalize-preview-image-args.js b/src/platforms/mp-weixin/helpers/normalize-preview-image-args.js new file mode 100644 index 0000000000000000000000000000000000000000..6c0f499acd4bb93a88f7a02d60d757fda7b61851 --- /dev/null +++ b/src/platforms/mp-weixin/helpers/normalize-preview-image-args.js @@ -0,0 +1,27 @@ +export default function normalize (fromArgs) { + let currentIndex = parseInt(fromArgs.current) + if (isNaN(currentIndex)) { + return + } + const urls = fromArgs.urls + if (!Array.isArray(urls)) { + return + } + const len = urls.length + if (!len) { + return + } + if (currentIndex < 0) { + currentIndex = 0 + } else if (currentIndex >= len) { + currentIndex = len - 1 + } + if (currentIndex > 0) { + fromArgs.current = urls[currentIndex] + fromArgs.urls = urls.filter( + (item, index) => index < currentIndex ? item !== urls[currentIndex] : true + ) + } else { + fromArgs.current = urls[0] + } +} diff --git a/src/platforms/mp-weixin/service/api/protocols.js b/src/platforms/mp-weixin/service/api/protocols.js index fae8acac6620b79e907be181b5242e0e0f14faff..697914b020b91c83bcfa9a399ff9ec4f0bdd50be 100644 --- a/src/platforms/mp-weixin/service/api/protocols.js +++ b/src/platforms/mp-weixin/service/api/protocols.js @@ -1,16 +1,8 @@ -export const protocols = { - previewImage: { - args (fromArgs) { - // 处理传入索引值的情况 - const currentIndex = Number(fromArgs.current) - if (!isNaN(currentIndex)) { - const urls = fromArgs.urls && Array.isArray(fromArgs.urls) ? fromArgs.urls.concat() : [] - fromArgs.urls = urls.filter((item, index) => { - return index < currentIndex ? item !== urls[currentIndex] : true - }) - } - } - } -} -export const todos = [] +import normalizePreviewImageArgs from '../../helpers/normalize-preview-image-args' +export const protocols = { + previewImage: { + args: normalizePreviewImageArgs + } +} +export const todos = [] export const canIUses = []