From 3b1c6e3d2b162da75ab6bfd365601facc48c9fb9 Mon Sep 17 00:00:00 2001 From: Lukas Lihotzki Date: Thu, 23 Sep 2021 13:15:28 +0200 Subject: [PATCH] refactor: arbitrary components in _parseIdentifierIntoUri --- lib/src/utils/matrix_id_string_extension.dart | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/src/utils/matrix_id_string_extension.dart b/lib/src/utils/matrix_id_string_extension.dart index df458583..ad177f9c 100644 --- a/lib/src/utils/matrix_id_string_extension.dart +++ b/lib/src/utils/matrix_id_string_extension.dart @@ -91,14 +91,13 @@ extension MatrixIdExtension on String { (m) => Uri.encodeComponent(m.group(0)))) .replaceAll('#', '%23')); } else { - final match = - RegExp(r'^([#!@+][^:]*:[^\/?]*)(?:\/(\$[^?]*))?(?:\?(.*))?$') - .firstMatch(this); - if (match == null) return null; return Uri( - pathSegments: - [match.group(1), match.group(2)].where((x) => x != null), - query: match.group(3)); + pathSegments: RegExp(r'/((?:[#!@+][^:]*:)?[^/?]*)(?:\?.*$)?') + .allMatches('/$this') + .map((m) => m.group(1)), + query: RegExp(r'(?:/(?:[#!@+][^:]*:)?[^/?]*)*\?(.*$)') + .firstMatch('/$this') + ?.group(1)); } }