LCOV - code coverage report
Current view: top level - utils - extensions.dart Coverage Total Hit
Test: lcov_cleaned.info Lines: 0.0 % 46 0
Test Date: 2025-06-20 10:50:47 Functions: - 0 0

            Line data    Source code
       1              : import 'package:flutter_chrome_cast/lib.dart';
       2              : 
       3              : /// Extensions for [GoogleCastMediaMetadata] to provide additional functionality.
       4              : extension GoogleCastMediaMetadataExtensions on GoogleCastMediaMetadata {
       5              :   /// Extracts the title from the metadata based on the metadata type.
       6            0 :   String? get extractedTitle {
       7            0 :     final type = metadataType;
       8              :     String? title;
       9              :     final metadata = this;
      10              : 
      11              :     switch (type) {
      12            0 :       case GoogleCastMediaMetadataType.tvShowMediaMetadata:
      13              :         metadata as GoogleCastTvShowMediaMetadata;
      14            0 :         title = metadata.seriesTitle;
      15              :         break;
      16            0 :       case GoogleCastMediaMetadataType.genericMediaMetadata:
      17              :         metadata as GoogleCastGenericMediaMetadata;
      18            0 :         title = metadata.title;
      19              :         break;
      20            0 :       case GoogleCastMediaMetadataType.movieMediaMetadata:
      21              :         metadata as GoogleCastMovieMediaMetadata;
      22            0 :         title = metadata.title;
      23              :         break;
      24            0 :       case GoogleCastMediaMetadataType.musicTrackMediaMetadata:
      25              :         metadata as GoogleCastMusicMediaMetadata;
      26            0 :         title = metadata.title;
      27              :         break;
      28            0 :       case GoogleCastMediaMetadataType.photoMediaMetadata:
      29              :         metadata as GoogleCastPhotoMediaMetadata;
      30            0 :         title = metadata.title;
      31              :         break;
      32              :       default:
      33              :     }
      34              :     return title;
      35              :   }
      36              : 
      37              :   /// Extracts the subtitle from the metadata based on the metadata type.
      38            0 :   String? get extractedSubtitle {
      39            0 :     final type = metadataType;
      40              :     String? subtitle;
      41              :     final metadata = this;
      42              : 
      43              :     switch (type) {
      44            0 :       case GoogleCastMediaMetadataType.tvShowMediaMetadata:
      45              :         metadata as GoogleCastTvShowMediaMetadata;
      46              :         // For TV shows, create subtitle from season and episode info
      47            0 :         if (metadata.season != null && metadata.episode != null) {
      48            0 :           subtitle = 'S${metadata.season}E${metadata.episode}';
      49            0 :         } else if (metadata.season != null) {
      50            0 :           subtitle = 'Season ${metadata.season}';
      51            0 :         } else if (metadata.episode != null) {
      52            0 :           subtitle = 'Episode ${metadata.episode}';
      53              :         }
      54              :         break;
      55            0 :       case GoogleCastMediaMetadataType.genericMediaMetadata:
      56              :         metadata as GoogleCastGenericMediaMetadata;
      57            0 :         subtitle = metadata.subtitle;
      58              :         break;
      59            0 :       case GoogleCastMediaMetadataType.movieMediaMetadata:
      60              :         metadata as GoogleCastMovieMediaMetadata;
      61            0 :         subtitle = metadata.subtitle;
      62              :         break;
      63            0 :       case GoogleCastMediaMetadataType.musicTrackMediaMetadata:
      64              :         metadata as GoogleCastMusicMediaMetadata;
      65              :         // For music, use album name or artist as subtitle
      66            0 :         subtitle = metadata.albumName ?? metadata.artist;
      67              :         break;
      68            0 :       case GoogleCastMediaMetadataType.photoMediaMetadata:
      69              :         metadata as GoogleCastPhotoMediaMetadata;
      70            0 :         subtitle = metadata.artist;
      71              :         break;
      72              :       default:
      73              :     }
      74              :     //replace line breaks with spaces
      75              :     if (subtitle != null) {
      76            0 :       subtitle = subtitle.replaceAll('\n', ' ').replaceAll('\r', ' ');
      77              :     }
      78              :     return subtitle;
      79              :   }
      80              : }
      81              : 
      82              : /// Extensions for [Duration] to provide formatting functionality.
      83              : extension DurationExtension on Duration {
      84              :   /// Formats the duration as a readable string.
      85            0 :   String get formatted {
      86            0 :     int seconds = inSeconds;
      87            0 :     final days = seconds ~/ Duration.secondsPerDay;
      88            0 :     seconds -= days * Duration.secondsPerDay;
      89            0 :     final hours = seconds ~/ Duration.secondsPerHour;
      90            0 :     seconds -= hours * Duration.secondsPerHour;
      91            0 :     final minutes = seconds ~/ Duration.secondsPerMinute;
      92            0 :     seconds -= minutes * Duration.secondsPerMinute;
      93              : 
      94            0 :     final List<String> tokens = [];
      95            0 :     if (days != 0) {
      96            0 :       tokens.add('${days}d');
      97              :     }
      98            0 :     if (tokens.isNotEmpty || hours != 0) {
      99            0 :       tokens.add('$hours');
     100              :     }
     101              : 
     102            0 :     tokens.add('$minutes'.padLeft(2, '0'));
     103              : 
     104            0 :     tokens.add('$seconds'.padLeft(2, '0'));
     105              : 
     106            0 :     return tokens.join(':');
     107              :   }
     108              : }
        

Generated by: LCOV version 2.3.1-1