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

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<Observable<InstanceInfo>> {
    constructor (private http: HttpClient) { }

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