parseIdentifierIntoParts method

MatrixIdentifierStringExtensionResults? parseIdentifierIntoParts()

Separate a matrix identifier string into a primary indentifier, a secondary identifier, a query string and already parsed via parameters. A matrix identifier string can be an mxid, a matrix.to-url or a matrix-uri.

Implementation

MatrixIdentifierStringExtensionResults? parseIdentifierIntoParts() {
  final uri = _parseIdentifierIntoUri();
  if (uri == null) return null;
  final primary = uri.pathSegments.isNotEmpty ? uri.pathSegments[0] : null;
  if (primary == null || !primary.isValidMatrixId) return null;
  final secondary = uri.pathSegments.length > 1 ? uri.pathSegments[1] : null;
  if (secondary != null && !secondary.isValidMatrixId) return null;

  return MatrixIdentifierStringExtensionResults(
    primaryIdentifier: primary,
    secondaryIdentifier: secondary,
    queryString: uri.query.isNotEmpty ? uri.query : null,
    via: (uri.queryParametersAll['via'] ?? []).toSet(),
    action: uri.queryParameters['action'],
  );
}