Изменений не так много, но над некоторыми пришлось постараться как следует
Внешний вид и функционал:
• Реализована регистрация
• Последние просмотренные тайтлы на главной открывают страницу тайтла
• Жанры на страницах тайтлов теперь открывают страницу по жанру
• Ники в комментариях теперь отображаются в виде кнопок
• Изменён вид списков в профиле
Незаментные изменения:
• IrisLib разделено на несколько файлов
• Файл gresource генерируется автоматически — спасибо Владимиру Романову
• Добавлены брендинговые цвета — спасибо Виктории Зубачёвой
В данной версии было два довольно сложных момента:
• Регистрация, а точнее текст Правил и Политики конфиденциальности
• Виджеты-кнопки по никам в комментариях
Сама по себе регистрация реализуется довольно просто, однако сложным было создать механизм получения текста Правил и Политики конфиденциальности. Проблема заключалась в том, что через API, как другую информацию с сайта, эти данные не получить. Оставалось скачивать страницы и парсить их, однако здесь блоком стало то, что они рендерятся на JS. В решении данного вопроса помог Максим Слипенко, посоветовав использовать инструмент
puppeteer для рендеринга страницы через запуск браузера.Более тяжкой задачей оказалась реализация виджета текста с встроенными в него виджетами-кнопками. За вдохновление спасибо проекту Fractal (GTK4/Libadwaita Matrix-клиент) и их виджету LabelWithWidgets. В итоге логика виджета получилось не такой сложной, как казалось: ники заменяются на специальный символ, который потом прячется за виджетом-кнопкой; в то же время в тексте на месте этого спец. символа выделяется достаточное количество места, чтобы кнопка не перекрывала текст вокруг.
Канал | Чат | Сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Iris
👀 Немного спойлеров к следующей версии Практически во всех текстовых полях сайта, где пользователь может что-то писать есть форматирование текста, поэтому как раз самое время его сделать. И не важно, что в приложении ещё нельзя оставлять комментарии или…
This media is not supported in your browser
VIEW IN TELEGRAM
Если вкратце, то пришлось немного перераотать логику
LabelWithWidgets, чтобы он правильно расчитывал длину текста с изменёнными тегами, так как длину строки и индексы для вставки виджет без учёта тегов. Каждое стилевое выделение это какой-то тег, к примеру выделение жирным — это тег <b>, и индексы начала и конца текста для строчки <b>asd</b> расчитываются не по ней, а по отрендеренному варианту — то есть просто asdКазалось бы, звучит просто, но на понимание факта, что он считает текст не по данному ему тексту с тегами, а по отображаемому ушёл весь день.
Please open Telegram to view this post
VIEW IN TELEGRAM
