import {Inject, Injectable} from '@nestjs/common';
import {AbstractHttpAdapter} from '@nestjs/core';
import express from 'express';
import path from 'path';
import {EXTENSION_DIR_NAME, EXTENSION_TYPES, STATIC_APP_BASE_ENDPOINT, SystemProvider} from '@relate/common';

@Injectable()
export class AppsService {
    constructor(@Inject(SystemProvider) protected readonly systemProvider: SystemProvider) {}

    async register(httpAdapter: AbstractHttpAdapter): Promise<void> {
        if (!httpAdapter) {
            return;
        }

        const app = httpAdapter.getInstance();
        const environment = await this.systemProvider.getEnvironment();
        const installedApps = path.join(environment.dataPath, EXTENSION_DIR_NAME, EXTENSION_TYPES.STATIC);

        app.use(STATIC_APP_BASE_ENDPOINT, express.static(installedApps));
    }
}