//
//  SetupView.swift
//  damus
//
//  Created by William Casarin on 2022-05-18.
//

import SwiftUI


struct SetupView: View {
    @StateObject var navigationCoordinator: NavigationCoordinator = NavigationCoordinator()
    
    var body: some View {
        NavigationStack(path: $navigationCoordinator.path) {
            ZStack {
                VStack(alignment: .center) {
                    Spacer()
                    
                    Image("logo-nobg")
                        .resizable()
                        .shadow(color: DamusColors.purple, radius: 2)
                        .frame(width: 56, height: 56, alignment: .center)
                        .padding(.top, 20.0)

                    Text("Welcome to Damus", comment: "Welcome text shown on the first screen when user is not logged in.")
                        .font(.title)
                        .fontWeight(.heavy)
                        .foregroundStyle(DamusLogoGradient.gradient)

                    Text("The go-to iOS Nostr client", comment: "Quick description of what Damus is")
                        .foregroundColor(DamusColors.mediumGrey)
                        .padding(.top, 10)
                    
                    WhatIsNostr()
                        .padding()
                    
                    WhyWeNeedNostr()
                        .padding()
                    
                    Spacer()
                    
                    Button(action: {
                        navigationCoordinator.push(route: Route.Login)
                    }) {
                        HStack {
                            Text("Let's get started!", comment: "Button to continue to login page.")
                                .fontWeight(.semibold)
                        }
                        .frame(minWidth: 300, maxWidth: .infinity, maxHeight: 12, alignment: .center)
                    }
                    .buttonStyle(GradientButtonStyle())
                    .padding()
                }
            }
            .background(DamusBackground(maxHeight: 300), alignment: .top)
            .navigationDestination(for: Route.self) { route in
                route.view(navigationCoordinator: navigationCoordinator, damusState: DamusState.empty)
            }
        }
        .navigationBarTitleDisplayMode(.inline)
        .navigationViewStyle(StackNavigationViewStyle())
    }
}

struct LearnAboutNostrLink: View {
    @Environment(\.openURL) var openURL
    var body: some View {
        HStack {
            Button(action: {
                openURL(URL(string: "https://nostr.com")!)
            }, label: {
                Text("Learn more about Nostr", comment: "Button that opens up a webpage where the user can learn more about Nostr.")
                    .foregroundColor(.accentColor)
            })
            
            Image(systemName: "arrow.up.right")
                .font(.footnote)
                .foregroundColor(.accentColor)
        }
    }
}

struct WhatIsNostr: View {
    var body: some View {
        HStack(alignment: .top) {
            Image("nostr-logo")
            VStack(alignment: .leading) {
                Text("What is Nostr?", comment: "Heading text for section describing what is Nostr.")
                    .fontWeight(.bold)
                    .padding(.vertical, 10)
                
                Text("Nostr is a protocol, designed for simplicity, that aims to create a censorship-resistant global social network", comment: "Description about what is Nostr.")
                    .foregroundColor(DamusColors.mediumGrey)
                
                LearnAboutNostrLink()
                    .padding(.top, 10)
            }
            Spacer()
        }
    }
}

struct WhyWeNeedNostr: View {
    var body: some View {
        HStack(alignment: .top) {
            Image("lightbulb")
            VStack(alignment: .leading) {
                Text("Why we need Nostr?", comment: "Heading text for section describing why Nostr is needed.")
                    .fontWeight(.bold)
                    .padding(.vertical, 10)
                
                Text("Social media has developed into a key way information flows around the world. Unfortunately, our current social media systems are broken", comment: "Description about why Nostr is needed.")
                    .foregroundColor(DamusColors.mediumGrey)
            }
            Spacer()
        }
    }
}

struct SetupView_Previews: PreviewProvider {
    static var previews: some View {
        Group {
            SetupView()
                .previewDevice(PreviewDevice(rawValue: "iPhone SE (3rd generation)"))
            SetupView()
                .previewDevice(PreviewDevice(rawValue: "iPhone 13 Pro Max"))
        }
    }
}

