Skip to content

Commit

Permalink
fixup! TW-1711: Error handle with wrong login
Browse files Browse the repository at this point in the history
  • Loading branch information
nqhhdev committed Apr 26, 2024
1 parent ee0da32 commit 8d432e2
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 26 deletions.
3 changes: 2 additions & 1 deletion assets/l10n/intl_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -3048,5 +3048,6 @@
"tokenNotFound": "The login token not found",
"dangerZone": "Danger zone",
"leaveGroupSubtitle": "This group will still remain after you left",
"leaveChatFailed": "Failed to leave the chat"
"leaveChatFailed": "Failed to leave the chat",
"invalidLoginToken": "Invalid login token"
}
48 changes: 24 additions & 24 deletions lib/pages/auto_homeserver_picker/auto_homeserver_picker.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import 'package:fluffychat/widgets/matrix.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:matrix/matrix.dart';
import 'package:universal_html/html.dart' as html;
import 'package:flutter_gen/gen_l10n/l10n.dart';

class AutoHomeserverPicker extends StatefulWidget {
final bool? loggedOut;
Expand Down Expand Up @@ -162,30 +162,34 @@ class AutoHomeserverPickerController extends State<AutoHomeserverPicker>
}
}
Logs().d(
"AutoHomeserverPickerController: _initializeAutoHomeserverPicker: PlatForm ${AppConfig.platform}",
"AutoHomeserverPickerController::_setupAutoHomeserverPicker: PlatForm ${AppConfig.platform}",
);
final loginToken = getQueryParameter('loginToken');
if (loginToken != null || loginToken?.isNotEmpty == true) {
try {
Matrix.of(context).loginType = LoginType.mLoginToken;
Matrix.of(context).loginHomeserverSummary =
await Matrix.of(context).getLoginClient().checkHomeserver(
Uri.parse(
AppConfig.homeserver,
),
);
await TwakeDialog.showFutureLoadingDialogFullScreen(
future: () => Matrix.of(context).getLoginClient().login(
LoginType.mLoginToken,
token: loginToken,
initialDeviceDisplayName: PlatformInfos.clientName,
),
Matrix.of(context).loginType = LoginType.mLoginToken;
Matrix.of(context).loginHomeserverSummary =
await Matrix.of(context).getLoginClient().checkHomeserver(
Uri.parse(
AppConfig.homeserver,
),
);
final result = await TwakeDialog.showFutureLoadingDialogFullScreen(
future: () => Matrix.of(context).getLoginClient().login(
LoginType.mLoginToken,
token: loginToken,
initialDeviceDisplayName: PlatformInfos.clientName,
),
);
if (result.error != null) {
autoHomeserverPickerUIState.value = AutoHomeServerPickerFailureState(
error: L10n.of(context)!.invalidLoginToken,
);
} catch (e) {
autoHomeserverPickerUIState.value =
AutoHomeServerPickerFailureState();
resetLocationPathWithLoginToken(
route: 'home',
);
} else {
resetLocationPathWithLoginToken();
}
_resetLocationPath();
return;
}
if (_isSaasPlatform) {
Expand All @@ -200,10 +204,6 @@ class AutoHomeserverPickerController extends State<AutoHomeserverPicker>
}
}

void _resetLocationPath() {
html.window.history.replaceState({}, '', '/#/rooms');
}

@override
void initState() {
_setupAutoHomeserverPicker();
Expand Down
8 changes: 8 additions & 0 deletions lib/presentation/mixins/connect_page_mixin.dart
Original file line number Diff line number Diff line change
Expand Up @@ -263,4 +263,12 @@ mixin ConnectPageMixin {
),
);
}

void resetLocationPathWithLoginToken({
String? route,
}) {
final loginTokenExisted = getQueryParameter('loginToken') != null;
if (!loginTokenExisted) return;
html.window.history.replaceState({}, '', '/#/${route ?? 'rooms'}');
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:fluffychat/config/first_column_inner_routes.dart';
import 'package:fluffychat/presentation/enum/settings/settings_action_enum.dart';
import 'package:fluffychat/presentation/mixins/connect_page_mixin.dart';
import 'package:fluffychat/utils/extension/build_context_extension.dart';
import 'package:fluffychat/utils/platform_infos.dart';
import 'package:fluffychat/utils/responsive/responsive_utils.dart';
Expand Down Expand Up @@ -34,7 +35,8 @@ class AppAdaptiveScaffoldBody extends StatefulWidget {
AppAdaptiveScaffoldBodyController();
}

class AppAdaptiveScaffoldBodyController extends State<AppAdaptiveScaffoldBody> {
class AppAdaptiveScaffoldBodyController extends State<AppAdaptiveScaffoldBody>
with ConnectPageMixin {
final ValueNotifier<AdaptiveDestinationEnum> activeNavigationBarNotifier =
ValueNotifier<AdaptiveDestinationEnum>(AdaptiveDestinationEnum.rooms);

Expand Down Expand Up @@ -129,6 +131,7 @@ class AppAdaptiveScaffoldBodyController extends State<AppAdaptiveScaffoldBody> {
@override
void initState() {
activeRoomIdNotifier.value = widget.activeRoomId;
resetLocationPathWithLoginToken();
super.initState();
}

Expand Down

0 comments on commit 8d432e2

Please sign in to comment.