{entry.event_type}
- | {entry.user_id || "—"} |
- {entry.target_user_id || "—"} |
+
+ {#if userId(entry, "user")}
+
+ onOpenUserCard(userId(entry, "user"))}
+ >
+
+
+
+ {userDisplay(entry, "user")}
+ ID {userId(entry, "user")}
+
+
+ {:else}
+ —
+ {/if}
+ |
+
+ {#if userId(entry, "target")}
+
+ onOpenUserCard(userId(entry, "target"))}
+ >
+
+
+
+ {userDisplay(entry, "target")}
+ ID {userId(entry, "target")}
+
+
+ {:else}
+ —
+ {/if}
+ |
{entry.content || ""} |
@@ -118,3 +177,53 @@
logsStore.setPage(logsPage + 1);
}}
/>
+
+
diff --git a/frontend/src/admin/sections/UserDetailModal.svelte b/frontend/src/admin/sections/UserDetailModal.svelte
index 86a293c..a424b25 100644
--- a/frontend/src/admin/sections/UserDetailModal.svelte
+++ b/frontend/src/admin/sections/UserDetailModal.svelte
@@ -81,11 +81,7 @@
$: openedUserTelegramProfileLinkKind = openedUser ? userTelegramProfileLinkKind(openedUser) : "";
$: openedUserTelegramProfileHint =
openedUserTelegramProfileLinkKind === "id"
- ? at(
- "user_open_tg_profile_id_hint",
- {},
- "Профиль будет открыт по Telegram ID. Telegram может заблокировать переход из-за настроек приватности пользователя или ограничений клиента."
- )
+ ? at("user_open_tg_profile_id_hint", {}, "Бот отправит кнопку профиля в Telegram")
: at("user_open_tg_profile_hint", {}, "Открыть профиль Telegram");
$: if (openedUser && userDetailTab === "logs" && !userLogsLoading && !userLogsLoaded) {
@@ -189,11 +185,6 @@
{at("user_open_tg_profile", {}, "Открыть Telegram")}
- {#if openedUserTelegramProfileLinkKind === "id"}
- {openedUserTelegramProfileHint}
- {/if}
@@ -1168,12 +1159,6 @@
gap: 8px;
margin-top: 6px;
}
- .admin-user-telegram-profile-note {
- display: block;
- margin-top: 2px;
- color: var(--admin-dim);
- line-height: 1.35;
- }
:global(.admin-avatar-dialog) {
display: grid;
grid-template-rows: auto minmax(0, 1fr);
diff --git a/frontend/src/lib/webapp/demoDataset.js b/frontend/src/lib/webapp/demoDataset.js
index 2878686..d70b3d6 100644
--- a/frontend/src/lib/webapp/demoDataset.js
+++ b/frontend/src/lib/webapp/demoDataset.js
@@ -101636,22 +101636,18 @@ export const DEMO_DATASET = {
audience: "internal",
values: {
ru: {
- base: "Пользователь без username: бот отправит вам в Telegram сообщение с кнопкой открытия профиля.",
- fallback:
- "Пользователь без username: бот отправит вам в Telegram сообщение с кнопкой открытия профиля.",
- effective:
- "Пользователь без username: бот отправит вам в Telegram сообщение с кнопкой открытия профиля.",
+ base: "Бот отправит кнопку профиля в Telegram.",
+ fallback: "Бот отправит кнопку профиля в Telegram.",
+ effective: "Бот отправит кнопку профиля в Telegram.",
override: "",
overridden: false,
updated_at: null,
updated_by: null,
},
en: {
- base: "This user has no username: the bot will send you a Telegram message with a profile button.",
- fallback:
- "Пользователь без username: бот отправит вам в Telegram сообщение с кнопкой открытия профиля.",
- effective:
- "This user has no username: the bot will send you a Telegram message with a profile button.",
+ base: "The bot will send a profile button in Telegram.",
+ fallback: "Бот отправит кнопку профиля в Telegram.",
+ effective: "The bot will send a profile button in Telegram.",
override: "",
overridden: false,
updated_at: null,
diff --git a/frontend/src/styles/admin.css b/frontend/src/styles/admin.css
index 0cdb209..3dd00c4 100644
--- a/frontend/src/styles/admin.css
+++ b/frontend/src/styles/admin.css
@@ -2760,6 +2760,15 @@
max-height: min(100%, 760px);
}
+.admin-user-dialog .dialog-body-scroll {
+ margin-right: -10px;
+ padding-right: 10px;
+}
+
+.admin-user-dialog .dialog-body-scroll > .scroll-area__viewport {
+ padding-right: 10px;
+}
+
.admin-user-dialog-body {
display: grid;
grid-template-columns: minmax(0, 1fr);
@@ -4131,7 +4140,7 @@
.admin-user-summary {
display: grid;
grid-template-columns: 56px minmax(0, 1fr);
- align-items: center;
+ align-items: start;
gap: 14px;
padding: 14px 14px 16px;
border-radius: 12px;
diff --git a/locales/en.json b/locales/en.json
index a931f8c..0f6f364 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -1200,7 +1200,7 @@
"admin_user_avatar_title": "Avatar",
"admin_user_open_tg_profile": "Open Telegram",
"admin_user_open_tg_profile_hint": "Open Telegram profile",
- "admin_user_open_tg_profile_id_hint": "This user has no username: the bot will send you a Telegram message with a profile button.",
+ "admin_user_open_tg_profile_id_hint": "The bot will send a profile button in Telegram.",
"admin_user_tg_profile_unavailable": "Telegram profile link is unavailable",
"admin_user_tg_profile_link_sent": "Link sent to Telegram",
"admin_user_tg_profile_link_failed": "Failed to send link",
diff --git a/locales/ru.json b/locales/ru.json
index 0073410..bb7164f 100644
--- a/locales/ru.json
+++ b/locales/ru.json
@@ -1200,7 +1200,7 @@
"admin_user_avatar_title": "Аватар",
"admin_user_open_tg_profile": "Открыть Telegram",
"admin_user_open_tg_profile_hint": "Открыть профиль Telegram",
- "admin_user_open_tg_profile_id_hint": "Пользователь без username: бот отправит вам в Telegram сообщение с кнопкой открытия профиля.",
+ "admin_user_open_tg_profile_id_hint": "Бот отправит кнопку профиля в Telegram.",
"admin_user_tg_profile_unavailable": "Ссылка на профиль Telegram недоступна",
"admin_user_tg_profile_link_sent": "Ссылка отправлена в Telegram",
"admin_user_tg_profile_link_failed": "Не удалось отправить ссылку",