Skip to content

Problems with extension API Game events #377

Open
@n0samu

Description

@n0samu

Describe the bug
(Note that all functions I reference are in back/game/GameManager.ts)

The launcher's extension API's Game and Playlist events have some bugs and inconsistencies:

  • addPlaylistGame and removePlaylist do not fire any event.
  • save, updatePlaylist and updatePlaylistGame pass identical "old" and "new" objects because the object is modified without first making a copy.
    • onDidUpdateGame's oldGame and newGame both reference the new Game.
    • onDidUpdatePlaylist's oldPlaylist and newPlaylist both reference the new Playlist. This makes it impossible to detect playlist renames.
    • onDidUpdatePlaylistGame's oldGame and newGame both reference the new PlaylistGame.
  • It would be more convenient for API users if updating, adding and removing PlaylistGames fired the onDidUpdatePlaylist event.

Expected behavior
Here's how I'd personally expect the API to work:

  • Removing a Playlist should fire an onDidRemovePlaylist event.
  • Updating, adding and removing PlaylistGames should fire onDidUpdatePlaylist with the old and new Playlist object
    • For example, in the Playlist Backup extension that I'm developing, I would like to get an event whenever the user updates a playlist so I can save the updated playlist to the backup file.
  • Adding a Game/Playlist/PlaylistGame should fire the associated Update event with identical "old" and "new" objects.
  • Thus addPlaylistGame should fire both onDidUpdatePlaylist and onDidUpdatePlaylistGame.

Additional context
In the Playlist Backup extension that I'm developing, I would like to get an event whenever the user updates a playlist so I can save the updated playlist to the backup file. Some of my expectations are motivated by this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions