@kbapp/js-bridge 0.4.0-alpha.0 → 0.4.2-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.MD +39 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/lib/generate-kb-sign.d.ts +9 -0
- package/dist/lib/generate-kb-sign.js +75 -0
- package/dist/lib/trigger-login.d.ts +1 -11
- package/dist/lib/trigger-login.js +1 -11
- package/package.json +2 -3
package/README.MD
CHANGED
|
@@ -68,12 +68,51 @@ defineComponents({
|
|
|
68
68
|
| invokeShareModal | 主动唤起更多分享模态框 |
|
|
69
69
|
| sharePoster | 分享海报 |
|
|
70
70
|
| getAppLoginInfo | 获取用户登录信息 |
|
|
71
|
+
| generateKBSign | 生成 kbsign |
|
|
71
72
|
|
|
72
73
|
| 枚举 | 说明 |
|
|
73
74
|
| ------------- | ---------------- |
|
|
74
75
|
| JSBridgeCode | kbapp 桥接状态码 |
|
|
75
76
|
| AppLoginModel | 登录信息 model |
|
|
76
77
|
|
|
78
|
+
### 登录设计
|
|
79
|
+
|
|
80
|
+
以小程序运行逻辑参考
|
|
81
|
+
|
|
82
|
+
#### 如果是点击某个按钮再执行登录的情况
|
|
83
|
+
|
|
84
|
+
提供装饰器, 注入回调函数
|
|
85
|
+
|
|
86
|
+
```js
|
|
87
|
+
const onTapSomeButton = decorateLogin(() => {
|
|
88
|
+
// Todo someting
|
|
89
|
+
})
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
该装饰器执行逻辑为如果未登录, 则执行登录操作(跳转到登录页面, 登录成功后回退到当前页), 并直接抛出异常, 不做 _监听登录成功后执行回调函数_ 操作
|
|
93
|
+
|
|
94
|
+
> 那岂不是用户登陆完成后回到当页面还需与再点一下
|
|
95
|
+
|
|
96
|
+
没错, 的确要这么设计, 原因是为了解 如果点击了 2 个通过装饰器包装的按钮, 登陆成功后, 2 个按钮的回调事件将会全部执行(其实也有办法解决, 只是多点代码) 这种情况, 测试较真的话, 真是个问题
|
|
97
|
+
|
|
98
|
+
#### 如果是某个组件/页面加载的时候就得登录才能正常操作
|
|
99
|
+
|
|
100
|
+
重新设计一个 onMountedWithLogin
|
|
101
|
+
|
|
102
|
+
```js
|
|
103
|
+
onMountedWithLogin(() => {
|
|
104
|
+
// Todo someting
|
|
105
|
+
})
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
同 onMounted, 只在页面加载的时候执行一次, 只有登录成功后, 才执行回调函数, 如果没有登录, 则执行直接抛出异常, 并执行登录操作
|
|
109
|
+
|
|
110
|
+
> 那岂不是, 该页面如果没有被销毁的话, 就算登录成功, 页面也不回触发登录回调
|
|
111
|
+
|
|
112
|
+
是的, 要解决这个问题, 要么执行登录成功的时候, 页面要被销毁重新加载, 要么 onShow 的时候, 也做检查(页面组件似乎没有 onShow)
|
|
113
|
+
|
|
114
|
+
其中最终的目的就是禁止出现监听登录成功事件无限累加, 曾经在这上面吃了不少的亏
|
|
115
|
+
|
|
77
116
|
### saveImageToLocal
|
|
78
117
|
|
|
79
118
|
> 保存图片到本地
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -27,3 +27,4 @@ __exportStar(require("./lib/set-webview-title"), exports);
|
|
|
27
27
|
__exportStar(require("./lib/share-poster"), exports);
|
|
28
28
|
__exportStar(require("./lib/trigger-login"), exports);
|
|
29
29
|
__exportStar(require("./lib/define-permission-usage"), exports);
|
|
30
|
+
__exportStar(require("./lib/generate-kb-sign"), exports);
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
39
|
+
var t = {};
|
|
40
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
41
|
+
t[p] = s[p];
|
|
42
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
43
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
44
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
45
|
+
t[p[i]] = s[p[i]];
|
|
46
|
+
}
|
|
47
|
+
return t;
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.generateKBSign = void 0;
|
|
51
|
+
var core_1 = require("../core");
|
|
52
|
+
/**
|
|
53
|
+
*
|
|
54
|
+
* @description 生成kbSign
|
|
55
|
+
*/
|
|
56
|
+
var generateKBSign = function (params) { return __awaiter(void 0, void 0, void 0, function () {
|
|
57
|
+
var kbKey, tempData, data;
|
|
58
|
+
return __generator(this, function (_a) {
|
|
59
|
+
switch (_a.label) {
|
|
60
|
+
case 0:
|
|
61
|
+
kbKey = params.kbKey, tempData = __rest(params, ["kbKey"]);
|
|
62
|
+
return [4 /*yield*/, (0, core_1.callHandlerPromise)({
|
|
63
|
+
name: 'OpenActRequest',
|
|
64
|
+
params: {
|
|
65
|
+
type: 51,
|
|
66
|
+
data: tempData,
|
|
67
|
+
},
|
|
68
|
+
})];
|
|
69
|
+
case 1:
|
|
70
|
+
data = (_a.sent()).data;
|
|
71
|
+
return [2 /*return*/, data];
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}); };
|
|
75
|
+
exports.generateKBSign = generateKBSign;
|
|
@@ -31,21 +31,11 @@ export declare function getAppLoginInfo(): Promise<AppLoginModel | null>;
|
|
|
31
31
|
*
|
|
32
32
|
* @description 触发登录
|
|
33
33
|
* 如果已登录,将直接返回登录信息, 请通过 `watchAppLoginSuccess` 监听登录成功事件
|
|
34
|
-
*
|
|
35
|
-
* **示例代码**
|
|
36
|
-
```js
|
|
37
|
-
import { triggerAppLogin } from '@kbapp/js-bridge';
|
|
38
|
-
|
|
39
|
-
const onTapLoginButton = async () => {
|
|
40
|
-
await triggerAppLogin()
|
|
41
|
-
// app已登录
|
|
42
|
-
}
|
|
43
|
-
```
|
|
44
34
|
*/
|
|
45
35
|
export declare function triggerAppLogin(): Promise<AppLoginModel>;
|
|
46
36
|
/**
|
|
47
37
|
*
|
|
48
|
-
* @description 注册监听app登录成功,
|
|
38
|
+
* @description 注册监听app登录成功, 监听时候立刻执行检测一次, 注意,该函数仅读取登录信息, 不会触发登录
|
|
49
39
|
* @param {(loginInfo: AppLoginModel) => void} callback 登录成功回调
|
|
50
40
|
* @returns {() => void} 调用该函数取消监听
|
|
51
41
|
*
|
|
@@ -135,16 +135,6 @@ var watchAppLoginSuccessTask = (function () {
|
|
|
135
135
|
*
|
|
136
136
|
* @description 触发登录
|
|
137
137
|
* 如果已登录,将直接返回登录信息, 请通过 `watchAppLoginSuccess` 监听登录成功事件
|
|
138
|
-
*
|
|
139
|
-
* **示例代码**
|
|
140
|
-
```js
|
|
141
|
-
import { triggerAppLogin } from '@kbapp/js-bridge';
|
|
142
|
-
|
|
143
|
-
const onTapLoginButton = async () => {
|
|
144
|
-
await triggerAppLogin()
|
|
145
|
-
// app已登录
|
|
146
|
-
}
|
|
147
|
-
```
|
|
148
138
|
*/
|
|
149
139
|
function triggerAppLogin() {
|
|
150
140
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -180,7 +170,7 @@ function triggerAppLogin() {
|
|
|
180
170
|
exports.triggerAppLogin = triggerAppLogin;
|
|
181
171
|
/**
|
|
182
172
|
*
|
|
183
|
-
* @description 注册监听app登录成功,
|
|
173
|
+
* @description 注册监听app登录成功, 监听时候立刻执行检测一次, 注意,该函数仅读取登录信息, 不会触发登录
|
|
184
174
|
* @param {(loginInfo: AppLoginModel) => void} callback 登录成功回调
|
|
185
175
|
* @returns {() => void} 调用该函数取消监听
|
|
186
176
|
*
|
package/package.json
CHANGED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.4.
|
|
6
|
+
"version": "0.4.2-alpha.0",
|
|
7
7
|
"description": "开吧客户端桥接",
|
|
8
8
|
"main": "./dist/index.js",
|
|
9
|
-
"author": "along"
|
|
10
|
-
"gitHead": "0f9df8812c66dd6ba1488e82d2a8dd18f6975521"
|
|
9
|
+
"author": "along"
|
|
11
10
|
}
|