This commit is contained in:
Xu Chang 2022-09-15 20:20:33 +08:00
parent 51698d8890
commit 1bcfccde76
2 changed files with 47 additions and 33 deletions

View File

@ -47,20 +47,25 @@ var Token = /** @class */ (function (_super) {
case 0: return [4 /*yield*/, this.rwLock.acquire('X')];
case 1:
_a.sent();
if (!!this.token) return [3 /*break*/, 3];
_a.label = 2;
case 2:
_a.trys.push([2, , 5, 6]);
if (!!this.token) return [3 /*break*/, 4];
return [4 /*yield*/, this.cache.refresh('token', {
data: tokenProjection,
filter: {
id: this.tokenValue,
},
})];
case 2:
case 3:
data = (_a.sent()).data;
this.token = data[0];
_a.label = 3;
case 3:
_a.label = 4;
case 4: return [3 /*break*/, 6];
case 5:
this.rwLock.release();
return [2 /*return*/];
return [7 /*endfinally*/];
case 6: return [2 /*return*/];
}
});
});
@ -78,19 +83,20 @@ var Token = /** @class */ (function (_super) {
_a.sent();
_a.label = 3;
case 3:
_a.trys.push([3, 5, , 6]);
_a.trys.push([3, 5, 6, 7]);
return [4 /*yield*/, this.getAspectWrapper().exec('loginByMobile', { password: password, mobile: mobile, captcha: captcha, env: env })];
case 4:
result = (_a.sent()).result;
this.tokenValue = result;
this.rwLock.release();
this.storage.save('token:token', result);
return [3 /*break*/, 6];
return [3 /*break*/, 7];
case 5:
err_1 = _a.sent();
this.rwLock.release();
throw err_1;
case 6: return [2 /*return*/];
case 6:
this.rwLock.release();
return [7 /*endfinally*/];
case 7: return [2 /*return*/];
}
});
});
@ -105,7 +111,7 @@ var Token = /** @class */ (function (_super) {
_a.sent();
_a.label = 2;
case 2:
_a.trys.push([2, 5, , 6]);
_a.trys.push([2, 5, 6, 7]);
return [4 /*yield*/, (0, env_1.getEnv)()];
case 3:
env = _a.sent();
@ -118,12 +124,14 @@ var Token = /** @class */ (function (_super) {
this.tokenValue = result;
this.rwLock.release();
this.storage.save('token:token', result);
return [3 /*break*/, 6];
return [3 /*break*/, 7];
case 5:
err_2 = _a.sent();
this.rwLock.release();
throw err_2;
case 6: return [2 /*return*/];
case 6:
this.rwLock.release();
return [7 /*endfinally*/];
case 7: return [2 /*return*/];
}
});
});
@ -138,7 +146,7 @@ var Token = /** @class */ (function (_super) {
_a.sent();
_a.label = 2;
case 2:
_a.trys.push([2, 6, , 7]);
_a.trys.push([2, 6, 7, 8]);
return [4 /*yield*/, wx.login()];
case 3:
code = (_a.sent()).code;
@ -152,14 +160,15 @@ var Token = /** @class */ (function (_super) {
case 5:
result = (_a.sent()).result;
this.tokenValue = result;
this.rwLock.release();
this.storage.save('token:token', result);
return [3 /*break*/, 7];
return [3 /*break*/, 8];
case 6:
err_3 = _a.sent();
this.rwLock.release();
throw err_3;
case 7: return [2 /*return*/];
case 7:
this.rwLock.release();
return [7 /*endfinally*/];
case 8: return [2 /*return*/];
}
});
});

View File

@ -82,6 +82,7 @@ export class Token<
async loadTokenInfo() {
await this.rwLock.acquire('X');
try {
if (!this.token) {
const { data } = await this.cache.refresh('token', {
data: tokenProjection,
@ -91,8 +92,11 @@ export class Token<
});
this.token = data[0] as any;
}
}
finally {
this.rwLock.release();
}
}
@Action
async loginByMobile(mobile: string, password?: string, captcha?: string) {
@ -104,11 +108,11 @@ export class Token<
{ password, mobile, captcha, env }
);
this.tokenValue = result;
this.rwLock.release();
this.storage.save('token:token', result);
} catch (err) {
this.rwLock.release();
throw err;
} finally {
this.rwLock.release();
}
}
@ -128,8 +132,9 @@ export class Token<
this.rwLock.release();
this.storage.save('token:token', result);
} catch (err) {
this.rwLock.release();
throw err;
} finally {
this.rwLock.release();
}
}
@ -148,11 +153,11 @@ export class Token<
}
);
this.tokenValue = result;
this.rwLock.release();
this.storage.save('token:token', result);
} catch (err) {
this.rwLock.release();
throw err;
} finally {
this.rwLock.release();
}
}