From 716b446272832f3e9ee64b33177d4e165f243a3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Wed, 6 Mar 2024 16:19:29 -0600 Subject: [PATCH] fix: remove refresh button if not enough permissions --- src/commands/breakdown.tsx | 22 +++++++++++++++++----- src/commands/evolution.tsx | 4 ++-- src/commands/fullStats.tsx | 9 +++++---- src/commands/today.ts | 8 ++++---- src/core/discord/buttonRefresh.ts | 4 ++-- 5 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/commands/breakdown.tsx b/src/commands/breakdown.tsx index e635142b8..3c0e46ae5 100644 --- a/src/commands/breakdown.tsx +++ b/src/commands/breakdown.tsx @@ -1,3 +1,4 @@ +import { Locale } from 'discord.js'; import { chunk } from 'lodash'; import * as Breakdown from '../components/Breakdown'; import CommandWrapper from '../components/CommandWrapper'; @@ -18,7 +19,7 @@ import addPeriodicFilterOptions from '../core/discord/addPeriodicFilterOptions'; import addUsernameChoices from '../core/discord/addUsernameChoices'; import autocompleteTanks from '../core/discord/autocompleteTanks'; import autocompleteUsername from '../core/discord/autocompleteUsername'; -import buttonPrimary from '../core/discord/buttonPrimary'; +import { buttonRefresh } from '../core/discord/buttonRefresh'; import commandToURL from '../core/discord/commandToURL'; import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; import { getCustomPeriodParams } from '../core/discord/getCustomPeriodParams'; @@ -44,6 +45,7 @@ export async function renderBreakdown( { region, id }: ResolvedPlayer, { start, end, name }: ResolvedPeriod, filters: StatFilters, + locale: Locale, ) { const awaitedTankDefinitions = await tankDefinitions; const awaitedTankAverages = await tankAverages; @@ -52,7 +54,7 @@ export async function renderBreakdown( const accountInfo = await getAccountInfo(region, id); const clanData = await getClanAccountInfo(region, id, ['clan']); const tankStats = await getTankStats(region, id); - const filterDescriptions = await filtersToDescription(filters); + const filterDescriptions = await filtersToDescription(filters, locale); const orderedCurrentStats: AllStats[] = []; const orderedCareerStats: AllStats[] = []; const orderedCurrentWN8: (number | undefined)[] = []; @@ -312,8 +314,13 @@ export const breakdownCommand = new Promise( }); return [ - ...(await renderBreakdown(player, period, filters)), - buttonPrimary(path, 'Refresh'), + ...(await renderBreakdown( + player, + period, + filters, + interaction.locale, + )), + buttonRefresh(interaction, path), await getBlitzStarsLinkButton(player.region, player.id), ]; }, @@ -328,7 +335,12 @@ export const breakdownCommand = new Promise( const period = resolvePeriodFromButton(player.region, interaction); const filters = getFiltersFromButton(interaction); - return await renderBreakdown(player, period, filters); + return await renderBreakdown( + player, + period, + filters, + interaction.locale, + ); }, }); }, diff --git a/src/commands/evolution.tsx b/src/commands/evolution.tsx index 8bc87cfe7..ffc3abf4e 100644 --- a/src/commands/evolution.tsx +++ b/src/commands/evolution.tsx @@ -15,7 +15,7 @@ import addTankChoices from '../core/discord/addTankChoices'; import addUsernameChoices from '../core/discord/addUsernameChoices'; import autocompleteTanks from '../core/discord/autocompleteTanks'; import autocompleteUsername from '../core/discord/autocompleteUsername'; -import buttonPrimary from '../core/discord/buttonPrimary'; +import { buttonRefresh } from '../core/discord/buttonRefresh'; import commandToURL from '../core/discord/commandToURL'; import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; import { getCustomPeriodParams } from '../core/discord/getCustomPeriodParams'; @@ -148,7 +148,7 @@ export const evolutionCommand = new Promise( return [ await render(player, period, commandGroup, tankId), - buttonPrimary(path, 'Refresh'), + buttonRefresh(interaction, path), await getBlitzStarsLinkButton( player.region, player.id, diff --git a/src/commands/fullStats.tsx b/src/commands/fullStats.tsx index bb7e1f37f..1026c5a79 100644 --- a/src/commands/fullStats.tsx +++ b/src/commands/fullStats.tsx @@ -1,4 +1,4 @@ -import { SlashCommandBuilder } from 'discord.js'; +import { Locale, SlashCommandBuilder } from 'discord.js'; import CommandWrapper from '../components/CommandWrapper'; import GenericAllStats from '../components/GenericAllStats'; import NoData, { NoDataType } from '../components/NoData'; @@ -35,6 +35,7 @@ async function render( { region, id }: ResolvedPlayer, { start, end, name }: ResolvedPeriod, filters: StatFilters, + locale: Locale, ) { const { nickname } = await getAccountInfo(region, id); const clan = (await getClanAccountInfo(region, id, ['clan']))?.clan; @@ -44,7 +45,7 @@ async function render( diffedTankStats, filters, ); - const filterDescriptions = await filtersToDescription(filters); + const filterDescriptions = await filtersToDescription(filters, locale); const tierWeights = await getTierWeights(diffedTankStats.diff, filteredOrder); return ( @@ -90,7 +91,7 @@ export const fullStatsCommand = new Promise( }); return Promise.all([ - render(player, period, filters), + render(player, period, filters, interaction.locale), buttonRefresh(interaction, path), getBlitzStarsLinkButton(player.region, player.id), ]); @@ -106,7 +107,7 @@ export const fullStatsCommand = new Promise( const period = resolvePeriodFromButton(player.region, interaction); const filters = getFiltersFromButton(interaction); - return await render(player, period, filters); + return await render(player, period, filters, interaction.locale); }, }); }, diff --git a/src/commands/today.ts b/src/commands/today.ts index cc7e0e30f..6e5e27b91 100644 --- a/src/commands/today.ts +++ b/src/commands/today.ts @@ -5,7 +5,7 @@ import { addFilterOptions } from '../core/discord/addFilterOptions'; import addUsernameChoices from '../core/discord/addUsernameChoices'; import autocompleteTanks from '../core/discord/autocompleteTanks'; import autocompleteUsername from '../core/discord/autocompleteUsername'; -import buttonPrimary from '../core/discord/buttonPrimary'; +import { buttonRefresh } from '../core/discord/buttonRefresh'; import commandToURL from '../core/discord/commandToURL'; import { getCustomPeriodParams } from '../core/discord/getCustomPeriodParams'; import { getFiltersFromButton } from '../core/discord/getFiltersFromButton'; @@ -47,8 +47,8 @@ export const todayCommand = new Promise(async (resolve) => { }); return [ - ...(await renderBreakdown(player, period, filters)), - buttonPrimary(path, 'Refresh'), + ...(await renderBreakdown(player, period, filters, interaction.locale)), + buttonRefresh(interaction, path), await getBlitzStarsLinkButton(player.region, player.id), ]; }, @@ -63,7 +63,7 @@ export const todayCommand = new Promise(async (resolve) => { const period = resolvePeriodFromButton(player.region, interaction); const filters = getFiltersFromButton(interaction); - return await renderBreakdown(player, period, filters); + return await renderBreakdown(player, period, filters, interaction.locale); }, }); }); diff --git a/src/core/discord/buttonRefresh.ts b/src/core/discord/buttonRefresh.ts index 0a210a006..b33f60e44 100644 --- a/src/core/discord/buttonRefresh.ts +++ b/src/core/discord/buttonRefresh.ts @@ -6,10 +6,10 @@ export function buttonRefresh( path: string, ) { if ( - interaction.appPermissions?.has('AttachFiles') && + interaction.appPermissions?.has('ReadMessageHistory') && interaction.appPermissions?.has('ViewChannel') ) { - return buttonPrimary(path, 'Refresh'); + return buttonPrimary(path, 'Refresh', '🔄️'); } return null;