Skip to content

Commit

Permalink
Moved TTSPlayer static provider data to ProviderManager.
Browse files Browse the repository at this point in the history
  • Loading branch information
moonstar-x committed Mar 20, 2022
1 parent 41c36b1 commit 86184e7
Show file tree
Hide file tree
Showing 10 changed files with 50 additions and 51 deletions.
4 changes: 2 additions & 2 deletions src/classes/tts/CachedTTSSettings.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* eslint-disable max-params */
const { Collection, Guild, GuildMember, Channel } = require('discord.js');
const TTSPlayer = require('./TTSPlayer');
const ProviderManager = require('./providers/ProviderManager');
const merge = require('deepmerge');

class CachedTTSSettings {
Expand Down Expand Up @@ -63,7 +63,7 @@ class CachedTTSSettings {
const memberSettings = await this.get(interaction.member);
const guildSettings = await this.get(interaction.guild);

return merge.all([TTSPlayer.DEFAULT_SETTINGS, guildSettings, memberSettings]);
return merge.all([ProviderManager.DEFAULT_SETTINGS, guildSettings, memberSettings]);
}

async _set(key, settings, cache, guild) {
Expand Down
5 changes: 3 additions & 2 deletions src/classes/tts/TTSChannelHandler.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
const logger = require('@greencoast/logger');
const { cleanMessage } = require('../../utils/mentions');
const { getCantConnectToChannelReason } = require('../../utils/channel');
const TTSPlayer = require('./TTSPlayer');
const ProviderManager = require('./providers/ProviderManager');

class TTSChannelHandler {
constructor(client) {
Expand Down Expand Up @@ -36,7 +36,8 @@ class TTSChannelHandler {
const ttsPlayer = this.client.getTTSPlayer(message.guild);
const connection = ttsPlayer.voice.getConnection();

const extras = channelSettings[channelSettings.provider] || TTSPlayer.DEFAULT_SETTINGS[channelSettings.provider];
const extras = channelSettings[channelSettings.provider] ||
ProviderManager.DEFAULT_SETTINGS[channelSettings.provider];

const { me: { voice: myVoice }, name: guildName, members, channels, roles } = message.guild;
const { channel: memberChannel } = message.member.voice;
Expand Down
22 changes: 0 additions & 22 deletions src/classes/tts/TTSPlayer.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
const logger = require('@greencoast/logger');
const { createAudioResource } = require('@discordjs/voice');
const GoogleProvider = require('./providers/GoogleProvider');
const AeiouProvider = require('./providers/AeiouProvider');
const Queue = require('../Queue');
const VoiceManager = require('../VoiceManager');

Expand Down Expand Up @@ -113,24 +111,4 @@ class TTSPlayer {
}
}

TTSPlayer.SUPPORTED_PROVIDERS = [GoogleProvider, AeiouProvider];
TTSPlayer.DEFAULT_PROVIDER = GoogleProvider;

TTSPlayer.PROVIDER_FRIENDLY_NAMES = TTSPlayer.SUPPORTED_PROVIDERS.reduce((obj, Provider) => {
return {
...obj,
[Provider.NAME]: Provider.FRIENDLY_NAME
};
}, {});
TTSPlayer.PROVIDER_DEFAULTS = TTSPlayer.SUPPORTED_PROVIDERS.reduce((obj, Provider) => {
return {
...obj,
[Provider.NAME]: Provider.EXTRA_DEFAULTS
};
}, {});
TTSPlayer.DEFAULT_SETTINGS = {
provider: TTSPlayer.DEFAULT_PROVIDER.NAME,
...TTSPlayer.PROVIDER_DEFAULTS
};

module.exports = TTSPlayer;
26 changes: 23 additions & 3 deletions src/classes/tts/providers/ProviderManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ class ProviderManager {
this.client = client;
this._providers = new Map();

this._providers.set(GoogleProvider.NAME, new GoogleProvider(client));
this._providers.set(AeiouProvider.NAME, new AeiouProvider(client));
this._providers.set(AmazonProvider.NAME, new AmazonProvider(client));
for (const Provider of ProviderManager.SUPPORTED_PROVIDERS) {
this._providers.set(Provider.NAME, new Provider(client));
}
}

getProvider(providerName) {
Expand All @@ -22,4 +22,24 @@ class ProviderManager {
}
}

ProviderManager.SUPPORTED_PROVIDERS = [GoogleProvider, AeiouProvider, AmazonProvider];
ProviderManager.DEFAULT_PROVIDER = GoogleProvider;

ProviderManager.PROVIDER_FRIENDLY_NAMES = ProviderManager.SUPPORTED_PROVIDERS.reduce((obj, Provider) => {
return {
...obj,
[Provider.NAME]: Provider.FRIENDLY_NAME
};
}, {});
ProviderManager.PROVIDER_DEFAULTS = ProviderManager.SUPPORTED_PROVIDERS.reduce((obj, Provider) => {
return {
...obj,
[Provider.NAME]: Provider.EXTRA_DEFAULTS
};
}, {});
ProviderManager.DEFAULT_SETTINGS = {
provider: ProviderManager.DEFAULT_PROVIDER.NAME,
...ProviderManager.PROVIDER_DEFAULTS
};

module.exports = ProviderManager;
10 changes: 5 additions & 5 deletions src/commands/main/config/DefaultSettingsCommand.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const { SlashCommand } = require('@greencoast/discord.js-extended');
const { SlashCommandBuilder } = require('@discordjs/builders');
const { MessageEmbed } = require('discord.js');
const { MESSAGE_EMBED } = require('../../../common/constants');
const TTSPlayer = require('../../../classes/tts/TTSPlayer');
const ProviderManager = require('../../../classes/tts/providers/ProviderManager');
const merge = require('deepmerge');

class DefaultSettingsCommand extends SlashCommand {
Expand All @@ -18,8 +18,8 @@ class DefaultSettingsCommand extends SlashCommand {
}

prepareFields(settings, localizer) {
return Object.keys(TTSPlayer.PROVIDER_FRIENDLY_NAMES).map((name) => {
const friendlyName = TTSPlayer.PROVIDER_FRIENDLY_NAMES[name];
return Object.keys(ProviderManager.PROVIDER_FRIENDLY_NAMES).map((name) => {
const friendlyName = ProviderManager.PROVIDER_FRIENDLY_NAMES[name];
const values = settings[name];
const valueKeys = Object.keys(values);

Expand All @@ -39,15 +39,15 @@ class DefaultSettingsCommand extends SlashCommand {
async run(interaction) {
const localizer = this.client.localizer.getLocalizer(interaction.guild);
const guildSettings = await this.client.ttsSettings.get(interaction.guild);
const currentSettings = merge(TTSPlayer.DEFAULT_SETTINGS, guildSettings);
const currentSettings = merge(ProviderManager.DEFAULT_SETTINGS, guildSettings);
const { provider, ...restSettings } = currentSettings;

const fields = this.prepareFields(restSettings, localizer);
const embed = new MessageEmbed()
.setTitle(localizer.t('command.settings.default.embed.title'))
.setColor(MESSAGE_EMBED.color)
.setDescription(localizer.t('command.settings.default.embed.description'))
.addField(localizer.t('command.settings.default.current.provider'), TTSPlayer.PROVIDER_FRIENDLY_NAMES[provider]);
.addField(localizer.t('command.settings.default.current.provider'), ProviderManager.PROVIDER_FRIENDLY_NAMES[provider]);

for (const key in fields) {
const field = fields[key];
Expand Down
8 changes: 4 additions & 4 deletions src/commands/main/config/MySettingsCommand.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const { SlashCommand } = require('@greencoast/discord.js-extended');
const { SlashCommandBuilder } = require('@discordjs/builders');
const { MessageEmbed } = require('discord.js');
const { MESSAGE_EMBED } = require('../../../common/constants');
const TTSPlayer = require('../../../classes/tts/TTSPlayer');
const ProviderManager = require('../../../classes/tts/providers/ProviderManager');

class MySettingsCommand extends SlashCommand {
constructor(client) {
Expand All @@ -17,8 +17,8 @@ class MySettingsCommand extends SlashCommand {
}

prepareFields(settings, localizer) {
return Object.keys(TTSPlayer.PROVIDER_FRIENDLY_NAMES).map((name) => {
const friendlyName = TTSPlayer.PROVIDER_FRIENDLY_NAMES[name];
return Object.keys(ProviderManager.PROVIDER_FRIENDLY_NAMES).map((name) => {
const friendlyName = ProviderManager.PROVIDER_FRIENDLY_NAMES[name];
const values = settings[name];
const valueKeys = Object.keys(values);

Expand All @@ -44,7 +44,7 @@ class MySettingsCommand extends SlashCommand {
.setTitle(localizer.t('command.settings.my.embed.title', { name: interaction.member.displayName }))
.setColor(MESSAGE_EMBED.color)
.setDescription(localizer.t('command.settings.my.embed.description'))
.addField(localizer.t('command.settings.my.current.provider'), TTSPlayer.PROVIDER_FRIENDLY_NAMES[provider]);
.addField(localizer.t('command.settings.my.current.provider'), ProviderManager.PROVIDER_FRIENDLY_NAMES[provider]);

for (const key in fields) {
const field = fields[key];
Expand Down
6 changes: 3 additions & 3 deletions src/commands/main/config/SetDefaultProviderCommand.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const { SlashCommand } = require('@greencoast/discord.js-extended');
const { SlashCommandBuilder } = require('@discordjs/builders');
const logger = require('@greencoast/logger');
const TTSPlayer = require('../../../classes/tts/TTSPlayer');
const ProviderManager = require('../../../classes/tts/providers/ProviderManager');

class SetDefaultProviderCommand extends SlashCommand {
constructor(client) {
Expand All @@ -18,15 +18,15 @@ class SetDefaultProviderCommand extends SlashCommand {
.setName('provider')
.setDescription('The provider to use from now on.')
.setRequired(true)
.addChoices(TTSPlayer.SUPPORTED_PROVIDERS.map((p) => [p.FRIENDLY_NAME, p.NAME]));
.addChoices(ProviderManager.SUPPORTED_PROVIDERS.map((p) => [p.FRIENDLY_NAME, p.NAME]));
})
});
}

async run(interaction) {
const localizer = this.client.localizer.getLocalizer(interaction.guild);
const providerName = interaction.options.getString('provider');
const providerFriendlyName = TTSPlayer.PROVIDER_FRIENDLY_NAMES[providerName];
const providerFriendlyName = ProviderManager.PROVIDER_FRIENDLY_NAMES[providerName];

await this.client.ttsSettings.set(interaction.guild, { provider: providerName });

Expand Down
6 changes: 3 additions & 3 deletions src/commands/main/config/SetMyProviderCommand.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const { SlashCommand } = require('@greencoast/discord.js-extended');
const { SlashCommandBuilder } = require('@discordjs/builders');
const logger = require('@greencoast/logger');
const TTSPlayer = require('../../../classes/tts/TTSPlayer');
const ProviderManager = require('../../../classes/tts/providers/ProviderManager');

class SetMyProviderCommand extends SlashCommand {
constructor(client) {
Expand All @@ -17,15 +17,15 @@ class SetMyProviderCommand extends SlashCommand {
.setName('provider')
.setDescription('The provider to use from now on.')
.setRequired(true)
.addChoices(TTSPlayer.SUPPORTED_PROVIDERS.map((p) => [p.FRIENDLY_NAME, p.NAME]));
.addChoices(ProviderManager.SUPPORTED_PROVIDERS.map((p) => [p.FRIENDLY_NAME, p.NAME]));
})
});
}

async run(interaction) {
const localizer = this.client.localizer.getLocalizer(interaction.guild);
const providerName = interaction.options.getString('provider');
const providerFriendlyName = TTSPlayer.PROVIDER_FRIENDLY_NAMES[providerName];
const providerFriendlyName = ProviderManager.PROVIDER_FRIENDLY_NAMES[providerName];

await this.client.ttsSettings.set(interaction.member, { provider: providerName });

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const { SlashCommandBuilder } = require('@discordjs/builders');
const { MessageEmbed } = require('discord.js');
const merge = require('deepmerge');
const { MESSAGE_EMBED } = require('../../../../common/constants');
const TTSPlayer = require('../../../../classes/tts/TTSPlayer');
const ProviderManager = require('../../../../classes/tts/providers/ProviderManager');

class ChannelSettingsCommand extends SlashCommand {
constructor(client) {
Expand All @@ -28,14 +28,14 @@ class ChannelSettingsCommand extends SlashCommand {

handleEnabled(interaction, localizer, channelSettings) {
const providerSettings = channelSettings[channelSettings.provider];
const providerFriendlyName = TTSPlayer.PROVIDER_FRIENDLY_NAMES[channelSettings.provider];
const providerFriendlyName = ProviderManager.PROVIDER_FRIENDLY_NAMES[channelSettings.provider];
const settingsField = this.prepareSettingsField(providerSettings, providerFriendlyName, localizer);

const embed = new MessageEmbed()
.setTitle(localizer.t('channel_commands.settings.enabled.embed.title', { channel: interaction.channel.name }))
.setColor(MESSAGE_EMBED.color)
.setDescription(localizer.t('channel_commands.settings.enabled.embed.description'))
.addField(localizer.t('channel_commands.settings.enabled.current.provider'), TTSPlayer.PROVIDER_FRIENDLY_NAMES[channelSettings.provider])
.addField(localizer.t('channel_commands.settings.enabled.current.provider'), ProviderManager.PROVIDER_FRIENDLY_NAMES[channelSettings.provider])
.addField(settingsField.title, settingsField.text);

return interaction.reply({ embeds: [embed] });
Expand Down Expand Up @@ -64,7 +64,7 @@ class ChannelSettingsCommand extends SlashCommand {
return this.handleDisabled(interaction, localizer);
}

return this.handleEnabled(interaction, localizer, merge(TTSPlayer.DEFAULT_SETTINGS, channelSettings));
return this.handleEnabled(interaction, localizer, merge(ProviderManager.DEFAULT_SETTINGS, channelSettings));
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const { SlashCommand } = require('@greencoast/discord.js-extended');
const { SlashCommandBuilder } = require('@discordjs/builders');
const logger = require('@greencoast/logger');
const TTSPlayer = require('../../../../classes/tts/TTSPlayer');
const ProviderManager = require('../../../../classes/tts/providers/ProviderManager');

class SetChannelProvider extends SlashCommand {
constructor(client) {
Expand All @@ -18,15 +18,15 @@ class SetChannelProvider extends SlashCommand {
.setName('provider')
.setDescription('The provider to use from now on.')
.setRequired(true)
.addChoices(TTSPlayer.SUPPORTED_PROVIDERS.map((p) => [p.FRIENDLY_NAME, p.NAME]));
.addChoices(ProviderManager.SUPPORTED_PROVIDERS.map((p) => [p.FRIENDLY_NAME, p.NAME]));
})
});
}

async run(interaction) {
const localizer = this.client.localizer.getLocalizer(interaction.guild);
const providerName = interaction.options.getString('provider');
const providerFriendlyName = TTSPlayer.PROVIDER_FRIENDLY_NAMES[providerName];
const providerFriendlyName = ProviderManager.PROVIDER_FRIENDLY_NAMES[providerName];

await this.client.ttsSettings.set(interaction.channel, { provider: providerName });

Expand Down

0 comments on commit 86184e7

Please sign in to comment.