Decrease server_total_count when load expired active stories from database.
This commit is contained in:
parent
672957a741
commit
dc4114e235
@ -1280,10 +1280,11 @@ StoryManager::ActiveStories *StoryManager::get_active_stories_force(DialogId own
|
|||||||
failed_to_load_active_stories_.insert(owner_dialog_id);
|
failed_to_load_active_stories_.insert(owner_dialog_id);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
return on_get_active_stories_from_database(owner_dialog_id, r_value.ok(), source);
|
return on_get_active_stories_from_database(StoryListId(), owner_dialog_id, r_value.ok(), source);
|
||||||
}
|
}
|
||||||
|
|
||||||
StoryManager::ActiveStories *StoryManager::on_get_active_stories_from_database(DialogId owner_dialog_id,
|
StoryManager::ActiveStories *StoryManager::on_get_active_stories_from_database(StoryListId story_list_id,
|
||||||
|
DialogId owner_dialog_id,
|
||||||
const BufferSlice &value,
|
const BufferSlice &value,
|
||||||
const char *source) {
|
const char *source) {
|
||||||
auto active_stories = get_active_stories_editable(owner_dialog_id);
|
auto active_stories = get_active_stories_editable(owner_dialog_id);
|
||||||
@ -1314,7 +1315,21 @@ StoryManager::ActiveStories *StoryManager::on_get_active_stories_from_database(D
|
|||||||
on_update_active_stories(owner_dialog_id, saved_active_stories.max_read_story_id_, std::move(story_ids),
|
on_update_active_stories(owner_dialog_id, saved_active_stories.max_read_story_id_, std::move(story_ids),
|
||||||
Promise<Unit>(), "on_get_active_stories_from_database", true);
|
Promise<Unit>(), "on_get_active_stories_from_database", true);
|
||||||
|
|
||||||
return get_active_stories_editable(owner_dialog_id);
|
active_stories = get_active_stories_editable(owner_dialog_id);
|
||||||
|
if (active_stories == nullptr) {
|
||||||
|
if (!story_list_id.is_valid()) {
|
||||||
|
story_list_id = get_dialog_story_list_id(owner_dialog_id);
|
||||||
|
}
|
||||||
|
if (story_list_id.is_valid()) {
|
||||||
|
auto &story_list = get_story_list(story_list_id);
|
||||||
|
if (!story_list.is_reloaded_server_total_count_ && story_list.server_total_count_ > 0) {
|
||||||
|
story_list.server_total_count_--;
|
||||||
|
update_story_list_sent_total_count(story_list_id, story_list);
|
||||||
|
save_story_list(story_list_id, story_list.state_, story_list.server_total_count_, story_list.server_has_more_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return active_stories;
|
||||||
}
|
}
|
||||||
|
|
||||||
void StoryManager::add_story_dependencies(Dependencies &dependencies, const Story *story) {
|
void StoryManager::add_story_dependencies(Dependencies &dependencies, const Story *story) {
|
||||||
@ -1402,7 +1417,7 @@ void StoryManager::on_load_active_stories_from_database(StoryListId story_list_i
|
|||||||
story_list.database_has_more_ = false;
|
story_list.database_has_more_ = false;
|
||||||
} else {
|
} else {
|
||||||
for (auto &active_stories_it : active_story_list.active_stories_) {
|
for (auto &active_stories_it : active_story_list.active_stories_) {
|
||||||
on_get_active_stories_from_database(active_stories_it.first, active_stories_it.second,
|
on_get_active_stories_from_database(story_list_id, active_stories_it.first, active_stories_it.second,
|
||||||
"on_load_active_stories_from_database");
|
"on_load_active_stories_from_database");
|
||||||
}
|
}
|
||||||
DialogDate max_story_date(active_story_list.next_order_, active_story_list.next_dialog_id_);
|
DialogDate max_story_date(active_story_list.next_order_, active_story_list.next_dialog_id_);
|
||||||
@ -1484,6 +1499,7 @@ void StoryManager::on_load_active_stories_from_server(
|
|||||||
story_list.state_ = std::move(stories->state_);
|
story_list.state_ = std::move(stories->state_);
|
||||||
}
|
}
|
||||||
story_list.server_total_count_ = max(stories->count_, 0);
|
story_list.server_total_count_ = max(stories->count_, 0);
|
||||||
|
story_list.is_reloaded_server_total_count_ = true;
|
||||||
if (!stories->has_more_ || stories->user_stories_.empty()) {
|
if (!stories->has_more_ || stories->user_stories_.empty()) {
|
||||||
story_list.server_has_more_ = false;
|
story_list.server_has_more_ = false;
|
||||||
}
|
}
|
||||||
|
@ -160,6 +160,7 @@ class StoryManager final : public Actor {
|
|||||||
int32 sent_total_count_ = -1;
|
int32 sent_total_count_ = -1;
|
||||||
string state_;
|
string state_;
|
||||||
|
|
||||||
|
bool is_reloaded_server_total_count_ = false;
|
||||||
bool server_has_more_ = true;
|
bool server_has_more_ = true;
|
||||||
bool database_has_more_ = false;
|
bool database_has_more_ = false;
|
||||||
|
|
||||||
@ -359,8 +360,8 @@ class StoryManager final : public Actor {
|
|||||||
|
|
||||||
ActiveStories *get_active_stories_force(DialogId owner_dialog_id, const char *source);
|
ActiveStories *get_active_stories_force(DialogId owner_dialog_id, const char *source);
|
||||||
|
|
||||||
ActiveStories *on_get_active_stories_from_database(DialogId owner_dialog_id, const BufferSlice &value,
|
ActiveStories *on_get_active_stories_from_database(StoryListId story_list_id, DialogId owner_dialog_id,
|
||||||
const char *source);
|
const BufferSlice &value, const char *source);
|
||||||
|
|
||||||
void on_story_changed(StoryFullId story_full_id, const Story *story, bool is_changed, bool need_save_to_database,
|
void on_story_changed(StoryFullId story_full_id, const Story *story, bool is_changed, bool need_save_to_database,
|
||||||
bool from_database = false);
|
bool from_database = false);
|
||||||
|
Loading…
Reference in New Issue
Block a user