1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2025-06-19 08:15:16 +00:00

Add references support

This commit is contained in:
2020-04-16 12:06:01 +02:00
parent 7de882338d
commit 2bb75da017
6 changed files with 127 additions and 8 deletions

View File

@ -27,3 +27,7 @@ bool validateUrl(String url) {
return false;
}
}
/// Validate user reference
bool validateUserReference(String ref) =>
RegExp(r'@[a-zA-Z0-9]+').hasMatch(ref);

View File

@ -1,5 +1,9 @@
import 'package:comunic/helpers/virtual_directory_helper.dart';
import 'package:comunic/ui/routes/home_route.dart';
import 'package:comunic/ui/routes/single_post_route.dart';
import 'package:comunic/ui/routes/user_page_route.dart';
import 'package:comunic/utils/intl_utils.dart';
import 'package:comunic/utils/ui_utils.dart';
import 'package:flutter/material.dart';
import 'package:meta/meta.dart';
@ -26,3 +30,41 @@ void openPostFullScreen(int postID, BuildContext context) {
Navigator.of(context)
.push(MaterialPageRoute(builder: (c) => SinglePostRoute(postID: postID)));
}
/// Open a virtual directory
void openVirtualDirectory(BuildContext context, String directory) async {
if (directory.startsWith("@")) directory = directory.substring(1);
try {
final result = await VirtualDirectoryHelper().find(directory);
switch (result.type) {
case VirtualDirectoryType.USER:
openUserPage(context: context, userID: result.id);
break;
case VirtualDirectoryType.GROUP:
HomeController.of(context).openGroup(result.id);
break;
case VirtualDirectoryType.NONE:
await showDialog(
context: context,
builder: (c) => AlertDialog(
title: Text(tr("Error")),
content: Text(tr("Could not find related resource!")),
actions: <Widget>[
MaterialButton(
child: Text(tr("OK")),
onPressed: () => Navigator.of(c).pop(),
)
],
));
break;
}
} catch (e, stack) {
print(e);
print(stack);
showSimpleSnack(context, tr("Could not search virtual directory!"));
}
}