commit
d1152d54dd
8 changed files with 99 additions and 109 deletions
|
|
@ -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,
|
||||
),
|
||||
],
|
||||
),
|
||||
// child: Icon(
|
||||
// CupertinoIcons.chat_bubble_2,
|
||||
// size: 128,
|
||||
// color:
|
||||
// Theme.of(context).colorScheme.onInverseSurface,
|
||||
// ),
|
||||
// Pangea#
|
||||
),
|
||||
// #Pangea
|
||||
// Padding(
|
||||
// padding: const EdgeInsets.all(32.0),
|
||||
// child: Icon(
|
||||
// CupertinoIcons.chat_bubble_2,
|
||||
// size: 128,
|
||||
// color:
|
||||
// Theme.of(context).colorScheme.onInverseSurface,
|
||||
// ),
|
||||
// ),
|
||||
Center(
|
||||
child: ChatListBodyStartText(
|
||||
controller: controller,
|
||||
|
|
|
|||
|
|
@ -1,12 +1,10 @@
|
|||
import 'dart:core';
|
||||
|
||||
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';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
||||
class StartChatFloatingActionButton extends StatelessWidget {
|
||||
final ActiveFilter activeFilter;
|
||||
|
|
@ -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) ||
|
||||
spaceChildren
|
||||
.where(
|
||||
(sc) => sc.roomId != null,
|
||||
)
|
||||
.map(
|
||||
(sc) => client.getRoomById(sc.roomId!),
|
||||
)
|
||||
.any(
|
||||
(room) =>
|
||||
room != null &&
|
||||
room.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!))
|
||||
.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…
Add table
Reference in a new issue