Merge pull request #21 from pangeachat/sentry-fixes

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

@ -1,9 +1,5 @@
import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:go_router/go_router.dart';
import 'package:fluffychat/config/themes.dart';
import 'package:fluffychat/pages/archive/archive.dart';
import 'package:fluffychat/pages/chat/chat.dart';
@ -42,6 +38,9 @@ import 'package:fluffychat/widgets/layouts/empty_page.dart';
import 'package:fluffychat/widgets/layouts/two_column_layout.dart';
import 'package:fluffychat/widgets/log_view.dart';
import 'package:fluffychat/widgets/matrix.dart';
import 'package:flutter/cupertino.dart';
import 'package:go_router/go_router.dart';
import '../pangea/pages/analytics/class_analytics/class_analytics.dart';
import '../pangea/pages/analytics/class_list/class_list.dart';
@ -254,13 +253,23 @@ abstract class AppRoutes {
GoRoute(
// #Pangea
// path: 'newgroup',
path: 'newgroup/:spaceid',
path: 'newgroup',
// Pangea#
pageBuilder: (context, state) => defaultPageBuilder(
context,
const NewGroup(),
),
redirect: loggedOutRedirect,
routes: [
GoRoute(
path: ':spaceid',
pageBuilder: (context, state) => defaultPageBuilder(
context,
const NewGroup(),
),
redirect: loggedOutRedirect,
),
],
),
GoRoute(
path: 'newspace',

@ -1,9 +1,4 @@
import 'package:flutter/material.dart';
import 'package:animations/animations.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:matrix/matrix.dart';
import 'package:fluffychat/pages/chat_list/chat_list.dart';
import 'package:fluffychat/pages/chat_list/chat_list_item.dart';
import 'package:fluffychat/pages/chat_list/search_title.dart';
@ -15,6 +10,10 @@ import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart';
import 'package:fluffychat/utils/stream_extension.dart';
import 'package:fluffychat/widgets/avatar.dart';
import 'package:fluffychat/widgets/public_room_bottom_sheet.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:matrix/matrix.dart';
import '../../config/themes.dart';
import '../../widgets/connection_status_header.dart';
import '../../widgets/matrix.dart';
@ -196,27 +195,16 @@ class ChatListViewBody extends StatelessWidget {
if (client.prevBatch != null &&
rooms.isEmpty &&
!controller.isSearchMode) ...[
Padding(
padding: const EdgeInsets.all(32.0),
// #Pangea
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
'private_chat_wallpaper.png',
height: 256,
),
],
),
// Padding(
// padding: const EdgeInsets.all(32.0),
// child: Icon(
// CupertinoIcons.chat_bubble_2,
// size: 128,
// color:
// Theme.of(context).colorScheme.onInverseSurface,
// ),
// Pangea#
),
// #Pangea
// ),
Center(
child: ChatListBodyStartText(
controller: controller,

@ -1,13 +1,11 @@
import 'dart:core';
import 'package:fluffychat/config/themes.dart';
import 'package:fluffychat/pages/chat_list/chat_list.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:go_router/go_router.dart';
import 'package:fluffychat/config/themes.dart';
import 'package:fluffychat/pages/chat_list/chat_list.dart';
class StartChatFloatingActionButton extends StatelessWidget {
final ActiveFilter activeFilter;
final ValueNotifier<bool> scrolledToTop;
@ -29,7 +27,7 @@ class StartChatFloatingActionButton extends StatelessWidget {
void _onPressed(BuildContext context) {
//#Pangea
if (controller.activeSpaceId != null) {
context.go('/rooms/newgroup/${controller.activeSpaceId}');
context.go('/rooms/newgroup/${controller.activeSpaceId ?? ''}');
return;
}
//Pangea#
@ -43,7 +41,7 @@ class StartChatFloatingActionButton extends StatelessWidget {
case ActiveFilter.groups:
// #Pangea
// context.go('/rooms/newgroup');
context.go('/rooms/newgroup/${controller.activeSpaceId}');
context.go('/rooms/newgroup/${controller.activeSpaceId ?? ''}');
// Pangea#
break;
case ActiveFilter.spaces:

@ -1,15 +1,7 @@
import 'dart:async';
import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:adaptive_dialog/adaptive_dialog.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:http/http.dart';
import 'package:purchases_flutter/purchases_flutter.dart';
import 'package:url_launcher/url_launcher_string.dart';
import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/pangea/constants/local.key.dart';
import 'package:fluffychat/pangea/controllers/base_controller.dart';
@ -23,6 +15,13 @@ import 'package:fluffychat/pangea/utils/error_handler.dart';
import 'package:fluffychat/pangea/utils/firebase_analytics.dart';
import 'package:fluffychat/pangea/widgets/subscription/subscription_paywall.dart';
import 'package:fluffychat/utils/platform_infos.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:http/http.dart';
import 'package:purchases_flutter/purchases_flutter.dart';
import 'package:url_launcher/url_launcher_string.dart';
class SubscriptionController extends BaseController {
late PangeaController _pangeaController;
@ -242,8 +241,15 @@ class SubscriptionController extends BaseController {
await Purchases.purchasePackage(selectedSubscription.package!);
GoogleAnalytics.updateUserSubscriptionStatus(true);
} catch (err) {
final errCode = PurchasesErrorHelper.getErrorCode(
err as PlatformException,
);
if (errCode == PurchasesErrorCode.purchaseCancelledError) {
debugPrint("User cancelled purchase");
return;
}
ErrorHandler.logError(
m: "Failed to purchase revenuecat package for user ${_pangeaController.matrixState.client.userID}",
m: "Failed to purchase revenuecat package for user ${_pangeaController.matrixState.client.userID} with error code $errCode",
s: StackTrace.current,
);
return;

@ -1,13 +1,6 @@
import 'dart:async';
import 'dart:developer';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:matrix/matrix.dart';
import 'package:matrix/src/utils/space_child.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
import 'package:fluffychat/pangea/constants/class_default_values.dart';
import 'package:fluffychat/pangea/constants/model_keys.dart';
import 'package:fluffychat/pangea/constants/pangea_room_types.dart';
@ -15,6 +8,12 @@ import 'package:fluffychat/pangea/models/class_model.dart';
import 'package:fluffychat/pangea/models/pangea_message_event.dart';
import 'package:fluffychat/pangea/utils/bot_name.dart';
import 'package:fluffychat/pangea/utils/error_handler.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:matrix/matrix.dart';
import 'package:matrix/src/utils/space_child.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
import '../../config/app_config.dart';
import '../constants/pangea_event_types.dart';
import '../enum/construct_type_enum.dart';
@ -150,20 +149,19 @@ extension PangeaRoom on Room {
bool isChild(String roomId) =>
isSpace && spaceChildren.any((room) => room.roomId == roomId);
bool isFirstOrSecondChild(String roomId) =>
isSpace && spaceChildren.any((room) => room.roomId == roomId) ||
bool isFirstOrSecondChild(String roomId) {
return isSpace &&
(spaceChildren.any((room) => room.roomId == roomId) ||
spaceChildren
.where(
(sc) => sc.roomId != null,
)
.map(
(sc) => client.getRoomById(sc.roomId!),
)
.where((sc) => sc.roomId != null)
.map((sc) => client.getRoomById(sc.roomId!))
.any(
(room) =>
room != null &&
room.isSpace &&
room.spaceChildren.any((room) => room.roomId == roomId),
);
));
}
//note this only will return rooms that the user has joined or been invited to
List<SpaceChild> get childrenAndGrandChildren {
@ -513,13 +511,6 @@ extension PangeaRoom on Room {
.where((element) => !element.isSpace)
.toList();
if (spaceChildren.length != spaceChats.length) {
// debugger(when: kDebugMode);
ErrorHandler.logError(
m: "spaceChildren.length > chats.length in updateMyLearningAnalyticsForClass",
);
}
final List<Future<List<RecentMessageRecord>>> msgListFutures = [];
for (final chat in spaceChats) {
msgListFutures.add(chat._messageListForChat);

@ -1,11 +1,10 @@
import 'package:flutter/material.dart';
import 'package:collection/collection.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:fluffychat/pangea/constants/choreo_constants.dart';
import 'package:fluffychat/pangea/constants/model_keys.dart';
import 'package:fluffychat/pangea/extensions/my_list_extionsion.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'lemma.dart';
class ITResponseModel {
@ -114,7 +113,7 @@ class Continuance {
.cast<Lemma>()
: [];
return Continuance(
probability: json['probability'],
probability: json['probability'] as double,
level: json['level'],
text: json['text'],
description: json['description'] ?? "",

@ -1,17 +1,16 @@
import 'package:flutter/material.dart';
import 'package:collection/collection.dart';
import 'package:matrix/matrix.dart';
import 'package:fluffychat/pangea/constants/model_keys.dart';
import 'package:fluffychat/pangea/constants/pangea_message_types.dart';
import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart';
import 'package:fluffychat/pangea/models/choreo_record.dart';
import 'package:fluffychat/pangea/models/message_data_models.dart';
import 'package:fluffychat/pangea/models/pangea_representation_event.dart';
import 'package:fluffychat/pangea/utils/bot_name.dart';
import 'package:flutter/material.dart';
import 'package:matrix/matrix.dart';
import '../../widgets/matrix.dart';
import '../constants/language_keys.dart';
import '../constants/model_keys.dart';
import '../constants/pangea_event_types.dart';
import '../enum/use_type.dart';
import '../utils/error_handler.dart';
@ -85,7 +84,10 @@ class PangeaMessageEvent {
_representations = [];
if (_latestEdit.content[ModelKey.originalSent] != null) {
final bool latestHasTokens =
_latestEdit.content[ModelKey.tokensSent] != null;
if (_latestEdit.content[ModelKey.originalSent] != null && latestHasTokens) {
try {
_representations!.add(
RepresentationEvent(
@ -93,12 +95,9 @@ class PangeaMessageEvent {
_latestEdit.content[ModelKey.originalSent]
as Map<String, dynamic>,
),
tokens: _latestEdit.content[ModelKey.tokensSent] != null
? PangeaMessageTokens.fromJson(
_latestEdit.content[ModelKey.tokensSent]
as Map<String, dynamic>,
)
: null,
tokens: PangeaMessageTokens.fromJson(
_latestEdit.content[ModelKey.tokensSent] as Map<String, dynamic>,
),
choreo: _latestEdit.content[ModelKey.choreoRecord] != null
? ChoreoRecord.fromJson(
_latestEdit.content[ModelKey.choreoRecord]
@ -116,19 +115,17 @@ class PangeaMessageEvent {
}
}
if (_latestEdit.content[ModelKey.originalWritten] != null) {
if (_latestEdit.content[ModelKey.originalWritten] != null &&
latestHasTokens) {
_representations!.add(
RepresentationEvent(
content: PangeaRepresentation.fromJson(
_latestEdit.content[ModelKey.originalWritten]
as Map<String, dynamic>,
),
tokens: _latestEdit.content[ModelKey.tokensWritten] != null
? PangeaMessageTokens.fromJson(
_latestEdit.content[ModelKey.tokensWritten]
as Map<String, dynamic>,
)
: null,
tokens: PangeaMessageTokens.fromJson(
_latestEdit.content[ModelKey.tokensWritten] as Map<String, dynamic>,
),
timeline: timeline,
),
);

@ -2,12 +2,19 @@ import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:adaptive_dialog/adaptive_dialog.dart';
import 'package:collection/collection.dart';
import 'package:desktop_notifications/desktop_notifications.dart';
import 'package:fluffychat/pangea/controllers/pangea_controller.dart';
import 'package:fluffychat/pangea/utils/any_state_holder.dart';
import 'package:fluffychat/utils/client_manager.dart';
import 'package:fluffychat/utils/localized_exception_extension.dart';
import 'package:fluffychat/utils/platform_infos.dart';
import 'package:fluffychat/utils/uia_request_manager.dart';
import 'package:fluffychat/utils/voip_plugin.dart';
import 'package:fluffychat/widgets/fluffy_chat_app.dart';
import 'package:flutter/foundation.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:http/http.dart' as http;
@ -19,14 +26,6 @@ import 'package:shared_preferences/shared_preferences.dart';
import 'package:universal_html/html.dart' as html;
import 'package:url_launcher/url_launcher_string.dart';
import 'package:fluffychat/pangea/controllers/pangea_controller.dart';
import 'package:fluffychat/pangea/utils/any_state_holder.dart';
import 'package:fluffychat/utils/client_manager.dart';
import 'package:fluffychat/utils/localized_exception_extension.dart';
import 'package:fluffychat/utils/platform_infos.dart';
import 'package:fluffychat/utils/uia_request_manager.dart';
import 'package:fluffychat/utils/voip_plugin.dart';
import 'package:fluffychat/widgets/fluffy_chat_app.dart';
import '../config/app_config.dart';
import '../config/setting_keys.dart';
import '../pages/key_verification/key_verification_dialog.dart';
@ -409,6 +408,9 @@ class MatrixState extends State<Matrix> with WidgetsBindingObserver {
this,
onFcmError: (errorMsg, {Uri? link}) async {
final result = await showOkCancelAlertDialog(
// #Pangea
useRootNavigator: false,
// Pangea#
barrierDismissible: true,
context: context,
title: L10n.of(context)!.pushNotificationsNotAvailable,

Loading…
Cancel
Save