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

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

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

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

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

Loading…
Cancel
Save