import type { INodeProperties } from 'n8n-workflow';

export const ALLOWED_CONFIG_KEYS = ['user.email', 'user.name', 'remote.origin.url'];

export const addConfigFields: INodeProperties[] = [
	{
		displayName: 'Key',
		name: 'key',
		type: 'options',
		displayOptions: {
			show: {
				operation: ['addConfig'],
				'@version': [{ _cnd: { gte: 1.1 } }],
			},
		},
		options: ALLOWED_CONFIG_KEYS.map((key) => ({
			name: key,
			value: key,
		})),
		default: '',
		description: 'Name of the key to set',
		required: true,
	},
	{
		displayName: 'Key',
		name: 'key',
		type: 'string',
		displayOptions: {
			show: {
				operation: ['addConfig'],
				'@version': [{ _cnd: { lt: 1.1 } }],
			},
		},
		default: '',
		placeholder: 'user.email',
		description: 'Name of the key to set',
		required: true,
	},
	{
		displayName: 'Value',
		name: 'value',
		type: 'string',
		displayOptions: {
			show: {
				operation: ['addConfig'],
			},
		},
		default: '',
		placeholder: 'name@example.com',
		description: 'Value of the key to set',
		required: true,
	},
	{
		displayName: 'Options',
		name: 'options',
		type: 'collection',
		displayOptions: {
			show: {
				operation: ['addConfig'],
			},
		},
		placeholder: 'Add option',
		default: {},
		options: [
			{
				displayName: 'Mode',
				name: 'mode',
				type: 'options',
				options: [
					{
						name: 'Append',
						value: 'append',
					},
					{
						name: 'Set',
						value: 'set',
					},
				],
				default: 'set',
				description: 'Append setting rather than set it in the local config',
			},
		],
	},
];
