import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { Resolve } from '@angular/router'

export interface User {
  id: number
  active_config: number
  active_version: string
  custom_connection_gateway: string|null
  custom_connection_gateway_token: string|null
  config_sync_token: string
  github_username: string
  is_pro: boolean
  is_sponsor: boolean
}

export interface Config {
  id: number
  content: string
  last_used_with_version: string
  created_at: Date
  modified_at: Date
}

export interface Version {
  version: string
  plugins: string[]
}

export interface InstanceInfo {
  login_enabled: boolean
  homepage_enabled: boolean
}

export interface Gateway {
  host: string
  port: number
  url: string
  auth_token: string
}

@Injectable({ providedIn: 'root' })
export class InstanceInfoResolver implements Resolve<Promise<InstanceInfo>> {
  constructor (private http: HttpClient) { }

  resolve (): Promise<InstanceInfo> {
    return this.http.get('/api/1/instance-info').toPromise() as Promise<InstanceInfo>
  }
}
