content: /*
   *  This file is part of BlackHole (https://github.com/Sangwan5688/BlackHole).
   * 
   * BlackHole is free software: you can redistribute it and/or modify
   * it under the terms of the GNU Lesser General Public License as published by
   * the Free Software Foundation, either version 3 of the License, or
   * (at your option) any later version.
   *
   * BlackHole is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
   * GNU Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public License
   * along with BlackHole.  If not, see <http://www.gnu.org/licenses/>.
   * 
   * Copyright (c) 2021-2022, Ankit Sangwan
   */
  
  import 'package:audio_service/audio_service.dart';
  import 'package:blackhole/CustomWidgets/snackbar.dart';
  import 'package:blackhole/Screens/Player/audioplayer.dart';
  import 'package:flutter/cupertino.dart';
  import 'package:flutter_gen/gen_l10n/app_localizations.dart';
  import 'package:get_it/get_it.dart';
  
  void addToNowPlaying({
    required BuildContext context,
    required MediaItem mediaItem,
    bool showNotification = true,
  }) {
    final AudioPlayerHandler audioHandler = GetIt.I<AudioPlayerHandler>();
    final MediaItem? currentMediaItem = audioHandler.mediaItem.value;
    if (currentMediaItem != null &&
        currentMediaItem.extras!['url'].toString().startsWith('http')) {
      if (audioHandler.queue.value.contains(mediaItem) && showNotification) {
        ShowSnackBar().showSnackBar(
          context,
          AppLocalizations.of(context)!.alreadyInQueue,
        );
      } else {
        audioHandler.addQueueItem(mediaItem);
  
        if (showNotification) {
          ShowSnackBar().showSnackBar(
            context,
            AppLocalizations.of(context)!.addedToQueue,
          );
        }
      }
    } else {
      if (showNotification) {
        ShowSnackBar().showSnackBar(
          context,
          currentMediaItem == null
              ? AppLocalizations.of(context)!.nothingPlaying
              : AppLocalizations.of(context)!.cantAddToQueue,
        );
      }
    }
  }
  
  void playNext(
    MediaItem mediaItem,
    BuildContext context,
  ) {
    final AudioPlayerHandler audioHandler = GetIt.I<AudioPlayerHandler>();
    final MediaItem? currentMediaItem = audioHandler.mediaItem.value;
    if (currentMediaItem != null &&
        currentMediaItem.extras!['url'].toString().startsWith('http')) {
      final queue = audioHandler.queue.value;
      if (queue.contains(mediaItem)) {
        audioHandler.moveQueueItem(
          queue.indexOf(mediaItem),
          queue.indexOf(currentMediaItem) + 1,
        );
      } else {
        audioHandler.addQueueItem(mediaItem).then(
              (value) => audioHandler.moveQueueItem(
                queue.length,
                queue.indexOf(currentMediaItem) + 1,
              ),
            );
      }
  
      ShowSnackBar().showSnackBar(
        context,
        '"${mediaItem.title}" ${AppLocalizations.of(context)!.willPlayNext}',
      );
    } else {
      ShowSnackBar().showSnackBar(
        context,
        currentMediaItem == null
            ? AppLocalizations.of(context)!.nothingPlaying
            : AppLocalizations.of(context)!.cantAddToQueue,
      );
    }
  }
  