From 95068879837650092b41a0c0be4cc49df76dd5f0 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Wed, 8 May 2019 13:56:43 +0800 Subject: [PATCH] fix(mp): previewImage currentIndex --- .../mp-baidu/service/api/protocols.js | 10 ++----- .../mp-toutiao/service/api/protocols.js | 11 +++----- .../helpers/normalize-preview-image-args.js | 27 +++++++++++++++++++ .../mp-weixin/service/api/protocols.js | 22 +++++---------- 4 files changed, 39 insertions(+), 31 deletions(-) create mode 100644 src/platforms/mp-weixin/helpers/normalize-preview-image-args.js diff --git a/src/platforms/mp-baidu/service/api/protocols.js b/src/platforms/mp-baidu/service/api/protocols.js index f0ab8b7c3..08fb92fc6 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 02d032842..9ff4f8de5 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 000000000..6c0f499ac --- /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 fae8acac6..697914b02 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 = [] -- GitLab