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.setting_types import StringSetting, BoolSetting
@@ -23,11 +24,11 @@ class LocaleSetting(StringSetting):
"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()
t = translator.t
lines = super()._desc_table()
lines = super()._desc_table(show_value=show_value)
lines.append((
t(_p(
'settype:locale|summary_table|field:supported|key',

View File

@@ -188,8 +188,8 @@ class MemberAdminSettings(SettingGroup):
self.value = editor_data
await self.write()
def _desc_table(self) -> list[str]:
lines = super()._desc_table()
def _desc_table(self, show_value: Optional[str] = None) -> list[tuple[str, str]]:
lines = super()._desc_table(show_value=show_value)
t = ctx_translator.get().t
keydescs = [
(key, t(value)) for key, value in self._subkey_desc.items()
@@ -313,8 +313,8 @@ class MemberAdminSettings(SettingGroup):
self.value = editor_data
await self.write()
def _desc_table(self) -> list[str]:
lines = super()._desc_table()
def _desc_table(self, show_value: Optional[str] = None) -> list[tuple[str, str]]:
lines = super()._desc_table(show_value=show_value)
t = ctx_translator.get().t
keydescs = [
(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
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}
@property
@@ -341,14 +357,14 @@ class InteractiveSetting(BaseSetting[ParentID, SettingData, SettingValue]):
embed.description = "{}\n{}".format(self.long_desc.format(self=self), self.desc_table)
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
lines = []
# Currently line
lines.append((
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
@@ -380,7 +396,7 @@ class InteractiveSetting(BaseSetting[ParentID, SettingData, SettingValue]):
return TextInput(
label=self.display_name,
placeholder=self.accepts,
default=self.input_formatted,
default=self.input_formatted[:4000],
required=self._required
)