diff --git a/manager.cpp b/manager.cpp index e18f621..6870a81 100644 --- a/manager.cpp +++ b/manager.cpp @@ -71,6 +71,10 @@ void RepostManager::on_clients_ready() { vkState.needRequest = false; mgr->collect_all_vk_posts([this](auto posts){ spdlog::info("fetched all {} VK posts", posts.size()); + if (posts.size() > 0) { + spdlog::info("last vk post id is now {}", posts[0].id); + mgr->m_appState->vkLastPostId = posts[0].id; + } vkState.ready = true; std::vector aposts = mgr->to_abstract_posts(posts); vkState.posts.reserve(vkState.posts.size() + aposts.size()); @@ -95,6 +99,11 @@ void RepostManager::on_clients_ready() { } else { tgState.needRequest = false; mgr->collect_all_tg_posts([this](auto posts){ + spdlog::info("fetched all {} TG posts", posts.size()); + if (posts.size() > 0) { + spdlog::info("last telegram post id is now {}", posts[0]->id_); + mgr->m_appState->tgLastPostId = posts[0]->id_; + } tgState.ready = true; std::vector aposts = mgr->to_abstract_posts(posts); tgState.posts.reserve(tgState.posts.size() + aposts.size()); @@ -108,8 +117,13 @@ void RepostManager::on_clients_ready() { } void check_vk_posts(std::vector posts) { spdlog::info("fetched {} VK posts", posts.size()); + long oldLastPostId = mgr->m_appState->vkLastPostId; + if (posts.size() > 0) { + spdlog::info("last vk post id is now {}", posts[0].id); + mgr->m_appState->vkLastPostId = posts[0].id; + } std::vector aposts = mgr->to_abstract_posts(posts); - if (mgr->drop_posts_older_than(aposts, mgr->m_appState->vkLastPostId)) { + if (mgr->drop_posts_older_than(aposts, oldLastPostId)) { spdlog::info("found last remembered VK post"); vkState.ready = true; } @@ -121,8 +135,14 @@ void RepostManager::on_clients_ready() { fetch(); } void check_tg_posts(std::vector> posts) { + spdlog::info("fetched {} TG posts", posts.size()); + long oldLastPostId = mgr->m_appState->tgLastPostId; + if (posts.size() > 0) { + spdlog::info("last telegram post id is now {}", posts[0]->id_); + mgr->m_appState->tgLastPostId = posts[0]->id_; + } std::vector aposts = mgr->to_abstract_posts(posts); - if (mgr->drop_posts_older_than(aposts, mgr->m_appState->tgLastPostId)) { + if (mgr->drop_posts_older_than(aposts, oldLastPostId)) { spdlog::info("found last remembered TG post"); tgState.ready = true; } @@ -198,8 +218,11 @@ void RepostManager::collect_vk_posts_from__intermediate(int offset, int count, s for (auto i = chunk->posts.begin(), end = chunk->posts.end(); i != end; ++i) { intermediateResult->emplace_back(std::move(*i)); } - if (count > chunkSize) + if (count > chunkSize) { collect_vk_posts_from__intermediate(offset + chunkSize, count - chunkSize, intermediateResult, callback); + } else { + callback(std::move(*intermediateResult.get())); + } } else { spdlog::error("failed to get {} VK posts at offset {}: error {}", count, offset, err); } @@ -232,8 +255,11 @@ void RepostManager::collect_tg_posts_from__intermediate(long from, int count, st oldestId = (*i)->id_; intermediateResult->emplace_back(std::move(*i)); } - if (count > chunkSize) + if (count > chunkSize) { collect_tg_posts_from__intermediate(oldestId, count - chunkSize, intermediateResult, callback); + } else { + callback(std::move(*intermediateResult.get())); + } } else { auto &err = (td_api::error&)*obj; spdlog::error("failed to get posts: {} {}", err.code_, err.message_); @@ -277,6 +303,6 @@ std::vector RepostManager::to_abstract_posts(std::vector posts) { for (auto &post : posts) { auto content = td_api::make_object(td_api::make_object(post.text + "\nDate: " + std::to_string(post.date), std::vector>()), nullptr, false); - m_tg.send_query(td_api::make_object(m_appConfig->tgDestinationId, 0, nullptr, nullptr, nullptr, std::move(content)), {}); + //m_tg.send_query(td_api::make_object(m_appConfig->tgDestinationId, 0, nullptr, nullptr, nullptr, std::move(content)), {}); } } \ No newline at end of file