import 'dart:io';

import 'package:better_open_file/better_open_file.dart';
import 'package:flutter/material.dart';
import 'package:photo_view/photo_view.dart';
import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart';

import 'confirmDialog.dart';
import 'placeholderView.dart';

class FileViewer extends StatelessWidget {
  final String path;
  final bool openExternal;
  const FileViewer({super.key, required this.path, this.openExternal = false});


  @override
  Widget build(BuildContext context) {
    AppBar appbar = AppBar(
      title: Text(path.split("/").last),
      actions: [
        IconButton(onPressed: () => ConfirmDialog(
          title: "Extern öffnen",
          content: "Möchtest du die Datei mit dem Systemdialog öffnen?",
          onConfirm: () => Navigator.of(context).push(MaterialPageRoute(builder: (context) => FileViewer(path: path, openExternal: true))),
          confirmButton: "Öffnen",
        ).asDialog(context), icon: const Icon(Icons.open_in_new))
      ],
    );
    switch(openExternal ? "x" : path.split(".").last) {
      case "png":
      case "jpg":
      case "jpeg":
        return Scaffold(
            appBar: appbar,
            backgroundColor: Colors.white,
            body: PhotoView(
              imageProvider: Image.file(File(path)).image,
              backgroundDecoration: const BoxDecoration(color: Colors.white60),
            )
        );


      case "pdf":
        return Scaffold(
          appBar: appbar,
          body: SfPdfViewer.file(
            File(path),
          ),
        );

      default:
        OpenFile.open(path).then((result) {
          Navigator.of(context).pop();
          if(result.type != ResultType.done) {
            showDialog(context: context, builder: (context) {
              return AlertDialog(
                content: Text(result.message),
              );
            });
          }
        });
        return const PlaceholderView(text: "Datei wird extern geöffnet...", icon: Icons.open_in_new);
    }
  }
}