Merge pull request #22 from pangeachat/sentry-fixes

Sentry Fixes
pull/795/head
wcjord 2 years ago committed by GitHub
commit 1144557872
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,15 +1,14 @@
import 'package:flutter/material.dart';
import 'package:adaptive_dialog/adaptive_dialog.dart';
import 'package:collection/collection.dart' show IterableExtension;
import 'package:fluffychat/pages/device_settings/device_settings_view.dart';
import 'package:fluffychat/pages/key_verification/key_verification_dialog.dart';
import 'package:fluffychat/utils/localized_exception_extension.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:future_loading_dialog/future_loading_dialog.dart';
import 'package:matrix/encryption/utils/key_verification.dart';
import 'package:matrix/matrix.dart';
import 'package:fluffychat/pages/device_settings/device_settings_view.dart';
import 'package:fluffychat/pages/key_verification/key_verification_dialog.dart';
import 'package:fluffychat/utils/localized_exception_extension.dart';
import '../../widgets/matrix.dart';
class DevicesSettings extends StatefulWidget {
@ -34,9 +33,6 @@ class DevicesSettingsController extends State<DevicesSettings> {
void removeDevicesAction(List<Device> devices) async {
if (await showOkCancelAlertDialog(
// #Pangea
useRootNavigator: false,
// Pangea#
context: context,
title: L10n.of(context)!.areYouSure,
okLabel: L10n.of(context)!.yes,
@ -72,9 +68,6 @@ class DevicesSettingsController extends State<DevicesSettings> {
void renameDeviceAction(Device device) async {
final displayName = await showTextInputDialog(
// #Pangea
useRootNavigator: false,
// Pangea#
context: context,
title: L10n.of(context)!.changeDeviceName,
okLabel: L10n.of(context)!.ok,
@ -98,7 +91,7 @@ class DevicesSettingsController extends State<DevicesSettings> {
}
void verifyDeviceAction(Device device) async {
final req = Matrix.of(context)
final req = await Matrix.of(context)
.client
.userDeviceKeys[Matrix.of(context).client.userID!]!
.deviceKeys[device.deviceId]!

@ -1,11 +1,20 @@
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:adaptive_dialog/adaptive_dialog.dart';
import 'package:collection/collection.dart';
import 'package:file_picker/file_picker.dart';
import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/pages/homeserver_picker/homeserver_picker_view.dart';
import 'package:fluffychat/pangea/utils/error_handler.dart';
import 'package:fluffychat/pangea/utils/firebase_analytics.dart';
import 'package:fluffychat/utils/platform_infos.dart';
import 'package:fluffychat/utils/tor_stub.dart'
if (dart.library.html) 'package:tor_detector_web/tor_detector_web.dart';
import 'package:fluffychat/widgets/app_lock.dart';
import 'package:fluffychat/widgets/matrix.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:flutter_web_auth_2/flutter_web_auth_2.dart';
import 'package:future_loading_dialog/future_loading_dialog.dart';
@ -14,18 +23,8 @@ import 'package:hive_flutter/hive_flutter.dart';
import 'package:matrix/matrix.dart';
import 'package:universal_html/html.dart' as html;
import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/pages/homeserver_picker/homeserver_picker_view.dart';
import 'package:fluffychat/pangea/utils/error_handler.dart';
import 'package:fluffychat/pangea/utils/firebase_analytics.dart';
import 'package:fluffychat/utils/platform_infos.dart';
import 'package:fluffychat/widgets/app_lock.dart';
import 'package:fluffychat/widgets/matrix.dart';
import '../../utils/localized_exception_extension.dart';
import 'package:fluffychat/utils/tor_stub.dart'
if (dart.library.html) 'package:tor_detector_web/tor_detector_web.dart';
class HomeserverPicker extends StatefulWidget {
const HomeserverPicker({super.key});
@ -131,34 +130,67 @@ class HomeserverPickerController extends State<HomeserverPicker> {
? '${html.window.origin!}/auth.html'
: '${AppConfig.appOpenUrlScheme.toLowerCase()}://login';
//Pangea#
final url =
'${Matrix.of(context).getLoginClient().homeserver?.toString()}/_matrix/client/r0/login/sso/redirect/${Uri.encodeComponent(id)}?redirectUrl=${Uri.encodeQueryComponent(redirectUrl)}';
final url = Matrix.of(context).getLoginClient().homeserver!.replace(
path: '/_matrix/client/v3/login/sso/redirect${id == null ? '' : '/$id'}',
queryParameters: {'redirectUrl': redirectUrl},
);
final urlScheme = isDefaultPlatform
? Uri.parse(redirectUrl).scheme
: "http://localhost:3001";
final result = await FlutterWebAuth2.authenticate(
url: url.toString(),
callbackUrlScheme: urlScheme,
);
// #Pangea
// final result = await FlutterWebAuth2.authenticate(
// url: url.toString(),
// callbackUrlScheme: urlScheme,
// );
String result;
try {
result = await FlutterWebAuth2.authenticate(
url: url.toString(),
callbackUrlScheme: urlScheme,
);
} catch (err) {
if (err is PlatformException && err.code == 'CANCELED') {
debugPrint("user cancelled SSO login");
return;
}
ErrorHandler.logError(
e: err,
s: StackTrace.current,
);
return;
}
// Pangea#
final token = Uri.parse(result).queryParameters['loginToken'];
if (token?.isEmpty ?? false) return;
// #Pangea
final loginRes = await showFutureLoadingDialog(
// await showFutureLoadingDialog(
// Pangea#
context: context,
future: () => Matrix.of(context).getLoginClient().login(
setState(() {
error = null;
isLoading = isLoggingIn = true;
});
try {
// #Pangea
final loginRes = await Matrix.of(context).getLoginClient().login(
// await Matrix.of(context).getLoginClient().login(
// Pangea#
LoginType.mLoginToken,
token: token,
initialDeviceDisplayName: PlatformInfos.clientName,
),
);
//Pangea#
if (loginRes.result != null) {
GoogleAnalytics.login(provider.name!, loginRes.result!.userId);
);
// #Pangea
GoogleAnalytics.login(provider.name!, loginRes.userId);
// Pangea#
} catch (e) {
setState(() {
error = e.toLocalizedString(context);
});
} finally {
if (mounted) {
setState(() {
isLoading = isLoggingIn = false;
});
}
}
//Pangea#
}
List<IdentityProvider>? get identityProviders {

@ -1,12 +1,6 @@
import 'dart:developer';
import 'dart:math';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:matrix/matrix.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
import 'package:fluffychat/pangea/constants/class_default_values.dart';
import 'package:fluffychat/pangea/controllers/class_controller.dart';
import 'package:fluffychat/pangea/controllers/contextual_definition_controller.dart';
@ -24,6 +18,11 @@ import 'package:fluffychat/pangea/utils/bot_name.dart';
import 'package:fluffychat/pangea/utils/error_handler.dart';
import 'package:fluffychat/pangea/utils/instructions.dart';
import 'package:fluffychat/widgets/matrix.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:matrix/matrix.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
import '../../config/app_config.dart';
import '../utils/firebase_analytics.dart';
import '../utils/p_store.dart';
@ -160,6 +159,8 @@ class PangeaController {
void startChatWithBotIfNotPresent() {
Future.delayed(const Duration(milliseconds: 10000), () async {
// check if user is logged in
if (!matrixState.client.isLogged()) return;
try {
await matrixState.client.startDirectChat(
BotName.byEnvironment,

@ -113,7 +113,7 @@ class Continuance {
.cast<Lemma>()
: [];
return Continuance(
probability: json['probability'] as double,
probability: json['probability'].toDouble(),
level: json['level'],
text: json['text'],
description: json['description'] ?? "",

@ -890,10 +890,10 @@ packages:
dependency: "direct main"
description:
name: flutter_web_auth_2
sha256: "75613aa4d8e43df3de0fc3d93df36ae5b4ba2e94070384c5a9baeda99f5a235f"
sha256: "3ea3a0cc539ca74319f4f2f7484f62742fe5b2ff9a0fca37575426d6e6f07901"
url: "https://pub.dev"
source: hosted
version: "3.0.3"
version: "3.1.1"
flutter_web_auth_2_platform_interface:
dependency: transitive
description:
@ -1386,10 +1386,10 @@ packages:
dependency: "direct main"
description:
name: matrix
sha256: b01a8a7141a586853a4f9b2e98b3c9912ff74bbceadc16b2bf3630bf055a830a
sha256: c5271ebe5a67d3af2b9490a05a538501b3a454f5eb2089f82cb18ddc9513455e
url: "https://pub.dev"
source: hosted
version: "0.22.7"
version: "0.25.3"
matrix_api_lite:
dependency: transitive
description:

@ -59,7 +59,7 @@ dependencies:
flutter_secure_storage: ^9.0.0
flutter_svg: ^2.0.0+1
flutter_typeahead: ^4.8.0
flutter_web_auth_2: ^3.0.3
flutter_web_auth_2: ^3.1.1
flutter_webrtc: ^0.9.46
future_loading_dialog: ^0.3.0
geolocator: ^7.6.2
@ -77,7 +77,7 @@ dependencies:
language_tool: ^2.1.1
latlong2: ^0.8.1
linkify: ^5.0.0
matrix: ^0.22.6
matrix: ^0.25.3
matrix_homeserver_recommendations: ^0.3.0
native_imaging: ^0.1.0
new_version_plus: ^0.0.10

@ -1,14 +1,13 @@
<!DOCTYPE html>
<head>
<title>Authentication complete</title>
</head>
<body>
<p>Authentication is complete. If this does not happen automatically, please
close the window.
<script>
<title>Authentication complete</title>
<p>Authentication is complete. If this does not happen automatically, please close the window.</p>
<script>
if (window.opener) {
window.opener.postMessage({
'flutter-web-auth-2': window.location.href
}, window.location.origin);
window.close();
</script>
</body>
} else {
localStorage.setItem('flutter-web-auth-2', window.location.href);
}
window.close();
</script>
Loading…
Cancel
Save