Skip to content

Commit

Permalink
feat: 统一api-proxy返回处理
Browse files Browse the repository at this point in the history
  • Loading branch information
yandadaFreedom committed Jul 25, 2023
1 parent 67b611a commit 6db4737
Show file tree
Hide file tree
Showing 11 changed files with 90 additions and 140 deletions.
15 changes: 11 additions & 4 deletions packages/api-proxy/src/index.web.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
import * as allApi from './web/api'
import promisify from './mini/promisify'
import { genFromMap } from './common/js'

export default function install (target) {
export default function install (target, options = {}) {
const {
usePromise = false, // 是否转为 promise 格式
whiteList = [], // 强制变成 promise 格式的 api
blackList = [] // 强制不变成 promise 格式的 api
} = options
const fromMap = genFromMap()

Object.keys(allApi).forEach(api => {
const promisedApi = usePromise ? promisify(allApi, whiteList, blackList) : {}
const finalApi = Object.assign({}, allApi, promisedApi)
Object.keys(finalApi).forEach(api => {
target[api] = function (...args) {
if (args.length > 0) {
const from = args.pop()
Expand All @@ -13,7 +20,7 @@ export default function install (target) {
}
}

return allApi[api].apply(target, args)
return finalApi[api].apply(target, args)
}
})
}
Expand Down
1 change: 1 addition & 0 deletions packages/api-proxy/src/mini/promisify.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ const blackList = [
'createSelectorQuery',
'createIntersectionObserver',
'hideKeyboard',
// todo 小程序支持 promise 风格调用
'stopPullDownRefresh',
'createWorker',
'pageScrollTo',
Expand Down
4 changes: 0 additions & 4 deletions packages/api-proxy/src/web/api/action-sheet/ActionSheet.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ export default class ActionSheet extends ToPromise {
tapIndex: index
}
webHandleSuccess(res, opts.success, opts.complete)
this.toPromiseResolve(res)
}
list.appendChild(sheet)
})
Expand All @@ -77,13 +76,10 @@ export default class ActionSheet extends ToPromise {
this.hide()
const err = { errMsg: 'showActionSheet:fail cancel' }
webHandleFail(err, opts.fail, opts.complete)
!opts.fail && this.toPromiseReject(err)
}

this.box.classList.add('show')
this.actionSheet.classList.add('show')

return this.toPromiseInitPromise()
}

hide () {
Expand Down
9 changes: 2 additions & 7 deletions packages/api-proxy/src/web/api/modal/Modal.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ToPromise, webHandleSuccess } from '../../../common/js'
import { webHandleSuccess } from '../../../common/js'
import '../../../common/stylus/Modal.styl'
// import { forEach } from '@didi/mpx-fetch/src/util'
// 汉字为两个字符,字母/数字为一个字符
Expand All @@ -13,9 +13,8 @@ const _getLength = (t) => {
}
return len
}
export default class Modal extends ToPromise {
export default class Modal {
constructor () {
super()
this.defaultOpts = {
title: '',
content: '',
Expand Down Expand Up @@ -110,7 +109,6 @@ export default class Modal extends ToPromise {
confirm: false
}
webHandleSuccess(result, opts.success, opts.complete)
this.toPromiseResolve(result)
}
this.confirmBtn.onclick = () => {
this.hide()
Expand All @@ -120,12 +118,9 @@ export default class Modal extends ToPromise {
confirm: true
}
webHandleSuccess(result, opts.success, opts.complete)
this.toPromiseResolve(result)
}

this.modal.classList.add('show')

return this.toPromiseInitPromise()
}

hide () {
Expand Down
36 changes: 14 additions & 22 deletions packages/api-proxy/src/web/api/pull-down/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,13 @@ function stopPullDownRefresh (options = {}) {
}
}
}
return new Promise((resolve, reject) => {
if (err) {
const res = { errMsg: `stopPullDownRefresh:fail ${err}` }
webHandleFail(res, options.fail, options.complete)
reject(res)
} else {
const res = { errMsg: 'stopPullDownRefresh:ok' }
webHandleSuccess(res, options.success, options.complete)
resolve(res)
}
})
if (err) {
const res = { errMsg: `stopPullDownRefresh:fail ${err}` }
webHandleFail(res, options.fail, options.complete)
} else {
const res = { errMsg: 'stopPullDownRefresh:ok' }
webHandleSuccess(res, options.success, options.complete)
}
}
}

Expand All @@ -54,17 +50,13 @@ function startPullDownRefresh (options = {}) {
}
}
}
return new Promise((resolve, reject) => {
if (err) {
const res = { errMsg: `startPullDownRefresh:fail ${err}` }
webHandleFail(res, options.fail, options.complete)
reject(res)
} else {
const res = { errMsg: 'startPullDownRefresh:ok' }
webHandleSuccess(res, options.success, options.complete)
resolve(res)
}
})
if (err) {
const res = { errMsg: `startPullDownRefresh:fail ${err}` }
webHandleFail(res, options.fail, options.complete)
} else {
const res = { errMsg: 'startPullDownRefresh:ok' }
webHandleSuccess(res, options.success, options.complete)
}
}
}

Expand Down
127 changes: 54 additions & 73 deletions packages/api-proxy/src/web/api/route/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,19 @@ function redirectTo (options = {}) {
return Promise.reject(res)
}
router.__mpxAction = { type: 'redirect' }
return new Promise((resolve, reject) => {
router.replace(
{
path: options.url
},
() => {
const res = { errMsg: 'redirectTo:ok' }
webHandleSuccess(res, options.success, options.complete)
resolve(res)
},
err => {
const res = { errMsg: `redirectTo:fail ${err}` }
webHandleFail(res, options.fail, options.complete)
reject(res)
}
)
})
router.replace(
{
path: options.url
},
() => {
const res = { errMsg: 'redirectTo:ok' }
webHandleSuccess(res, options.success, options.complete)
},
err => {
const res = { errMsg: `redirectTo:fail ${err}` }
webHandleFail(res, options.fail, options.complete)
}
)
}
}

Expand All @@ -53,23 +49,19 @@ function navigateTo (options = {}) {
if (options.events) {
eventChannel._addListeners(options.events)
}
return new Promise((resolve, reject) => {
router.push(
{
path: options.url
},
() => {
const res = { errMsg: 'navigateTo:ok', eventChannel }
webHandleSuccess(res, options.success, options.complete)
resolve(res)
},
err => {
const res = { errMsg: err }
webHandleFail(res, options.fail, options.complete)
reject(res)
}
)
})
router.push(
{
path: options.url
},
() => {
const res = { errMsg: 'navigateTo:ok', eventChannel }
webHandleSuccess(res, options.success, options.complete)
},
err => {
const res = { errMsg: err }
webHandleFail(res, options.fail, options.complete)
}
)
}
}

Expand All @@ -88,7 +80,6 @@ function navigateBack (options = {}) {
router.go(-delta)
const res = { errMsg: 'navigateBack:ok' }
webHandleSuccess(res, options.success, options.complete)
return Promise.resolve(res)
}
}

Expand All @@ -114,30 +105,25 @@ function reLaunch (options = {}) {
router.go(-delta)
} else {
router.__mpxAction.replaced = true
return new Promise((resolve, reject) => {
router.replace(
{
path: options.url,
query: {
reLaunchCount
}
},
() => {
const res = { errMsg: 'reLaunch:ok' }
webHandleSuccess(res, options.success, options.complete)
resolve(res)
},
err => {
const res = { errMsg: err }
webHandleFail(res, options.fail, options.complete)
!options.fail && reject(res)
router.replace(
{
path: options.url,
query: {
reLaunchCount
}
)
})
},
() => {
const res = { errMsg: 'reLaunch:ok' }
webHandleSuccess(res, options.success, options.complete)
},
err => {
const res = { errMsg: err }
webHandleFail(res, options.fail, options.complete)
}
)
}
const res = { errMsg: 'reLaunch:ok' }
webHandleSuccess(res, options.success, options.complete)
return Promise.resolve(res)
}
}

Expand Down Expand Up @@ -166,28 +152,23 @@ function switchTab (options = {}) {
router.go(-delta)
} else {
router.__mpxAction.replaced = true
return new Promise((resolve, reject) => {
router.replace(
{
path: options.url
},
() => {
const res = { errMsg: 'switchTab:ok' }
webHandleSuccess(res, options.success, options.complete)
resolve(res)
},
err => {
const res = { errMsg: err }
webHandleFail(res, options.fail, options.complete)
!options.fail && reject(res)
}
)
})
router.replace(
{
path: options.url
},
() => {
const res = { errMsg: 'switchTab:ok' }
webHandleSuccess(res, options.success, options.complete)
},
err => {
const res = { errMsg: err }
webHandleFail(res, options.fail, options.complete)
}
)
}
}
const res = { errMsg: 'switchTab:ok' }
webHandleSuccess(res, options.success, options.complete)
return Promise.resolve(res)
}
}

Expand Down
8 changes: 0 additions & 8 deletions packages/api-proxy/src/web/api/socket/SocketTask.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,9 @@ class SocketTask {
this._socket.send(data)
const res = { errMsg: 'sendSocketMessage:ok' }
webHandleSuccess(res, success, complete)
return Promise.resolve(res)
} else {
const res = { errMsg: 'sendSocketMessage:fail' }
webHandleFail(res, fail, complete)
if (!fail) {
return Promise.reject(res)
}
}
}

Expand All @@ -66,13 +62,9 @@ class SocketTask {
this._socket.close()
const res = { errMsg: 'closeSocket:ok' }
webHandleSuccess(res, success, complete)
return Promise.resolve(res)
} catch (err) {
const res = { errMsg: `closeSocket:fail ${err}` }
webHandleFail(res, fail, complete)
if (!fail) {
return Promise.reject(res)
}
}
}

Expand Down
7 changes: 0 additions & 7 deletions packages/api-proxy/src/web/api/storage/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,9 @@ function getStorage (options = {}) {
if (result) {
const res = { errMsg: 'getStorage:ok', data: data }
webHandleSuccess(res, success, complete)
return Promise.resolve(res)
} else {
const res = { errMsg: 'getStorage:fail', data: null }
webHandleFail(res, fail, complete)
return Promise.reject(res)
}
}

Expand Down Expand Up @@ -95,7 +93,6 @@ function getStorageInfo (options = {}) {
} catch (err) {
const res = { errMsg: `getStorageInfo:fail ${err}` }
webHandleFail(res, fail, complete)
return Promise.reject(res)
}
}

Expand Down Expand Up @@ -123,11 +120,9 @@ function removeStorage (options = { key: '' }) {

const res = { errMsg: 'removeStorage:ok' }
webHandleSuccess(res, success, complete)
return Promise.resolve(res)
} catch (err) {
const res = { errMsg: `removeStorage:fail ${err}` }
webHandleFail(res, fail, complete)
return Promise.reject(res)
}
}

Expand All @@ -151,11 +146,9 @@ function clearStorage (options = {}) {

const res = { errMsg: 'clearStorage:ok' }
webHandleSuccess(res, success, complete)
return Promise.resolve(res)
} catch (err) {
const res = { errMsg: `clearStorage:fail ${err}` }
webHandleFail(res, fail, complete)
return Promise.reject(res)
}
}

Expand Down
1 change: 0 additions & 1 deletion packages/api-proxy/src/web/api/system/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ function getSystemInfo (options = {}) {
const info = getSystemInfoSync()
const res = Object.assign({ errMsg: 'getSystemInfo:ok' }, info)
webHandleSuccess(res, options.success, options.complete)
return Promise.resolve(res)
}

export {
Expand Down
Loading

0 comments on commit 6db4737

Please sign in to comment.