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

View File

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