2023-07-21 17:14:11 +03:00
|
|
|
using System.Collections.Generic;
|
2023-07-20 20:24:16 +03:00
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace Kruzya.TelegramBot.Core.Options;
|
|
|
|
|
|
|
|
|
|
public abstract class AbstractOption<TOption, TValue> : IOption<TValue>
|
|
|
|
|
where TOption: AbstractOption<TOption, TValue>
|
|
|
|
|
{
|
2023-07-21 17:14:11 +03:00
|
|
|
public abstract string OptionId { get; }
|
|
|
|
|
public abstract string OptionName { get; }
|
|
|
|
|
public abstract OptionType OptionType { get; }
|
|
|
|
|
public abstract TValue DefaultValue { get; }
|
|
|
|
|
public List<SelectChoice> ChoiceList { get; } = new();
|
|
|
|
|
|
2023-07-20 20:24:16 +03:00
|
|
|
private readonly IOptionProvider _optionProvider;
|
|
|
|
|
|
|
|
|
|
protected AbstractOption(IOptionProvider optionProvider)
|
|
|
|
|
{
|
|
|
|
|
_optionProvider = optionProvider;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<TValue> GetValueAsync(long chatId)
|
|
|
|
|
{
|
2023-07-21 17:14:11 +03:00
|
|
|
return await _optionProvider.GetValueAsync(chatId, OptionId, DefaultValue);
|
2023-07-20 20:24:16 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task SetValueAsync(long chatId, TValue value)
|
|
|
|
|
{
|
2023-07-21 17:14:11 +03:00
|
|
|
await _optionProvider.SetValueAsync(chatId, OptionId, value);
|
2023-07-20 20:24:16 +03:00
|
|
|
}
|
|
|
|
|
}
|