Skip to content

Commit

Permalink
Fix not saving to cache
Browse files Browse the repository at this point in the history
  • Loading branch information
kraxarn committed Jul 8, 2023
1 parent 2b70001 commit 1fb715c
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 3 deletions.
32 changes: 29 additions & 3 deletions src/list/tracks.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -656,13 +656,13 @@ void List::Tracks::load(const lib::spt::playlist &playlist)
void List::Tracks::refreshPlaylist(const lib::spt::playlist &playlist)
{
auto *mainWindow = MainWindow::find(parentWidget());
const auto playlistUri = lib::spt::id_to_uri("playlist", playlist.id);

if (lib::developer_mode::is_experiment_enabled(lib::experiment::new_paging))
{
spotify.playlist_tracks(playlist,
[this, mainWindow, playlistUri](const lib::result<lib::spt::page<lib::spt::track>> &result) -> bool
[this, mainWindow, playlist](const lib::result<lib::spt::page<lib::spt::track>> &result) -> bool
{
const auto playlistUri = lib::spt::id_to_uri("playlist", playlist.id);
if (playlistUri != mainWindow->history()->currentUri())
{
return false;
Expand All @@ -675,7 +675,13 @@ void List::Tracks::refreshPlaylist(const lib::spt::playlist &playlist)
return false;
}

return load(result.value());
if (load(result.value()))
{
return true;
}

saveToCache(playlist);
return false;
});

return;
Expand Down Expand Up @@ -774,3 +780,23 @@ void List::Tracks::updateLikedTracks(const std::function<void(const std::vector<
cache.set_tracks("liked_tracks", tracks);
});
}

void List::Tracks::saveToCache(const lib::spt::playlist &playlist)
{
std::vector<lib::spt::track> tracks;
tracks.reserve(static_cast<size_t>(topLevelItemCount()));

for (auto i = 0; i < topLevelItemCount(); i++)
{
const auto *item = topLevelItem(i);
const auto &itemData = item->data(0, static_cast<int>(DataRole::Track));
tracks.push_back(itemData.value<lib::spt::track>());
}

lib::log::debug("Saved {} tracks to cache for playlist: {}",
tracks.size(), playlist.name);

lib::spt::playlist newPlaylist = playlist;
newPlaylist.tracks = tracks;
cache.set_playlist(newPlaylist);
}
2 changes: 2 additions & 0 deletions src/list/tracks.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ namespace List
void getLikedTracks(const std::function<void(const std::vector<lib::spt::track> &)> &callback);
void updateLikedTracks(const std::function<void(const std::vector<lib::spt::track> &)> &callback);

void saveToCache(const lib::spt::playlist &playlist);

void onMenu(const QPoint &pos);
void onItemClicked(QTreeWidgetItem *item, int column);
void onDoubleClicked(QTreeWidgetItem *item, int column);
Expand Down

0 comments on commit 1fb715c

Please sign in to comment.