renderDeepLink function

void renderDeepLink(
  1. LiveBlock block,
  2. Map<String, Object?> payload,
  3. PlatformLinks platform
)

Adds the outcome of a deeplink.open payload to block, stage by stage, so a link that goes nowhere says which step dropped it.

Implementation

void renderDeepLink(
  LiveBlock block,
  Map<String, Object?> payload,
  PlatformLinks platform,
) {
  block.note('${payload['uri']} → ${payload['path']}');

  if (payload['registered'] != true) {
    block.warning(
      payload['usedFallback'] == true
          ? '${payload['path']} isn\'t registered — falling back to '
                '${payload['target']}'
          : '${payload['path']} isn\'t registered, and no fallbackRoute is '
                'set — the unknown route handles it',
    );
  }

  switch (payload['callback']) {
    case 'continued':
      block.note('onIncomingLink continued');
    case 'stopped':
      block.warning('onIncomingLink returned false, so nothing was routed');
    case 'skipped':
      block.note('onIncomingLink skipped');
  }

  final Object? query = payload['queryParameters'];
  final String parameters = query is Map && query.isNotEmpty
      ? '  ${query.entries.map((e) => '${e.key}=${e.value}').join(' ')}'
      : '';

  if (payload['dry'] == true) {
    block
      ..success('Would open ${payload['target']}$parameters')
      ..note('Nothing was sent to the app');
  } else if (payload['routed'] == true) {
    block.success(
      '${payload['from'] ?? '-'} → ${payload['current'] ?? payload['target']}'
      '$parameters',
    );
  } else {
    block.note('Stayed on ${payload['current'] ?? '-'}');
  }

  renderPlatformReach(block, payload['uri'], platform);
}