make join_with_link work for users who are logged in or logged out

pull/1116/head
ggurdin 2 years ago
parent c8fc3dbca8
commit f6a45323e0

@ -113,6 +113,14 @@ abstract class AppRoutes {
), ),
), ),
// #Pangea // #Pangea
GoRoute(
path: '/join_with_link',
pageBuilder: (context, state) => defaultPageBuilder(
context,
state,
const JoinClassWithLink(),
),
),
GoRoute( GoRoute(
path: '/user_age', path: '/user_age',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
@ -154,15 +162,6 @@ abstract class AppRoutes {
), ),
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
), ),
GoRoute(
path: '/join_with_link',
pageBuilder: (context, state) => defaultPageBuilder(
context,
state,
const JoinClassWithLink(),
),
redirect: loggedOutRedirect,
),
// Pangea# // Pangea#
GoRoute( GoRoute(
path: '/rooms', path: '/rooms',

@ -81,17 +81,25 @@ class _SpaceViewState extends State<SpaceView> {
nextBatch: null, nextBatch: null,
); );
} }
setState(() {
error = null;
loading = true;
});
// Pangea# // Pangea#
final activeSpaceId = widget.controller.activeSpaceId!; final activeSpaceId = widget.controller.activeSpaceId!;
final client = Matrix.of(context).client; final client = Matrix.of(context).client;
final activeSpace = client.getRoomById(activeSpaceId); final activeSpace = client.getRoomById(activeSpaceId);
await activeSpace?.postLoad(); await activeSpace?.postLoad();
setState(() { // #Pangea
error = null; // setState(() {
loading = true; // error = null;
}); // loading = true;
// });
// Pangea#
try { try {
final response = await client.getSpaceHierarchy( final response = await client.getSpaceHierarchy(

@ -105,6 +105,7 @@ class ClassController extends BaseController {
} }
Future<void> joinClasswithCode(BuildContext context, String classCode) async { Future<void> joinClasswithCode(BuildContext context, String classCode) async {
try {
final QueryPublicRoomsResponse queryPublicRoomsResponse = final QueryPublicRoomsResponse queryPublicRoomsResponse =
await Matrix.of(context).client.queryPublicRooms( await Matrix.of(context).client.queryPublicRooms(
limit: 1, limit: 1,
@ -118,7 +119,8 @@ class ClassController extends BaseController {
}); });
if (classChunk == null) { if (classChunk == null) {
ClassCodeUtil.messageSnack(context, L10n.of(context)!.unableToFindClass); ClassCodeUtil.messageSnack(
context, L10n.of(context)!.unableToFindClass);
return; return;
} }
@ -135,6 +137,12 @@ class ClassController extends BaseController {
setActiveSpaceIdInChatListController(classChunk.roomId); setActiveSpaceIdInChatListController(classChunk.roomId);
GoogleAnalytics.joinClass(classCode); GoogleAnalytics.joinClass(classCode);
return; return;
} catch (err) {
ClassCodeUtil.messageSnack(
context,
ErrorCopy(context, err).body,
);
}
// P-EPIC // P-EPIC
// prereq - server needs ability to invite to private room. how? // prereq - server needs ability to invite to private room. how?
// does server api have ability with admin token? // does server api have ability with admin token?

@ -1,7 +1,6 @@
import 'dart:math'; import 'dart:math';
import 'package:adaptive_dialog/adaptive_dialog.dart'; 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';
@ -35,18 +34,10 @@ class ClassCodeUtil {
], ],
); );
if (classCode == null || classCode.single.isEmpty) return; if (classCode == null || classCode.single.isEmpty) return;
try {
await pangeaController.classController.joinClasswithCode( await pangeaController.classController.joinClasswithCode(
context, context,
classCode.first, classCode.first,
); );
} catch (err) {
messageSnack(
context,
ErrorCopy(context, err).body,
);
}
} }
static messageDialog( static messageDialog(

@ -1,7 +1,6 @@
import 'package:fluffychat/pangea/constants/url_query_parameter_keys.dart'; import 'package:fluffychat/pangea/constants/url_query_parameter_keys.dart';
import 'package:fluffychat/pangea/controllers/pangea_controller.dart'; import 'package:fluffychat/pangea/controllers/pangea_controller.dart';
import 'package:fluffychat/pangea/utils/class_code.dart'; import 'package:fluffychat/pangea/utils/class_code.dart';
import 'package:fluffychat/widgets/layouts/empty_page.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:go_router/go_router.dart';
@ -28,7 +27,7 @@ class _JoinClassWithLinkState extends State<JoinClassWithLink> {
void initState() { void initState() {
super.initState(); super.initState();
Future.delayed(Duration.zero, () { Future.delayed(Duration.zero, () async {
classCode = GoRouterState.of(context) classCode = GoRouterState.of(context)
.uri .uri
.queryParameters[UrlQueryParameterKeys.classCode]; .queryParameters[UrlQueryParameterKeys.classCode];
@ -42,8 +41,6 @@ class _JoinClassWithLinkState extends State<JoinClassWithLink> {
} }
if (!Matrix.of(context).client.isLogged()) { if (!Matrix.of(context).client.isLogged()) {
return ClassCodeUtil.messageDialog(
context, L10n.of(context)!.pleaseLoginFirst, () async {
await _pangeaController.pStoreService.save( await _pangeaController.pStoreService.save(
PLocalKey.cachedClassCodeToJoin, PLocalKey.cachedClassCodeToJoin,
classCode, classCode,
@ -51,7 +48,7 @@ class _JoinClassWithLinkState extends State<JoinClassWithLink> {
local: true, local: true,
); );
context.go("/home"); context.go("/home");
}); return;
} }
_pangeaController.classController _pangeaController.classController
@ -59,18 +56,17 @@ class _JoinClassWithLinkState extends State<JoinClassWithLink> {
context, context,
classCode!, classCode!,
) )
.onError( .onError((error, stackTrace) {
(error, stackTrace) => ClassCodeUtil.messageSnack( ClassCodeUtil.messageSnack(
context, context,
ErrorCopy(context, error).body, ErrorCopy(context, error).body,
), );
) }).whenComplete(
.whenComplete(
() => context.go("/rooms"), () => context.go("/rooms"),
); );
}); });
} }
@override @override
Widget build(BuildContext context) => const EmptyPage(); Widget build(BuildContext context) => const SizedBox();
} }

Loading…
Cancel
Save