Skip to content

Commit

Permalink
feat: wechat
Browse files Browse the repository at this point in the history
  • Loading branch information
mengxinssfd committed Oct 29, 2022
1 parent 65f11aa commit 64b23dc
Show file tree
Hide file tree
Showing 10 changed files with 143 additions and 2 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
- [`request-template`](packages/request-template) 基础请求封装
- [`request-template/axios`](packages/axios) `axios` 版请求封装
- [`request-template/vue3-hooks`](packages/vue3-hooks) `vue3 hooks` 式封装
- [`request-template/wechat`](packages/wechat) `wechat` 版请求封装
2 changes: 1 addition & 1 deletion jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ module.exports = {
statements: 50,
},
},
collectCoverageFrom: ['packages/**/src/**.ts', '!**/packages/**/dist/**'],
collectCoverageFrom: ['packages/**/src/**.ts', '!**/packages/**/dist/**', '!**/packages/wechat/**'],
transform: {
'^.+\\.tsx?$': [
'ts-jest',
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
"fs-extra": "^10.1.0",
"jest": "^29.2.1",
"minimist": "^1.2.6",
"miniprogram-api-typings": "^3.6.0",
"npm-run-all": "^4.1.5",
"prettier": "^2.7.1",
"rimraf": "^3.0.2",
Expand Down
8 changes: 8 additions & 0 deletions packages/wechat/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# 请求模版封装:微信版

## 安装方法

```
npm intall @request-template/wechat
```

7 changes: 7 additions & 0 deletions packages/wechat/api-extractor.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extends": "../../api-extractor.json",
"mainEntryPointFilePath": "./dist/packages/<unscopedPackageName>/src/index.d.ts",
"dtsRollup": {
"publicTrimmedFilePath": "./dist/request-template-vue3-hooks.d.ts"
}
}
41 changes: 41 additions & 0 deletions packages/wechat/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"name": "@request-template/wechat",
"version": "1.0.0",
"description": "请求模板封装-微信版",
"main": "dist/request-template-wechat.esm-bundler.js",
"types": "dist/request-template-wechat.d.ts",
"buildOptions": {
"filename": "request-template-wechat",
"formats": [
"esm-bundler",
"cjs"
]
},
"sideEffects": false,
"files": [
"dist/*",
"CHANGELOG.md",
"README.md"
],
"publishConfig": {
"access": "public"
},
"scripts": {},
"repository": {
"type": "git",
"url": "git+https://github.com/mengxinssfd/request-template.git"
},
"author": "DYH",
"license": "MIT",
"bugs": {
"url": "https://github.com/mengxinssfd/request-template/issues"
},
"homepage": "https://github.com/mengxinssfd/request-template#readme",
"devDependencies": {
"axios": "^0.26.1",
"request-template": "^2.0.0"
},
"peerDependencies": {
"request-template": "^2.0.0"
}
}
64 changes: 64 additions & 0 deletions packages/wechat/src/WechatRequestTemplate.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import { Context, CustomConfig, RequestTemplate } from 'request-template';

export interface WechatCustomConfig extends CustomConfig {
loading?: boolean;
showSuccessMsg?: boolean;
successMsg?: string;
}

export class WechatRequestTemplate<
CC extends WechatCustomConfig = WechatCustomConfig,
> extends RequestTemplate<CC> {
protected isCancel(value: any) {
return value?.errMsg === 'request:fail abort';
}

protected fetch(ctx) {
const baseConfig = this.globalConfigs.requestConfig;
const config = ctx.requestConfig;

const method = config.method || baseConfig.method;
return new Promise((resolve, reject) => {
const task = wx.request({
url: (config.baseURL || baseConfig.baseURL) + (config.url || baseConfig.url),
method,
data:
method === 'get'
? { ...baseConfig.params, ...config.params }
: { ...baseConfig.data, ...config.data },
header: { ...baseConfig.headers, ...config.headers },
success: resolve,
fail: reject,
});
// 注册取消事件
this.registerCanceler(ctx, task.abort.bind(task));
}) as any;
}

// eslint-disable-next-line
protected handleCanceler(_ctx) {}

protected beforeRequest(ctx: Context<CC>) {
// 复用基础模板逻辑
super.beforeRequest(ctx);

// 未设置showSuccessMsg时,且非get请求则全部显示请求成功信息
if (ctx.requestConfig.method !== 'get' && ctx.customConfig.showSuccessMsg === undefined) {
ctx.customConfig.showSuccessMsg = true;
}

// 全局开启loading
if (ctx.customConfig.loading) {
wx.showLoading({ title: 'LOADING...' });
}
}

// 关闭loading
protected afterRequest(ctx) {
super.afterRequest(ctx); // 复用基础模板逻辑
// 加个定时器避免请求太快,loading一闪而过
setTimeout(() => {
wx.hideLoading();
}, 200);
}
}
1 change: 1 addition & 0 deletions packages/wechat/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './WechatRequestTemplate';
14 changes: 14 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,11 @@
"paths": {
"request-template": ["packages/request-template/src"],
"@request-template/*": ["packages/*/src"]
}
},
// request-template-wechat 微信wx类型声明
// 加上了微信的类型声明文件后,jest的全局声明就失效了,所以加上jest
"types": ["miniprogram-api-typings", "jest"],
"skipLibCheck": true
},
"include": ["packages/*/src", "packages/*/__tests__"]
}

0 comments on commit 64b23dc

Please sign in to comment.