Skip to content

Commit 8dcb46c

Browse files
committed
Fix issues with using webview to assist with cookie login on iOS platform
1 parent 7d9b7c7 commit 8dcb46c

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

lib/src/pages/setting/account/login/login_page_logic.dart

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -330,13 +330,20 @@ class LoginPageLogic extends GetxController {
330330
return;
331331
}
332332

333-
String? username = await webview.evaluateJavaScript('''
333+
String? rawUsername = await webview.evaluateJavaScript('''
334334
document.querySelector('.home > b > a')?.innerText ?? ""
335335
''');
336-
if (isEmptyOrNull(username) || username == 'null') {
336+
if (isEmptyOrNull(rawUsername) || rawUsername == 'null') {
337337
return;
338338
}
339339

340+
String username;
341+
try {
342+
username = jsonDecode(rawUsername!);
343+
} catch (e) {
344+
username = rawUsername!;
345+
}
346+
340347
await ehRequest.storeEHCookies([
341348
Cookie('ipb_member_id', state.ipbMemberId!),
342349
Cookie('ipb_pass_hash', state.ipbPassHash!),
@@ -348,7 +355,7 @@ class LoginPageLogic extends GetxController {
348355
ehSetting.site.value = 'EX';
349356
}
350357
await userSetting.saveUserInfo(
351-
userName: jsonDecode(username!),
358+
userName: username,
352359
ipbMemberId: int.parse(state.ipbMemberId!),
353360
ipbPassHash: state.ipbPassHash!,
354361
);
@@ -385,20 +392,26 @@ class LoginPageLogic extends GetxController {
385392
return;
386393
}
387394

388-
String? username = await controller.runJavaScriptReturningResult('''
395+
String? rawUsername = await controller.runJavaScriptReturningResult('''
389396
document.querySelector('.home > b > a')?.innerText ?? ""
390397
''') as String?;
391-
log.info(username ?? '');
392-
if (isEmptyOrNull(username) || username == 'null') {
398+
if (isEmptyOrNull(rawUsername) || rawUsername == 'null') {
393399
return;
394400
}
395401

402+
String username;
403+
try {
404+
username = jsonDecode(rawUsername!);
405+
} catch (e) {
406+
username = rawUsername!;
407+
}
408+
396409
await ehRequest.storeEHCookies(cookies);
397410
if (useExSite) {
398411
ehSetting.site.value = 'EX';
399412
}
400413
await userSetting.saveUserInfo(
401-
userName: jsonDecode(username!),
414+
userName: username,
402415
ipbMemberId: int.parse(state.ipbMemberId!),
403416
ipbPassHash: state.ipbPassHash!,
404417
);

0 commit comments

Comments
 (0)