Add IV footer.
This commit is contained in:
@@ -155,10 +155,6 @@ namespace {
|
||||
+ "IV.init();"
|
||||
+ page.script;
|
||||
|
||||
const auto contentAttributes = page.rtl
|
||||
? " dir=\"rtl\" class=\"rtl\""_q
|
||||
: QByteArray();
|
||||
|
||||
return R"(<!DOCTYPE html>
|
||||
<html)"_q
|
||||
+ classAttribute
|
||||
@@ -179,9 +175,7 @@ namespace {
|
||||
<path d="M14.9972363,18 L9.13865768,12.1414214 C9.06055283,12.0633165 9.06055283,11.9366835 9.13865768,11.8585786 L14.9972363,6 L14.9972363,6" transform="translate(11.997236, 12.000000) scale(-1, -1) rotate(-90.000000) translate(-11.997236, -12.000000) "></path>
|
||||
</svg>
|
||||
</button>
|
||||
<div class="page-scroll" tabindex="-1"><div class="page-slide">
|
||||
<article)"_q + contentAttributes + ">"_q + page.content + R"(</article>
|
||||
</div></div>
|
||||
<div class="page-scroll" tabindex="-1">)"_q + page.content.trimmed() + R"(</div>
|
||||
<script>)"_q + js + R"(</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -646,7 +640,12 @@ void Controller::processLink(const QString &url, const QString &context) {
|
||||
const auto joinPrefix = u"join_link"_q;
|
||||
const auto webpagePrefix = u"webpage"_q;
|
||||
const auto viewerPrefix = u"viewer"_q;
|
||||
if (context.startsWith(channelPrefix)) {
|
||||
if (context == u"report-iv") {
|
||||
_events.fire({
|
||||
.type = Event::Type::Report,
|
||||
.context = QString::number(compuseCurrentPageId()),
|
||||
});
|
||||
} else if (context.startsWith(channelPrefix)) {
|
||||
_events.fire({
|
||||
.type = Event::Type::OpenChannel,
|
||||
.context = context.mid(channelPrefix.size()),
|
||||
@@ -701,6 +700,13 @@ QString Controller::composeCurrentUrl() const {
|
||||
+ (_hash.isEmpty() ? u""_q : ('#' + _hash));
|
||||
}
|
||||
|
||||
uint64 Controller::compuseCurrentPageId() const {
|
||||
const auto index = _index.current();
|
||||
Assert(index >= 0 && index < _pages.size());
|
||||
|
||||
return _pages[index].pageId;
|
||||
}
|
||||
|
||||
void Controller::showMenu() {
|
||||
const auto index = _index.current();
|
||||
if (_menu || index < 0 || index > _pages.size()) {
|
||||
|
||||
@@ -63,6 +63,7 @@ public:
|
||||
OpenLink,
|
||||
OpenLinkExternal,
|
||||
OpenMedia,
|
||||
Report,
|
||||
};
|
||||
Type type = Type::Close;
|
||||
QString url;
|
||||
@@ -116,6 +117,7 @@ private:
|
||||
void quit();
|
||||
|
||||
[[nodiscard]] QString composeCurrentUrl() const;
|
||||
[[nodiscard]] uint64 compuseCurrentPageId() const;
|
||||
void showShareMenu();
|
||||
void destroyShareMenu();
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ struct Options {
|
||||
};
|
||||
|
||||
struct Prepared {
|
||||
uint64 pageId = 0;
|
||||
QString name;
|
||||
QByteArray content;
|
||||
QByteArray script;
|
||||
|
||||
@@ -742,9 +742,7 @@ void Instance::show(
|
||||
not_null<Data*> data,
|
||||
QString hash) {
|
||||
const auto guard = gsl::finally([&] {
|
||||
if (data->partial()) {
|
||||
requestFull(session, data->id());
|
||||
}
|
||||
requestFull(session, data->id());
|
||||
});
|
||||
if (_shown && _shownSession == session) {
|
||||
_shown->moveTo(data, hash);
|
||||
@@ -834,6 +832,17 @@ void Instance::show(
|
||||
UrlClickHandler::Open(event.url);
|
||||
}).send();
|
||||
break;
|
||||
case Type::Report:
|
||||
if (const auto controller = _shownSession->tryResolveWindow()) {
|
||||
controller->window().activate();
|
||||
controller->showPeerByLink(Window::PeerByLinkInfo{
|
||||
.usernameOrId = "previews",
|
||||
.resolveType = Window::ResolveType::BotStart,
|
||||
.startToken = ("webpage"
|
||||
+ QString::number(event.context.toULongLong())),
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
}, _shown->lifetime());
|
||||
|
||||
|
||||
@@ -142,6 +142,8 @@ private:
|
||||
[[nodiscard]] QByteArray block(
|
||||
const MTPDpageListOrderedItemBlocks &data);
|
||||
|
||||
[[nodiscard]] QByteArray wrap(const QByteArray &content, int views);
|
||||
|
||||
[[nodiscard]] QByteArray tag(
|
||||
const QByteArray &name,
|
||||
const QByteArray &body = {});
|
||||
@@ -223,9 +225,13 @@ Parser::Parser(const Source &source, const Options &options)
|
||||
: /*_options(options)
|
||||
, */_fileOriginPostfix('/' + Number(source.pageId)) {
|
||||
process(source);
|
||||
_result.pageId = source.pageId;
|
||||
_result.name = source.name;
|
||||
_result.rtl = source.page.data().is_rtl();
|
||||
_result.content = list(source.page.data().vblocks());
|
||||
|
||||
const auto views = source.page.data().vviews().value_or_empty();
|
||||
const auto content = list(source.page.data().vblocks());
|
||||
_result.content = wrap(content, views);
|
||||
}
|
||||
|
||||
Prepared Parser::result() {
|
||||
@@ -925,6 +931,26 @@ QByteArray Parser::utf(const tl::conditional<MTPstring> &text) {
|
||||
return text ? utf(*text) : QByteArray();
|
||||
}
|
||||
|
||||
QByteArray Parser::wrap(const QByteArray &content, int views) {
|
||||
const auto sep = " \xE2\x80\xA2 ";
|
||||
const auto viewsText = views
|
||||
? (tr::lng_stories_views(tr::now, lt_count_decimal, views) + sep)
|
||||
: QString();
|
||||
return R"(
|
||||
<div class="page-slide">
|
||||
<article>)"_q + content + R"(</article>
|
||||
</div>
|
||||
<div class="page-footer">
|
||||
<div class="content">
|
||||
)"_q
|
||||
+ viewsText.toUtf8()
|
||||
+ R"(<a class="wrong" data-context="report-iv">)"_q
|
||||
+ tr::lng_iv_wrong_layout(tr::now).toUtf8()
|
||||
+ R"(</a>
|
||||
</div>
|
||||
</div>)"_q;
|
||||
}
|
||||
|
||||
QByteArray Parser::tag(
|
||||
const QByteArray &name,
|
||||
const QByteArray &body) {
|
||||
|
||||
Reference in New Issue
Block a user