// SPDX-License-Identifier: MIT
// Copyright (c) 2022 The Pybricks Authors

import { createAction } from '../../actions';
import { Hub } from '../../components/hubPicker';

import { pythonFileExtension } from '../../pybricksMicropython/lib';

/** Supported file extensions. */
type SupportedFileExtension = typeof pythonFileExtension;

/**
 * Requests to show the new file wizard dialog.
 */
export const newFileWizardShow = createAction(() => ({
    type: 'explorer.newFileWizard.action.show',
}));

/**
 * Indicates that the use accepted the new file wizard dialog.
 * @param fileName The user-provided file name.
 * @param fileExtension The user-provided file extension.
 * @param hubType The user-provided hub type or undefined for an empty file.
 */
export const newFileWizardDidAccept = createAction(
    (
        fileName: string,
        fileExtension: SupportedFileExtension,
        hubType: Hub | undefined,
    ) => ({
        type: 'explorer.newFileWizard.action.didAccept',
        fileName,
        fileExtension,
        hubType,
    }),
);

/**
 * Indicates that the use accepted the new file wizard dialog.
 */
export const newFileWizardDidCancel = createAction(() => ({
    type: 'explorer.newFileWizard.action.didCancel',
}));
