diff --git a/packages/uni-cli-shared/components/ad.mixin.mp.js b/packages/uni-cli-shared/components/ad.mixin.mp.js
index f250d01cd34d48bbe07461e503550f6ca8a1a13a..1b59851489d17b63ed1ce7d55146146e55aca965 100644
--- a/packages/uni-cli-shared/components/ad.mixin.mp.js
+++ b/packages/uni-cli-shared/components/ad.mixin.mp.js
@@ -27,6 +27,12 @@ export default {
loadnext: {
type: [Boolean, String],
default: false
+ },
+ urlCallback: {
+ type: Object,
+ default () {
+ return {}
+ }
}
},
data () {
@@ -58,7 +64,31 @@ export default {
show () {
this.errorMessage = null
this._ad = this.selectComponent('.uniad-plugin')
- this._ad.show()
+ if (this._hasCallback()) {
+ const userCryptoManager = wx.getUserCryptoManager()
+ userCryptoManager.getLatestUserKey({
+ success: ({
+ encryptKey,
+ iv,
+ version,
+ expireTime
+ }) => {
+ this._ad.show({
+ userId: this.urlCallback.userId || '',
+ extra: this.urlCallback.extra || '',
+ encryptKey,
+ iv,
+ version,
+ expireTime
+ })
+ },
+ fail: (err) => {
+ this._dispatchEvent(EventType.Error, err)
+ }
+ })
+ } else {
+ this._ad.show()
+ }
},
_onclick () {
@@ -80,6 +110,11 @@ export default {
return result
},
+ _hasCallback () {
+ return false
+ // return (typeof this.urlCallback === 'object' && Object.keys(this.urlCallback).length > 0)
+ },
+
_onmpload (e) {
this.loading = false
this._dispatchEvent(EventType.Load, {})
@@ -87,6 +122,31 @@ export default {
_onmpclose (e) {
this._dispatchEvent(EventType.Close, e.detail)
+ if (e.detail.adsdata) {
+ const adv = e.detail.adv
+ const adsdata = e.detail.adsdata
+ const version = e.detail.version
+
+ /* eslint-disable no-undef */
+ uniCloud.callFunction({
+ name: 'uniAdCallback',
+ data: {
+ adv: adv,
+ adsdata: adsdata,
+ version: version
+ },
+ secretType: 'both',
+ success: (res) => {
+ },
+ fail: (err) => {
+ this._dispatchEvent(EventType.Error, err)
+ }
+ })
+
+ delete e.detail.adv
+ delete e.detail.adsdata
+ delete e.detail.version
+ }
},
_onmperror (e) {
diff --git a/packages/vue-cli-plugin-hbuilderx/build/webpack.nvue.conf.js b/packages/vue-cli-plugin-hbuilderx/build/webpack.nvue.conf.js
index 4f572e5037c71cc941849046b3a19a847fd0398a..97be217eea33cf3a70872553674c2fd809080151 100644
--- a/packages/vue-cli-plugin-hbuilderx/build/webpack.nvue.conf.js
+++ b/packages/vue-cli-plugin-hbuilderx/build/webpack.nvue.conf.js
@@ -13,6 +13,12 @@ const {
getTemplatePath
} = require('@dcloudio/uni-cli-shared')
const fileLoader = require('@dcloudio/uni-cli-shared/lib/file-loader')
+const {
+ compileI18nJsonStr
+} = require('@dcloudio/uni-i18n')
+const {
+ initI18nOptions
+} = require('@dcloudio/uni-cli-shared/lib/i18n')
const WebpackAppPlusNVuePlugin = process.env.UNI_USING_V3
? require('../packages/webpack-app-plus-plugin')
: require('../packages/webpack-app-plus-nvue-plugin')
@@ -226,11 +232,25 @@ if (process.env.UNI_USING_NATIVE || process.env.UNI_USING_V3_NATIVE) {
}]
// 自动化测试时,不启用androidPrivacy.json
if (!process.env.UNI_AUTOMATOR_WS_ENDPOINT) {
- const androidPrivacyPath = path.resolve(process.env.UNI_INPUT_DIR, 'androidPrivacy.json')
- if (fs.existsSync(androidPrivacyPath)) {
+ const fileName = 'androidPrivacy.json'
+ const context = path.resolve(process.env.UNI_INPUT_DIR)
+ if (fs.existsSync(path.join(context, fileName))) {
patterns.push({
- from: androidPrivacyPath,
- to: 'androidPrivacy.json'
+ from: fileName,
+ context,
+ to: fileName,
+ transform (content) {
+ const options = initI18nOptions(
+ process.env.UNI_PLATFORM,
+ process.env.UNI_INPUT_DIR,
+ false,
+ true
+ )
+ if (!options) {
+ return content
+ }
+ return compileI18nJsonStr(content.toString(), options)
+ }
})
}
}
diff --git a/packages/vue-cli-plugin-uni/lib/copy-webpack-options.js b/packages/vue-cli-plugin-uni/lib/copy-webpack-options.js
index 76d7e9e5e1228c01d7ad643ba13ffa54f7e8fbe9..4fe5c91dff03442b2db6b502b62a140dbfe213df 100644
--- a/packages/vue-cli-plugin-uni/lib/copy-webpack-options.js
+++ b/packages/vue-cli-plugin-uni/lib/copy-webpack-options.js
@@ -92,16 +92,14 @@ function getCopyWebpackPluginOptions (platformOptions, vueOptions) {
})
// 自动化测试时,不启用androidPrivacy.json
if (process.env.UNI_PLATFORM === 'app-plus' && !process.env.UNI_AUTOMATOR_WS_ENDPOINT) {
- const from = 'android*.json'
const fileName = 'androidPrivacy.json'
const context = path.resolve(process.env.UNI_INPUT_DIR)
- const options = {
- from,
- context,
- to: `[name]${CopyWebpackPluginVersion > 5 ? '' : '.'}[ext]`,
- noErrorOnMissing: true,
- transform (content, path) {
- if (path.endsWith(fileName)) {
+ if (fs.existsSync(path.join(context, fileName))) {
+ copyOptions.push({
+ from: fileName,
+ context,
+ to: fileName,
+ transform (content) {
const options = initI18nOptions(
process.env.UNI_PLATFORM,
process.env.UNI_INPUT_DIR,
@@ -113,22 +111,7 @@ function getCopyWebpackPluginOptions (platformOptions, vueOptions) {
}
return compileI18nJsonStr(content.toString(), options)
}
- return content
- }
- }
- // copy-webpack-plugin/glob-parent 存在 Bug,例如:/test/dir(1
- const globParent = require(require.resolve('glob-parent', { paths: [require.resolve('copy-webpack-plugin')] }))
- const parent = globParent(path.join(context, from))
- let canNotWatch
- if (parent !== context) {
- options.from = fileName
- if (!fs.existsSync(path.join(context, fileName))) {
- canNotWatch = true
- // console.warn(`invalid path: ${context}, can not watch ${fileName}`)
- }
- }
- if (!canNotWatch) {
- copyOptions.push(options)
+ })
}
}
return copyOptions
diff --git a/packages/webpack-uni-mp-loader/lib/plugin/mp-weixin-uniad-app.json.js b/packages/webpack-uni-mp-loader/lib/plugin/mp-weixin-uniad-app.json.js
index 4417a5d1eca1a9f17a58eb467271dfdbcf05da9d..ab1511d90624d89a3c0cc2ff908a5c5dca0dacbf 100644
--- a/packages/webpack-uni-mp-loader/lib/plugin/mp-weixin-uniad-app.json.js
+++ b/packages/webpack-uni-mp-loader/lib/plugin/mp-weixin-uniad-app.json.js
@@ -4,8 +4,8 @@ module.exports = function (appJson) {
}
if (!appJson.plugins['uni-ad']) {
appJson.plugins['uni-ad'] = {
- version: '1.1.0',
- provider: 'wx999bf02c8e05dfc9'
+ version: '1.0.0',
+ provider: 'wxf72d316417b6767f'
}
}
if (!appJson.plugins['coral-adv']) {
diff --git a/src/core/runtime/wrapper/util.js b/src/core/runtime/wrapper/util.js
index 4ffa28caa98c22c90e5f2132e7b25b619156c066..ec1a8ba366ebce2a7d77b89ba8c2add2a662eb53 100644
--- a/src/core/runtime/wrapper/util.js
+++ b/src/core/runtime/wrapper/util.js
@@ -142,7 +142,7 @@ export function initData (vueOptions, context) {
try {
// 对 data 格式化
data = JSON.parse(JSON.stringify(data))
- } catch (e) {}
+ } catch (e) { }
}
if (!isPlainObject(data)) {
@@ -332,7 +332,7 @@ function wrapper (event) {
// TODO 又得兼容 mpvue 的 mp 对象
try {
event.mp = JSON.parse(JSON.stringify(event))
- } catch (e) {}
+ } catch (e) { }
event.stopPropagation = noop
event.preventDefault = noop
@@ -413,7 +413,7 @@ function getExtraValue (vm, dataPathsArray) {
return context
}
-function processEventExtra (vm, extra, event) {
+function processEventExtra (vm, extra, event, __args__) {
const extraObj = {}
if (Array.isArray(extra) && extra.length) {
@@ -436,11 +436,7 @@ function processEventExtra (vm, extra, event) {
if (dataPath === '$event') { // $event
extraObj['$' + index] = event
} else if (dataPath === 'arguments') {
- if (event.detail && event.detail.__args__) {
- extraObj['$' + index] = event.detail.__args__
- } else {
- extraObj['$' + index] = [event]
- }
+ extraObj['$' + index] = event.detail ? event.detail.__args__ || __args__ : __args__
} else if (dataPath.indexOf('$event.') === 0) { // $event.target.value
extraObj['$' + index] = vm.__get_value(dataPath.replace('$event.', ''), event)
} else {
@@ -467,6 +463,12 @@ function getObjByArray (arr) {
function processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) {
let isCustomMPEvent = false // wxcomponent 组件,传递原始 event 对象
+
+ // fixed 用户直接触发 mpInstance.triggerEvent
+ const __args__ = isPlainObject(event.detail)
+ ? event.detail.__args__ || [event.detail]
+ : [event.detail]
+
if (isCustom) { // 自定义事件
isCustomMPEvent = event.currentTarget &&
event.currentTarget.dataset &&
@@ -475,11 +477,11 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam
if (isCustomMPEvent) {
return [event]
}
- return event.detail.__args__ || event.detail
+ return __args__
}
}
- const extraObj = processEventExtra(vm, extra, event)
+ const extraObj = processEventExtra(vm, extra, event, __args__)
const ret = []
args.forEach(arg => {
@@ -488,7 +490,7 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam
ret.push(event.target.value)
} else {
if (isCustom && !isCustomMPEvent) {
- ret.push(event.detail.__args__[0])
+ ret.push(__args__[0])
} else { // wxcomponent 组件或内置组件
ret.push(event)
}
diff --git a/src/core/service/api/ui/create-selector-query.js b/src/core/service/api/ui/create-selector-query.js
index 06243900425bc387dbb502afc33047f456b81321..37c6fe4ffd8e03d2b0a85cc4bd9ce0b333a70e56 100644
--- a/src/core/service/api/ui/create-selector-query.js
+++ b/src/core/service/api/ui/create-selector-query.js
@@ -92,6 +92,7 @@ class SelectorQuery {
this._page = page
this._queue = []
this._queueCb = []
+ this._nodesRef = null
}
exec (callback) {
@@ -110,6 +111,8 @@ class SelectorQuery {
})
isFn(callback) && callback.call(this, res)
})
+
+ return this._nodesRef
}
['in'] (component) {
@@ -119,15 +122,15 @@ class SelectorQuery {
}
select (selector) {
- return new NodesRef(this, this._component, selector, true)
+ return (this._nodesRef = new NodesRef(this, this._component, selector, true))
}
selectAll (selector) {
- return new NodesRef(this, this._component, selector, false)
+ return (this._nodesRef = new NodesRef(this, this._component, selector, false))
}
selectViewport () {
- return new NodesRef(this, 0, '', true)
+ return (this._nodesRef = new NodesRef(this, 0, '', true))
}
_push (selector, component, single, fields, callback) {
diff --git a/src/platforms/h5/service/api/device/clipboard.js b/src/platforms/h5/service/api/device/clipboard.js
index cb5d416ef11551afb269c213ca9cb0dcd8664dd8..4f473b41be85fbd74758295237ad08783ec24954 100644
--- a/src/platforms/h5/service/api/device/clipboard.js
+++ b/src/platforms/h5/service/api/device/clipboard.js
@@ -26,8 +26,8 @@ export function setClipboardData ({
textarea.style.zIndex = '-9999'
document.body.appendChild(textarea)
textarea.value = data
- textarea.focus()
textarea.select()
+ textarea.setSelectionRange(0, textarea.value.length)
const result = document.execCommand('Copy', false, null)
textarea.blur()
if (result) {
diff --git a/src/platforms/h5/view/components/map/index.vue b/src/platforms/h5/view/components/map/index.vue
index 5131d395576a4b684df53f5164a869223a4394ac..e7ed397fb670df598281ca4b798bd22a3ac9a1ca 100644
--- a/src/platforms/h5/view/components/map/index.vue
+++ b/src/platforms/h5/view/components/map/index.vue
@@ -3,13 +3,17 @@
:id="id"
ref="mapContainer"
v-on="$listeners"
- @touchend="handleAMapClick"
>