✨ Улучшена поддержка цветового акцента пользователя на страницах заметок и профиля
- Реализовано динамическое изменение цвета акцента на основе данных пользователя для предотвращения FOUC. - Добавлен inline CSS для корректного отображения цвета акцента в HTML. - Обновлены стили для тегов, чтобы использовать белый фон вместо светло-голубого.
This commit is contained in:
parent
8354e64ae7
commit
b831dcc52c
@ -1503,14 +1503,14 @@ async function loadUserInfo() {
|
||||
userAvatarContainer.style.display = "none";
|
||||
}
|
||||
|
||||
// Применяем цветовой акцент пользователя
|
||||
if (user.accent_color) {
|
||||
document.documentElement.style.setProperty(
|
||||
"--accent-color",
|
||||
user.accent_color
|
||||
);
|
||||
} else {
|
||||
document.documentElement.style.setProperty("--accent-color", "#007bff");
|
||||
// Применяем цветовой акцент пользователя (только если отличается от текущего)
|
||||
const currentColor = getComputedStyle(document.documentElement)
|
||||
.getPropertyValue("--accent-color")
|
||||
.trim();
|
||||
const newColor = user.accent_color || "#007bff";
|
||||
|
||||
if (currentColor !== newColor) {
|
||||
document.documentElement.style.setProperty("--accent-color", newColor);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
@ -883,7 +883,7 @@ textarea:focus {
|
||||
.tag {
|
||||
display: inline-block;
|
||||
padding: 4px 8px;
|
||||
background-color: #e7f3ff;
|
||||
background-color: #ffffff;
|
||||
color: var(--accent-color, #007bff);
|
||||
border: 1px solid var(--accent-color, #007bff);
|
||||
border-radius: 12px;
|
||||
@ -915,7 +915,7 @@ textarea:focus {
|
||||
.textNote .tag-in-note {
|
||||
display: inline-block;
|
||||
padding: 2px 6px;
|
||||
background-color: #e7f3ff;
|
||||
background-color: #ffffff;
|
||||
color: var(--accent-color, #007bff);
|
||||
border: 1px solid var(--accent-color, #007bff);
|
||||
border-radius: 8px;
|
||||
|
||||
70
server.js
70
server.js
@ -468,7 +468,40 @@ app.get("/api/user", requireAuth, (req, res) => {
|
||||
|
||||
// Страница с заметками (требует аутентификации)
|
||||
app.get("/notes", requireAuth, (req, res) => {
|
||||
res.sendFile(path.join(__dirname, "public", "notes.html"));
|
||||
// Получаем цвет пользователя для предотвращения FOUC
|
||||
const sql = "SELECT accent_color FROM users WHERE id = ?";
|
||||
db.get(sql, [req.session.userId], (err, user) => {
|
||||
if (err) {
|
||||
console.error("Ошибка получения цвета пользователя:", err.message);
|
||||
return res.sendFile(path.join(__dirname, "public", "notes.html"));
|
||||
}
|
||||
|
||||
const accentColor = user?.accent_color || "#007bff";
|
||||
|
||||
// Читаем HTML файл
|
||||
fs.readFile(
|
||||
path.join(__dirname, "public", "notes.html"),
|
||||
"utf8",
|
||||
(err, html) => {
|
||||
if (err) {
|
||||
console.error("Ошибка чтения файла notes.html:", err.message);
|
||||
return res.sendFile(path.join(__dirname, "public", "notes.html"));
|
||||
}
|
||||
|
||||
// Вставляем inline CSS с правильным цветом в самое начало head для предотвращения FOUC
|
||||
const inlineCSS = `<style>
|
||||
:root, html { --accent-color: ${accentColor} !important; }
|
||||
* { --accent-color: ${accentColor} !important; }
|
||||
</style>`;
|
||||
const modifiedHtml = html.replace(
|
||||
/<head>/i,
|
||||
`<head>\n ${inlineCSS}`
|
||||
);
|
||||
|
||||
res.send(modifiedHtml);
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
// API для поиска заметок с изображениями (должен быть ПЕРЕД /api/notes/:id)
|
||||
@ -885,7 +918,40 @@ app.delete("/api/notes/:noteId/images/:imageId", requireAuth, (req, res) => {
|
||||
|
||||
// Страница личного кабинета
|
||||
app.get("/profile", requireAuth, (req, res) => {
|
||||
res.sendFile(path.join(__dirname, "public", "profile.html"));
|
||||
// Получаем цвет пользователя для предотвращения FOUC
|
||||
const sql = "SELECT accent_color FROM users WHERE id = ?";
|
||||
db.get(sql, [req.session.userId], (err, user) => {
|
||||
if (err) {
|
||||
console.error("Ошибка получения цвета пользователя:", err.message);
|
||||
return res.sendFile(path.join(__dirname, "public", "profile.html"));
|
||||
}
|
||||
|
||||
const accentColor = user?.accent_color || "#007bff";
|
||||
|
||||
// Читаем HTML файл
|
||||
fs.readFile(
|
||||
path.join(__dirname, "public", "profile.html"),
|
||||
"utf8",
|
||||
(err, html) => {
|
||||
if (err) {
|
||||
console.error("Ошибка чтения файла profile.html:", err.message);
|
||||
return res.sendFile(path.join(__dirname, "public", "profile.html"));
|
||||
}
|
||||
|
||||
// Вставляем inline CSS с правильным цветом в самое начало head для предотвращения FOUC
|
||||
const inlineCSS = `<style>
|
||||
:root, html { --accent-color: ${accentColor} !important; }
|
||||
* { --accent-color: ${accentColor} !important; }
|
||||
</style>`;
|
||||
const modifiedHtml = html.replace(
|
||||
/<head>/i,
|
||||
`<head>\n ${inlineCSS}`
|
||||
);
|
||||
|
||||
res.send(modifiedHtml);
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
// API для обновления профиля
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user