fix for error in join space dialog

pull/1077/head
Gabby Gurdin 2 years ago
parent 96e6d76051
commit 6fc676c5e7

@ -393,7 +393,6 @@ class ClientChooserButton extends StatelessWidget {
ClassCodeUtil.joinWithClassCodeDialog( ClassCodeUtil.joinWithClassCodeDialog(
context, context,
controller.pangeaController, controller.pangeaController,
null,
); );
break; break;
case SettingsAction.findAConversationPartner: case SettingsAction.findAConversationPartner:

@ -56,8 +56,8 @@ class _SpaceViewState extends State<SpaceView> {
// #Pangea // #Pangea
@override @override
void dispose() { void dispose() {
super.dispose();
_roomSubscription?.cancel(); _roomSubscription?.cancel();
super.dispose();
} }
// Pangea# // Pangea#
@ -108,9 +108,15 @@ class _SpaceViewState extends State<SpaceView> {
}); });
rethrow; rethrow;
} finally { } finally {
setState(() { // #Pangea
loading = false; if (mounted) {
}); // Pangea#
setState(() {
loading = false;
});
// #Pangea
}
// Pangea#
} }
} }
@ -482,11 +488,11 @@ class _SpaceViewState extends State<SpaceView> {
onTapSpaceChild, and they interfere with each other */ onTapSpaceChild, and they interfere with each other */
if (event.isMembershipUpdateByType( if (event.isMembershipUpdateByType(
Membership.leave, Membership.leave,
Matrix.of(context).client.userID!, client.userID!,
) || ) ||
event.isMembershipUpdateByType( event.isMembershipUpdateByType(
Membership.invite, Membership.invite,
Matrix.of(context).client.userID!, client.userID!,
) || ) ||
event.isSpaceChildUpdate(activeSpaceId)) { event.isSpaceChildUpdate(activeSpaceId)) {
_refresh(); _refresh();

@ -233,10 +233,6 @@ class NewSpaceController extends State<NewSpace> {
GoogleAnalytics.createClass(room.name, room.classCode); GoogleAnalytics.createClass(room.name, room.classCode);
try { try {
await room.invite(BotName.byEnvironment); await room.invite(BotName.byEnvironment);
await room.setPower(
BotName.byEnvironment,
ClassDefaultValues.powerLevelOfAdmin,
);
} catch (err) { } catch (err) {
ErrorHandler.logError( ErrorHandler.logError(
e: "Failed to invite pangea bot to space ${room.id}", e: "Failed to invite pangea bot to space ${room.id}",

@ -13,7 +13,6 @@ import 'package:fluffychat/pangea/utils/error_handler.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:go_router/go_router.dart';
import 'package:matrix/matrix.dart'; import 'package:matrix/matrix.dart';
import '../../widgets/matrix.dart'; import '../../widgets/matrix.dart';
@ -132,15 +131,12 @@ class ClassController extends BaseController {
await _pangeaController.matrixState.client.joinRoom(classChunk.roomId); await _pangeaController.matrixState.client.joinRoom(classChunk.roomId);
setActiveSpaceIdInChatListController(classChunk.roomId); setActiveSpaceIdInChatListController(classChunk.roomId);
GoogleAnalytics.joinClass(classCode); GoogleAnalytics.joinClass(classCode);
ClassCodeUtil.messageSnack( ClassCodeUtil.messageSnack(
context, context,
L10n.of(context)!.welcomeToYourNewClass, L10n.of(context)!.welcomeToYourNewClass,
); );
context.go("/rooms");
return; return;
// P-EPIC // P-EPIC
// prereq - server needs ability to invite to private room. how? // prereq - server needs ability to invite to private room. how?

@ -949,15 +949,18 @@ extension PangeaRoom on Room {
return (eventsDefaultPowerLevel ?? 0) >= return (eventsDefaultPowerLevel ?? 0) >=
ClassDefaultValues.powerLevelOfAdmin; ClassDefaultValues.powerLevelOfAdmin;
} }
if (spaceChildren.isEmpty) return false; int joinedRooms = 0;
for (final child in spaceChildren) { for (final child in spaceChildren) {
if (child.roomId == null) continue; if (child.roomId == null) continue;
final Room? room = client.getRoomById(child.roomId!); final Room? room = client.getRoomById(child.roomId!);
if (room?.locked == false) { if (room?.locked == false) {
return false; return false;
} }
if (room != null) {
joinedRooms += 1;
}
} }
return true; return joinedRooms > 0 ? true : false;
} }
Future<bool> suggestedInSpace(Room space) async { Future<bool> suggestedInSpace(Room space) async {

@ -1,12 +1,10 @@
import 'dart:math'; import 'dart:math';
import 'package:adaptive_dialog/adaptive_dialog.dart';
import 'package:fluffychat/pangea/utils/error_handler.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:future_loading_dialog/future_loading_dialog.dart';
import 'package:go_router/go_router.dart';
import 'package:fluffychat/pangea/utils/error_handler.dart';
import '../controllers/pangea_controller.dart'; import '../controllers/pangea_controller.dart';
class ClassCodeUtil { class ClassCodeUtil {
@ -23,59 +21,32 @@ class ClassCodeUtil {
.join(); .join();
} }
static void joinWithClassCodeDialog( static Future<void> joinWithClassCodeDialog(
BuildContext outerContext, BuildContext context,
PangeaController pangeaController, PangeaController pangeaController,
String? classCode, ) async {
) { final List<String>? classCode = await showTextInputDialog(
final TextEditingController textFieldController = TextEditingController( context: context,
text: classCode, title: L10n.of(context)!.joinWithClassCode,
okLabel: L10n.of(context)!.ok,
cancelLabel: L10n.of(context)!.cancel,
textFields: [
DialogTextField(hintText: L10n.of(context)!.joinWithClassCodeHint),
],
); );
if (classCode == null || classCode.single.isEmpty) return;
showDialog( try {
context: outerContext, await pangeaController.classController.joinClasswithCode(
useRootNavigator: false, context,
builder: (BuildContext context) => Scaffold( classCode.first,
backgroundColor: Colors.transparent, );
body: AlertDialog( } catch (err) {
title: Text(L10n.of(context)!.joinWithClassCode), messageSnack(
content: TextField( context,
controller: textFieldController, ErrorCopy(context, err).body,
decoration: InputDecoration( );
hintText: L10n.of(context)!.joinWithClassCodeHint, }
),
),
actions: [
TextButton(
child: Text(L10n.of(context)!.cancel),
onPressed: () => Navigator.of(context).pop(),
),
TextButton(
child: Text(L10n.of(context)!.ok),
onPressed: () => showFutureLoadingDialog(
context: context,
future: () async {
try {
await pangeaController.classController.joinClasswithCode(
outerContext,
textFieldController.text,
);
} catch (err) {
messageSnack(
outerContext,
ErrorCopy(outerContext, err).body,
);
} finally {
context.go("/rooms");
Navigator.of(context).pop();
}
},
),
),
],
),
),
);
} }
static messageDialog( static messageDialog(

Loading…
Cancel
Save