Fixed update of local state after reorder stories in albums.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 };
|
||||
|
||||
Reference in New Issue
Block a user