fix(settingui): Limit desc table length.
This commit is contained in:
@@ -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',
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user