feature: Deprecated authwebview and use platform browser

This commit is contained in:
Christian Pauly 2021-02-01 11:47:33 +01:00
parent 41a24574ce
commit d7aae3aedc
5 changed files with 33 additions and 82 deletions

View File

@ -20,6 +20,7 @@ import 'package:future_loading_dialog/future_loading_dialog.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:universal_html/prefer_universal/html.dart' as html; import 'package:universal_html/prefer_universal/html.dart' as html;
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:url_launcher/url_launcher.dart';
/*import 'package:fluffychat/views/chat.dart'; /*import 'package:fluffychat/views/chat.dart';
import 'package:fluffychat/app_config.dart'; import 'package:fluffychat/app_config.dart';
import 'package:dbus/dbus.dart'; import 'package:dbus/dbus.dart';
@ -159,13 +160,21 @@ class MatrixState extends State<Matrix> {
), ),
); );
default: default:
await widget.apl.currentState.pushNamed( await launch(
'/authwebview/$stage/${uiaRequest.session}', Matrix.of(context).client.homeserver.toString() +
arguments: () => null, '/_matrix/client/r0/auth/$stage/fallback/web?session=${uiaRequest.session}',
);
return uiaRequest.completeStage(
AuthenticationData(session: uiaRequest.session),
); );
if (OkCancelResult.ok ==
await showOkCancelAlertDialog(
message: L10n.of(context).pleaseFollowInstructionsOnWeb,
context: context,
okLabel: L10n.of(context).next,
cancelLabel: L10n.of(context).cancel,
)) {
return uiaRequest.completeStage(
AuthenticationData(session: uiaRequest.session),
);
}
} }
} }

View File

@ -2,7 +2,6 @@ import 'package:adaptive_page_layout/adaptive_page_layout.dart';
import 'package:famedlysdk/famedlysdk.dart'; import 'package:famedlysdk/famedlysdk.dart';
import 'package:fluffychat/components/matrix.dart'; import 'package:fluffychat/components/matrix.dart';
import 'package:fluffychat/views/archive.dart'; import 'package:fluffychat/views/archive.dart';
import 'package:fluffychat/views/auth_web_view.dart';
import 'package:fluffychat/views/chat.dart'; import 'package:fluffychat/views/chat.dart';
import 'package:fluffychat/views/chat_details.dart'; import 'package:fluffychat/views/chat_details.dart';
import 'package:fluffychat/views/chat_encryption_settings.dart'; import 'package:fluffychat/views/chat_encryption_settings.dart';
@ -61,16 +60,6 @@ class FluffyRoutes {
); );
} }
return ViewData(mainView: (_) => SignUp()); return ViewData(mainView: (_) => SignUp());
case 'authwebview':
if (parts.length == 4) {
return ViewData(
mainView: (_) => AuthWebView(
parts[2],
Uri.decodeComponent(parts[3]),
settings.arguments,
),
);
}
} }
} }
// Routes IF user is logged in // Routes IF user is logged in
@ -138,17 +127,6 @@ class FluffyRoutes {
mainView: (_) => Archive(), mainView: (_) => Archive(),
emptyView: (_) => EmptyPage(), emptyView: (_) => EmptyPage(),
); );
case 'authwebview':
if (parts.length == 4) {
return ViewData(
mainView: (_) => AuthWebView(
parts[2],
Uri.decodeComponent(parts[3]),
settings.arguments,
),
);
}
break;
case 'discover': case 'discover':
return ViewData( return ViewData(
mainView: (_) => mainView: (_) =>

View File

@ -142,6 +142,11 @@
"type": "text", "type": "text",
"placeholders": {} "placeholders": {}
}, },
"pleaseFollowInstructionsOnWeb": "Please follow the instructions on the website and tap on next.",
"@pleaseFollowInstructionsOnWeb": {
"type": "text",
"placeholders": {}
},
"youWillBeConnectedTo": "You will be connected to {homeserver}", "youWillBeConnectedTo": "You will be connected to {homeserver}",
"@youWillBeConnectedTo": { "@youWillBeConnectedTo": {
"type": "text", "type": "text",
@ -149,6 +154,11 @@
"homeserver": {} "homeserver": {}
} }
}, },
"next": "Next",
"@next": {
"type": "text",
"placeholders": {}
},
"cachedKeys": "Keys cached", "cachedKeys": "Keys cached",
"@cachedKeys": { "@cachedKeys": {
"type": "text", "type": "text",

View File

@ -1,54 +0,0 @@
import 'package:adaptive_page_layout/adaptive_page_layout.dart';
import 'package:fluffychat/components/matrix.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:webview_flutter/webview_flutter.dart';
class AuthWebView extends StatefulWidget {
final String authType;
final String session;
final Function onAuthDone;
const AuthWebView(this.authType, this.session, this.onAuthDone);
@override
_AuthWebViewState createState() => _AuthWebViewState();
}
class _AuthWebViewState extends State<AuthWebView> {
bool _isLoading = true;
@override
Widget build(BuildContext context) {
final url = Matrix.of(context).client.homeserver.toString() +
'/_matrix/client/r0/auth/${widget.authType}/fallback/web?session=${widget.session}';
if (kIsWeb) launch(url);
return Scaffold(
appBar: AppBar(
title: Text(L10n.of(context).authentication),
leading: IconButton(
icon: Icon(Icons.close),
onPressed: () {
AdaptivePageLayout.of(context).pop();
widget.onAuthDone();
},
),
),
body: Column(
children: <Widget>[
if (_isLoading) LinearProgressIndicator(),
Expanded(
child: kIsWeb
? Center(child: Icon(Icons.link_outlined))
: WebView(
onPageFinished: (_) => setState(() => _isLoading = false),
initialUrl: url,
javascriptMode: JavascriptMode.unrestricted,
),
),
],
),
);
}
}

View File

@ -81,12 +81,20 @@ class _SignUpPasswordState extends State<SignUpPassword> {
); );
if (OkCancelResult.ok == if (OkCancelResult.ok ==
await showOkCancelAlertDialog( await showOkCancelAlertDialog(
message: L10n.of(context).pleaseFollowInstructionsOnWeb,
context: context, context: context,
okLabel: L10n.of(context).next,
cancelLabel: L10n.of(context).cancel,
)) { )) {
_signUpAction( _signUpAction(
context, context,
auth: AuthenticationData(session: exception.session), auth: AuthenticationData(session: exception.session),
); );
} else {
setState(() {
loading = false;
passwordError = null;
});
} }
return; return;
} }