fix(settingui): Limit desc table length.

This commit is contained in:
2023-10-01 07:34:16 +03:00
parent e2a2e7be8a
commit bb9a099dea
3 changed files with 26 additions and 9 deletions

View File

@@ -1,3 +1,4 @@
from typing import Optional
from settings import ModelData from settings import ModelData
from settings.setting_types import StringSetting, BoolSetting from settings.setting_types import StringSetting, BoolSetting
@@ -23,11 +24,11 @@ class LocaleSetting(StringSetting):
"Enter a supported language (e.g. 'en-GB')." "Enter a supported language (e.g. 'en-GB')."
) )
def _desc_table(self) -> list[str]: def _desc_table(self, show_value: Optional[str] = None) -> list[tuple[str, str]]:
translator = ctx_translator.get() translator = ctx_translator.get()
t = translator.t t = translator.t
lines = super()._desc_table() lines = super()._desc_table(show_value=show_value)
lines.append(( lines.append((
t(_p( t(_p(
'settype:locale|summary_table|field:supported|key', 'settype:locale|summary_table|field:supported|key',

View File

@@ -188,8 +188,8 @@ class MemberAdminSettings(SettingGroup):
self.value = editor_data self.value = editor_data
await self.write() await self.write()
def _desc_table(self) -> list[str]: def _desc_table(self, show_value: Optional[str] = None) -> list[tuple[str, str]]:
lines = super()._desc_table() lines = super()._desc_table(show_value=show_value)
t = ctx_translator.get().t t = ctx_translator.get().t
keydescs = [ keydescs = [
(key, t(value)) for key, value in self._subkey_desc.items() (key, t(value)) for key, value in self._subkey_desc.items()
@@ -313,8 +313,8 @@ class MemberAdminSettings(SettingGroup):
self.value = editor_data self.value = editor_data
await self.write() await self.write()
def _desc_table(self) -> list[str]: def _desc_table(self, show_value: Optional[str] = None) -> list[tuple[str, str]]:
lines = super()._desc_table() lines = super()._desc_table(show_value=show_value)
t = ctx_translator.get().t t = ctx_translator.get().t
keydescs = [ keydescs = [
(key, t(value)) for key, value in self._subkey_desc_returning.items() (key, t(value)) for key, value in self._subkey_desc_returning.items()

View File

@@ -310,6 +310,22 @@ class InteractiveSetting(BaseSetting[ParentID, SettingData, SettingValue]):
""" """
name = self.display_name name = self.display_name
value = f"{self.long_desc}\n{self.desc_table}" value = f"{self.long_desc}\n{self.desc_table}"
if len(value) > 1024:
t = ctx_translator.get().t
desc_table = '\n'.join(
tabulate(
*self._desc_table(
show_value=t(_p(
'setting|embed_field|too_long',
"Too long to display here!"
))
)
)
)
value = f"{self.long_desc}\n{desc_table}"
if len(value) > 1024:
# Forcibly trim
value = value[:1020] + '...'
return {'name': name, 'value': value} return {'name': name, 'value': value}
@property @property
@@ -341,14 +357,14 @@ class InteractiveSetting(BaseSetting[ParentID, SettingData, SettingValue]):
embed.description = "{}\n{}".format(self.long_desc.format(self=self), self.desc_table) embed.description = "{}\n{}".format(self.long_desc.format(self=self), self.desc_table)
return embed return embed
def _desc_table(self) -> list[str]: def _desc_table(self, show_value: Optional[str] = None) -> list[tuple[str, str]]:
t = ctx_translator.get().t t = ctx_translator.get().t
lines = [] lines = []
# Currently line # Currently line
lines.append(( lines.append((
t(_p('setting|summary_table|field:currently|key', "Currently")), t(_p('setting|summary_table|field:currently|key', "Currently")),
self.formatted or self.notset_str show_value or (self.formatted or self.notset_str)
)) ))
# Default line # Default line
@@ -380,7 +396,7 @@ class InteractiveSetting(BaseSetting[ParentID, SettingData, SettingValue]):
return TextInput( return TextInput(
label=self.display_name, label=self.display_name,
placeholder=self.accepts, placeholder=self.accepts,
default=self.input_formatted, default=self.input_formatted[:4000],
required=self._required required=self._required
) )