Fixed update of local state after reorder stories in albums.

This commit is contained in:
23rd
2025-11-19 17:11:58 +03:00
committed by John Preston
parent 0bf50de77a
commit bc2449c3f9
4 changed files with 63 additions and 57 deletions

View File

@@ -609,7 +609,8 @@ void InnerWidget::setupList() {
int newPosition,
Fn<void()> done,
Fn<void()> fail) {
reorderAlbumStories(
_peer->owner().stories().albumReorderStories(
_peer,
albumId,
oldPosition,
newPosition,
@@ -1122,52 +1123,4 @@ void InnerWidget::flushAlbumReorder() {
_pendingAlbumReorder = false;
}
void InnerWidget::reorderAlbumStories(
int albumId,
int oldPosition,
int newPosition,
Fn<void()> done,
Fn<void()> fail) {
const auto &stories = _controller->session().data().stories();
const auto ids = stories.albumIds(_peer->id, albumId);
const auto list = Data::RespectingPinned(ids);
if (oldPosition < 0 || newPosition < 0
|| oldPosition >= list.size() || newPosition >= list.size()) {
fail();
return;
}
if (_reorderStoriesRequestId) {
_controller->session().api().request(
base::take(_reorderStoriesRequestId)).cancel();
}
auto reorderedList = list;
base::reorder(reorderedList, oldPosition, newPosition);
auto order = QVector<MTPint>();
order.reserve(reorderedList.size());
for (const auto id : reorderedList) {
order.push_back(MTP_int(id));
}
_reorderStoriesRequestId = _controller->session().api().request(
MTPstories_UpdateAlbum(
MTP_flags(MTPstories_UpdateAlbum::Flag::f_order),
_peer->input,
MTP_int(albumId),
MTPstring(),
MTPVector<MTPint>(),
MTPVector<MTPint>(),
MTP_vector<MTPint>(order)
)).done([=](const MTPStoryAlbum &result) {
_reorderStoriesRequestId = 0;
done();
}).fail([=] {
_reorderStoriesRequestId = 0;
fail();
}).send();
}
} // namespace Info::Stories

View File

@@ -132,13 +132,6 @@ private:
void reorderAlbumsLocally(const Ui::SubTabsReorderUpdate &update);
void flushAlbumReorder();
void reorderAlbumStories(
int albumId,
int oldPosition,
int newPosition,
Fn<void()> done,
Fn<void()> fail);
const not_null<Controller*> _controller;
const not_null<PeerData*> _peer;
const int _addingToAlbumId = 0;
@@ -154,7 +147,6 @@ private:
base::unique_qptr<Ui::PopupMenu> _menu;
std::unique_ptr<MTP::Sender> _api;
mtpRequestId _reorderRequestId = 0;
mtpRequestId _reorderStoriesRequestId = 0;
object_ptr<Ui::VerticalLayout> _top = { nullptr };
object_ptr<Media::ListWidget> _list = { nullptr };