mirror of
				https://gitlab.com/famedly/fluffychat.git
				synced 2025-11-03 22:07:23 +01:00 
			
		
		
		
	feature: Deprecated authwebview and use platform browser
This commit is contained in:
		
							parent
							
								
									41a24574ce
								
							
						
					
					
						commit
						d7aae3aedc
					
				@ -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),
 | 
				
			||||||
 | 
					          );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -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: (_) =>
 | 
				
			||||||
 | 
				
			|||||||
@ -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",
 | 
				
			||||||
 | 
				
			|||||||
@ -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,
 | 
					 | 
				
			||||||
                  ),
 | 
					 | 
				
			||||||
          ),
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
      ),
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -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;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user