52 lines
2.2 KiB
C++
52 lines
2.2 KiB
C++
#pragma once
|
|
|
|
#include "config.h"
|
|
#include "state.h"
|
|
#include "tg.h"
|
|
#include "vk.h"
|
|
#include <functional>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace manager {
|
|
namespace td_api = td::td_api;
|
|
|
|
struct AbstractPost {
|
|
inline AbstractPost(long id, long date, std::string text) : id(id), date(date), text(text) {}
|
|
long id;
|
|
long date;
|
|
std::string text;
|
|
};
|
|
|
|
class RepostManager {
|
|
public:
|
|
RepostManager(uv_loop_t *eventLoop, tg::AuthCodeProvider tgCodeProvider, tg::PasswordProvider tgPasswordProvider, state::AppState *appState, config::AppConfig *config);
|
|
RepostManager(RepostManager&) = delete;
|
|
void start();
|
|
private:
|
|
void on_clients_ready();
|
|
|
|
void collect_all_vk_posts(std::function<void(std::vector<vk::Post>)> callback);
|
|
void collect_all_tg_posts(std::function<void(std::vector<td::tl::unique_ptr<td_api::message>>)> callback);
|
|
void collect_last_vk_posts(int count, std::function<void(std::vector<vk::Post>)> callback);
|
|
void collect_last_tg_posts(int count, std::function<void(std::vector<td::tl::unique_ptr<td_api::message>>)> callback);
|
|
void collect_vk_posts_from(int offset, int count, std::function<void(std::vector<vk::Post>)> callback);
|
|
void collect_tg_posts_from(long from, int count, std::function<void(std::vector<td::tl::unique_ptr<td_api::message>>)> callback);
|
|
|
|
void collect_vk_posts_from__intermediate(int offset, int count, std::shared_ptr<std::vector<vk::Post>> intermediateResult, std::function<void(std::vector<vk::Post>)> callback);
|
|
void collect_tg_posts_from__intermediate(long from, int count, std::shared_ptr<std::vector<td::tl::unique_ptr<td_api::message>>> intermediateResult, std::function<void(std::vector<td::tl::unique_ptr<td_api::message>>)> callback);
|
|
|
|
bool drop_posts_older_than(std::vector<AbstractPost> &posts, long lastPostId);
|
|
|
|
std::vector<AbstractPost> to_abstract_posts(std::vector<vk::Post> &posts);
|
|
std::vector<AbstractPost> to_abstract_posts(std::vector<td::tl::unique_ptr<td_api::message>> &posts);
|
|
|
|
void repost_all(std::vector<AbstractPost> posts);
|
|
|
|
state::AppState *m_appState;
|
|
config::AppConfig *m_appConfig;
|
|
vk::VKClient m_vk;
|
|
tg::TelegramClient m_tg;
|
|
};
|
|
}
|