Skip to content

Commit

Permalink
Fixes blocking of state updates
Browse files Browse the repository at this point in the history
  • Loading branch information
FL550 committed Aug 26, 2020
1 parent 34f53c4 commit 5b0fec4
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 13 deletions.
2 changes: 1 addition & 1 deletion dist/spotify-card.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 7 additions & 7 deletions src/__tests__/spotify-card-lib.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ describe('SpotifyCardLib', () => {
test('_unsubscribe_entitites', () => {
spotify_card_lib._unsubscribe_entitites = jest.fn();
spotify_card_lib.disconnectedCallback();
expect(spotify_card_lib._unsubscribe_entitites).toHaveBeenCalled();
expect(spotify_card_lib._unsubscribe_entitites).toBeUndefined();
});
});

Expand Down Expand Up @@ -337,21 +337,21 @@ describe('SpotifyCardLib', () => {
beforeEach(() => {
spotify_card_lib.config = jest.genMockFromModule<SpotifyCardConfig>('../types');
const connect_device = jest.genMockFromModule<ConnectDevice>('../types');
connect_device.name = "connect_device";
connect_device.name = 'connect_device';
const chromecast_device = jest.genMockFromModule<ChromecastDevice>('../types');
chromecast_device.friendly_name = "cast_device";
chromecast_device.friendly_name = 'cast_device';
spotify_card_lib.getFilteredDevices = jest.fn().mockReturnValue([[connect_device], [chromecast_device]]);
});
test('no default_device set', () => {
expect(spotify_card_lib.getDefaultDevice()).toBeUndefined();
});
test('in connect devices', () => {
spotify_card_lib.config.default_device = "connect_device";
expect(spotify_card_lib.getDefaultDevice()).toBe("connect_device");
spotify_card_lib.config.default_device = 'connect_device';
expect(spotify_card_lib.getDefaultDevice()).toBe('connect_device');
});
test('in cast devices', () => {
spotify_card_lib.config.default_device = "cast_device";
expect(spotify_card_lib.getDefaultDevice()).toBe("cast_device");
spotify_card_lib.config.default_device = 'cast_device';
expect(spotify_card_lib.getDefaultDevice()).toBe('cast_device');
});
});

Expand Down
13 changes: 8 additions & 5 deletions src/spotify-card-lib.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,9 +125,9 @@ export class SpotifyCardLib implements ISpotifyCardLib {

public async requestUpdate(): Promise<void> {
if (this.isSpotcastInstalled() && !this._spotcast_connector.is_loading()) {
this._spotcast_connector.updateState().then(() => {
this._spotcast_connector.fetchPlaylists().then(() => {
this._parent.requestUpdate();
await this._spotcast_connector.updateState().then(async () => {
await this._spotcast_connector.fetchPlaylists().then(async () => {
await this._parent.requestUpdate();
});
});
}
Expand All @@ -150,14 +150,17 @@ export class SpotifyCardLib implements ISpotifyCardLib {
this._spotcast_connector = new SpotcastConnector(this);
//get all available entities and when they update
this.doSubscribeEntities();
//keep devices list in cache. So 10 minutes update
if (this.hass) {
//request update of spotcast data
this.requestUpdate();
}
}

public disconnectedCallback(): void {
this._unsubscribe_entitites ?? this._unsubscribe_entitites();
if (this._unsubscribe_entitites) {
this._unsubscribe_entitites();
this._unsubscribe_entitites = undefined;
}
}

public doSubscribeEntities(): void {
Expand Down

0 comments on commit 5b0fec4

Please sign in to comment.