
namespace ShoopNCook.Pages;
using Models;
using ShoopNCook.Views;
using Endpoint;
using LocalEndpoint;

public partial class HomePage : ContentPage
{
	public HomePage(Account account, IUserNotifier notifier, IEndpoint endpoint)
    {
		InitializeComponent();

        IRecipesService service = endpoint.RecipesService;
        IAccountRecipesPreferences preferences = service.GetPreferencesOf(account);


        //TODO this code can be factorised
        void PushRecipe(Layout layout, RecipeInfo info)
        {
            layout.Children.Add(new RecipeView(info, () =>
            {
                Recipe recipe = service.GetRecipe(info);
                Shell.Current.Navigation.PushAsync(new RecipePage(recipe, notifier, preferences, 1));
            }));
        }

        service.PopularRecipes().ForEach(recipe => PushRecipe(PopularsList, recipe));
        preferences.GetRecommendedRecipes().ForEach(recipe => PushRecipe(RecommendedList, recipe));

        ProfilePictureImage.Source = ImageSource.FromUri(account.User.ProfilePicture);
        ProfilePictureName.Text = account.User.Name;
	}


    

    private void OnSyncButtonClicked(object sender, EventArgs e)
    {
        Shell.Current.Navigation.PushAsync(new SearchPage());
    }
}