import 'dart:developer';
import 'package:anyway/modules/step_between_landmarks.dart';
import 'package:flutter/material.dart';

import 'package:anyway/modules/landmark_card.dart';
import 'package:anyway/structs/landmark.dart';
import 'package:anyway/structs/trip.dart';
import 'package:anyway/main.dart';



List<Widget> landmarksList(Trip trip) {
  log("Trip ${trip.uuid} ${trip.landmarks.length} landmarks");
  
  List<Widget> children = [];

  log("Trip ${trip.uuid} ${trip.landmarks.length} landmarks");

  if (trip.landmarks.isEmpty || trip.landmarks.length <= 1 && trip.landmarks.first.type == start ) {
    children.add(
      const Text("No landmarks in this trip"),
    );
    return children;
  }

  for (Landmark landmark in trip.landmarks) {
    children.add(
      Dismissible(
        key: ValueKey<int>(landmark.hashCode),
        child: LandmarkCard(landmark),
        dismissThresholds: {DismissDirection.endToStart: 0.95, DismissDirection.startToEnd: 0.95},
        onDismissed: (direction) {
          log('Removing ${landmark.name}');
          trip.removeLandmark(landmark);

          rootScaffoldMessengerKey.currentState!.showSnackBar(
            SnackBar(content: Text("We won't show ${landmark.name} again"))
          );
        },

        background: Container(color: Colors.red),
        secondaryBackground: Container(
          color: Colors.red,
          child: Icon(
            Icons.delete,
            color: Colors.white,
          ),
          padding: EdgeInsets.all(15),
          alignment: Alignment.centerRight,
        ),
      )
    );

    if (landmark.next != null) {
      children.add(
        StepBetweenLandmarks(current: landmark, next: landmark.next!)
      );
    }
  }

  return children;
}

