Compare commits
No commits in common. "7ed3f0193f4f40766bb05ec49a9dbf06e53befaf" and "91bce904acebab270f2429702899265f2b2ee634" have entirely different histories.
7ed3f0193f
...
91bce904ac
89
manager.cpp
89
manager.cpp
@ -60,12 +60,6 @@ void RepostManager::load_more_telegram_chats() {
|
||||
|
||||
void RepostManager::start() {
|
||||
m_nRequiredChats = 100500;//m_appConfig->tgSources.size() + 1;
|
||||
for (auto &appState : m_appState->vkRepostState) {
|
||||
appState.lastLoadedPostDate = appState.lastForwardedPostDate;
|
||||
}
|
||||
for (auto &appState : m_appState->tgRepostState) {
|
||||
appState.lastLoadedPostDate = appState.lastForwardedPostDate;
|
||||
}
|
||||
m_tg.add_update_handler([this](void*, td_api::Object &obj){
|
||||
if (obj.get_id() == td_api::updateAuthorizationState::ID) {
|
||||
auto &authState = (td_api::updateAuthorizationState&)obj;
|
||||
@ -75,6 +69,7 @@ void RepostManager::start() {
|
||||
}
|
||||
} else if (obj.get_id() == td_api::updateNewChat::ID) {
|
||||
auto &update = (td_api::updateNewChat&)obj;
|
||||
spdlog::debug("chat {}", update.chat_->id_);
|
||||
if (update.chat_->id_ == m_appConfig->tgDestinationId) {
|
||||
++m_nLoadedRequiredChats;
|
||||
spdlog::info("destination chat {} loaded (loaded {}/{} chats)", m_appConfig->tgDestinationId, m_nLoadedRequiredChats, m_nRequiredChats);
|
||||
@ -189,10 +184,8 @@ void NewPostFetcher::continue_fetch() {
|
||||
for (auto &p : posts) {
|
||||
spdlog::debug("[tg:{}] got post dated {}", i, p->date_);
|
||||
}
|
||||
if (posts.size() > 0) {
|
||||
state.offset = posts[posts.size() - 1]->id_;
|
||||
spdlog::info("[tg:{}] setting from to id {}", i, posts[posts.size() - 1]->id_);
|
||||
}
|
||||
state.offset = posts[posts.size() - 1]->id_;
|
||||
spdlog::info("[tg:{}] setting from to id {}", i, posts[posts.size() - 1]->id_);
|
||||
check_tg_posts(i, std::move(posts));
|
||||
});
|
||||
state.count = state.count * 3 / 2;
|
||||
@ -287,7 +280,6 @@ void NewPostFetcher::continue_fetch() {
|
||||
}
|
||||
mgr->m_unprocessedTgPosts.pop();
|
||||
}
|
||||
working = false;
|
||||
onDone(std::move(merged));
|
||||
}
|
||||
}
|
||||
@ -299,25 +291,22 @@ void NewPostFetcher::check_vk_posts(int index, std::vector<vk::Post> posts) {
|
||||
long oldLastPostDate = appState.lastLoadedPostDate;
|
||||
if (posts.size() > 0) {
|
||||
spdlog::info("[vk:{}] last post date is now {}", index, posts[0].date);
|
||||
std::vector<AbstractPost> aposts = mgr->to_abstract_posts(posts, state.sourceIndex);
|
||||
spdlog::info("[vk:{}] looking for date {}, have {} - {}", index, oldLastPostDate, aposts[0].date, aposts[aposts.size() - 1].date);
|
||||
if (mgr->drop_posts_older_than(aposts, oldLastPostDate)) {
|
||||
spdlog::info("[vk:{}] found last remembered post", index);
|
||||
state.ready = true;
|
||||
}
|
||||
state.posts.reserve(state.posts.size() + aposts.size());
|
||||
for (auto i = aposts.begin(), e = aposts.end(); i != e; ++i) {
|
||||
state.posts.emplace_back(std::move(*i));
|
||||
}
|
||||
state.needRequest = true;
|
||||
if (state.ready && !state.posts.empty()) {
|
||||
spdlog::debug("[vk:{}] last loaded post date is now {}", index, state.posts[0].date);
|
||||
appState.lastLoadedPostDate = state.posts[0].date;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
std::vector<AbstractPost> aposts = mgr->to_abstract_posts(posts, state.sourceIndex);
|
||||
spdlog::info("[vk:{}] looking for date {}, have {} - {}", index, oldLastPostDate, aposts[0].date, aposts[aposts.size() - 1].date);
|
||||
if (mgr->drop_posts_older_than(aposts, oldLastPostDate)) {
|
||||
spdlog::info("[vk:{}] found last remembered post", index);
|
||||
state.ready = true;
|
||||
}
|
||||
|
||||
state.posts.reserve(state.posts.size() + aposts.size());
|
||||
for (auto i = aposts.begin(), e = aposts.end(); i != e; ++i) {
|
||||
state.posts.emplace_back(std::move(*i));
|
||||
}
|
||||
state.needRequest = true;
|
||||
if (state.ready && !state.posts.empty()) {
|
||||
spdlog::debug("[vk:{}] last loaded post date is now {}", index, state.posts[0].date);
|
||||
appState.lastLoadedPostDate = state.posts[0].date;
|
||||
}
|
||||
continue_fetch();
|
||||
}
|
||||
|
||||
@ -328,28 +317,31 @@ void NewPostFetcher::check_tg_posts(int index, std::vector<td::tl::unique_ptr<td
|
||||
long oldLastPostDate = appState.lastLoadedPostDate;
|
||||
if (posts.size() > 0) {
|
||||
spdlog::info("[tg:{}] last post date is now {}", index, posts[0]->date_);
|
||||
std::vector<AbstractPost> aposts = mgr->to_abstract_posts(posts, state.sourceIndex);
|
||||
if (mgr->drop_posts_older_than(aposts, oldLastPostDate)) {
|
||||
spdlog::info("[tg:{}] found last remembered post", index);
|
||||
state.ready = true;
|
||||
}
|
||||
state.posts.reserve(state.posts.size() + aposts.size());
|
||||
for (auto i = aposts.begin(), e = aposts.end(); i != e; ++i) {
|
||||
state.posts.emplace_back(std::move(*i));
|
||||
}
|
||||
state.needRequest = true;
|
||||
if (state.ready && !state.posts.empty()) {
|
||||
spdlog::debug("[tg:{}] last loaded post date is now {}", index, state.posts[0].date);
|
||||
appState.lastLoadedPostDate = state.posts[0].id;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
std::vector<AbstractPost> aposts = mgr->to_abstract_posts(posts, state.sourceIndex);
|
||||
if (mgr->drop_posts_older_than(aposts, oldLastPostDate)) {
|
||||
spdlog::info("[tg:{}] found last remembered post", index);
|
||||
state.ready = true;
|
||||
}
|
||||
|
||||
state.posts.reserve(state.posts.size() + aposts.size());
|
||||
for (auto i = aposts.begin(), e = aposts.end(); i != e; ++i) {
|
||||
state.posts.emplace_back(std::move(*i));
|
||||
}
|
||||
state.needRequest = true;
|
||||
if (state.ready && !state.posts.empty()) {
|
||||
spdlog::debug("[tg:{}] last loaded post date is now {}", index, state.posts[0].date);
|
||||
appState.lastLoadedPostDate = state.posts[0].id;
|
||||
}
|
||||
continue_fetch();
|
||||
}
|
||||
|
||||
void RepostManager::on_clients_ready() {
|
||||
for (auto &appState : m_appState->vkRepostState) {
|
||||
appState.lastLoadedPostDate = appState.lastForwardedPostDate;
|
||||
}
|
||||
for (auto &appState : m_appState->tgRepostState) {
|
||||
appState.lastLoadedPostDate = appState.lastForwardedPostDate;
|
||||
}
|
||||
|
||||
spdlog::info("checking all sources");
|
||||
m_fetcher.fetch(
|
||||
@ -469,11 +461,11 @@ bool RepostManager::drop_posts_older_than(std::vector<AbstractPost> &posts, long
|
||||
}
|
||||
}
|
||||
|
||||
std::optional<AbstractPost> RepostManager::to_abstract_post(const vk::Post &post, int sourceIndex) {
|
||||
std::optional<AbstractPost> to_abstract_post(const vk::Post &post, int sourceIndex) {
|
||||
return { AbstractPost(posts::SRC_VK, sourceIndex, post.id, post.date, post.text) };
|
||||
}
|
||||
|
||||
std::optional<AbstractPost> RepostManager::to_abstract_post(const td_api::message &post, int sourceIndex) {
|
||||
std::optional<AbstractPost> to_abstract_post(const td_api::message &post, int sourceIndex) {
|
||||
if (post.content_->get_id() == td_api::messageText::ID) {
|
||||
auto &content = (td_api::messageText&) *post.content_;
|
||||
return { AbstractPost(posts::SRC_TELEGRAM, sourceIndex, post.id_, post.date_, content.text_->text_) };
|
||||
@ -609,6 +601,9 @@ void RepostManager::on_tg_message(td_api::updateNewMessage &update) {
|
||||
}
|
||||
std::vector<AbstractPost> posts = { *post };
|
||||
spdlog::debug("rechecking vk posts before processing the new tg post");
|
||||
recheck_vk_posts({});
|
||||
recheck_vk_posts([this, posts](){
|
||||
spdlog::debug("processing the new tg post");
|
||||
on_new_posts(posts);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user