import { window, workspace, WorkspaceFolder } from "vscode";

export namespace Utils {
    /**
     * Get date time string.
     * 
     * Example: Oct 17, 2024, 11:26:47 PM EDT
     */
    export function getDateString(value?: string) {
        const date = value ? new Date(value) : new Date();

        return date.toLocaleString(undefined, {
            year: 'numeric',
            month: 'short',
            day: 'numeric',
            hour: 'numeric',
            minute: 'numeric',
            second: "numeric",
            hour12: true,
            timeZoneName: 'short'
        });
    }

    /**
     * Get time duration in minutes and seconds.
     * 
     * Examples: 31s or 2m 52s
     */
    export function getTimeDuration(startValue: string, endValue: string) {
        const start = new Date(startValue).getTime();
        const end = new Date(endValue).getTime();

        const totalSeconds = Math.floor((end - start) / 1000);
        if (totalSeconds < 60) {
            return `${totalSeconds}s`;
        }

        const minutes = Math.floor(totalSeconds / 60);
        const seconds = totalSeconds % 60;
        return `${minutes}m ${seconds}s`;
    }

    /**
     * Get the provided workspace folder or the first one if there are multiple.
     */
    export async function getWorkspaceFolder(workspaceFolder?: WorkspaceFolder) {
        if (workspaceFolder) {
            return workspaceFolder;
        } else {
            const workspaceFolders = workspace.workspaceFolders;
            if (workspaceFolders && workspaceFolders.length > 0) {
                return workspaceFolders[0];
            } else {
                await window.showErrorMessage('Failed to find a workspace folder');
                return;
            }
        }
    }
}