import DesignSystem
import Models
import NukeUI
import SwiftUI

struct InstanceInfoView: View {
  @EnvironmentObject private var theme: Theme

  let instance: Instance

  var body: some View {
    Form {
      InstanceInfoSection(instance: instance)
    }
    .navigationTitle("instance.info.navigation-title")
    .scrollContentBackground(.hidden)
    .background(theme.secondaryBackgroundColor)
  }
}

public struct InstanceInfoSection: View {
  @EnvironmentObject private var theme: Theme

  let instance: Instance

  public var body: some View {
    Section("instance.info.section.info") {
      LabeledContent("instance.info.name", value: instance.title)
      Text(instance.shortDescription)
      LabeledContent("instance.info.email", value: instance.email)
      LabeledContent("instance.info.version", value: instance.version)
      LabeledContent("instance.info.users", value: "\(instance.stats.userCount)")
      LabeledContent("instance.info.posts", value: "\(instance.stats.statusCount)")
      LabeledContent("instance.info.domains", value: "\(instance.stats.domainCount)")
    }
    .listRowBackground(theme.primaryBackgroundColor)

    if let rules = instance.rules {
      Section("instance.info.section.rules") {
        ForEach(rules) { rule in
          Text(rule.text)
        }
      }
      .listRowBackground(theme.primaryBackgroundColor)
    }
  }
}