Fixing bug where volume would restart the first activity. ControlUnit now starts with last used activity
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@ -22,6 +22,18 @@ export class ActivityService {
|
||||
@inject("log") private _log: Logging
|
||||
) {}
|
||||
|
||||
public startLastOrDefaultActivity = async (
|
||||
controlUnitName: string,
|
||||
defaultActivity: IActivity
|
||||
) => {
|
||||
const lastActivity = this.getLastActivity(controlUnitName);
|
||||
if (!lastActivity) {
|
||||
return this.startActivity(controlUnitName, defaultActivity);
|
||||
}
|
||||
|
||||
return this.startActivity(controlUnitName, lastActivity);
|
||||
};
|
||||
|
||||
public startActivity = async (
|
||||
controlUnitName: string,
|
||||
activity: IActivity
|
||||
@ -68,19 +80,24 @@ export class ActivityService {
|
||||
);
|
||||
await this._harmonyDataProvider.powerOffDevices(devicesToTurnOff);
|
||||
|
||||
this._stateDataProvider.removeState(controlUnitName);
|
||||
this._stateDataProvider.deactivateState(controlUnitName);
|
||||
};
|
||||
|
||||
public getCurrentActivity(controlUnitName: string): IActivity | undefined {
|
||||
return this._stateDataProvider.getState(controlUnitName);
|
||||
return this._stateDataProvider.getState(controlUnitName)?.currentActivity;
|
||||
}
|
||||
|
||||
public getLastActivity(controlUnitName: string): IActivity | undefined {
|
||||
return this._stateDataProvider.getState(controlUnitName)?.lastActivity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return if a control unit is active
|
||||
* @param controlUnitName
|
||||
*/
|
||||
public getIsActive(controlUnitName: string): IActivity | undefined {
|
||||
return this._stateDataProvider.getState(controlUnitName);
|
||||
public getIsActive(controlUnitName: string): boolean {
|
||||
const state = this._stateDataProvider.getState(controlUnitName);
|
||||
return state != undefined && state.currentActivity != undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -104,7 +121,7 @@ export class ActivityService {
|
||||
return devicesToTurnOn;
|
||||
}
|
||||
|
||||
currentOtherState.currentActivity.DeviceSetupList.forEach(
|
||||
currentOtherState.currentActivity!.DeviceSetupList.forEach(
|
||||
(value: IDeviceSetupItem) => {
|
||||
//there are devices to remove
|
||||
if (devicesToTurnOn.some((e) => e && e.name === value.DeviceName)) {
|
||||
|
@ -24,7 +24,7 @@ export class CommandService {
|
||||
let commandName: string = "";
|
||||
|
||||
let device: HarmonyDevice = this._harmonyDataProvider.getDeviceByName(
|
||||
currentActivity.ControlDevice
|
||||
currentActivity.currentActivity!.ControlDevice
|
||||
);
|
||||
switch (key) {
|
||||
case RemoteKey.ARROW_UP: {
|
||||
|
@ -16,10 +16,12 @@ export class VolumeService {
|
||||
*/
|
||||
public volumeUp = async (controlUnitName: string) => {
|
||||
let volumeUpCommand: string = "Volume Up";
|
||||
let currentActivity = this._stateDataProvider.getState(controlUnitName);
|
||||
if (currentActivity) {
|
||||
let currentState = this._stateDataProvider.getState(controlUnitName);
|
||||
if (currentState) {
|
||||
let volumeDevice: HarmonyDevice =
|
||||
this._harmonyDataProvider.getDeviceByName(currentActivity.VolumeDevice);
|
||||
this._harmonyDataProvider.getDeviceByName(
|
||||
currentState.currentActivity!.VolumeDevice
|
||||
);
|
||||
await this._harmonyDataProvider.sendCommand(
|
||||
volumeUpCommand,
|
||||
volumeDevice
|
||||
@ -32,10 +34,12 @@ export class VolumeService {
|
||||
*/
|
||||
public volumeDown = async (controlUnitName: string) => {
|
||||
let volumeDownCommand: string = "Volume Down";
|
||||
let currentActivity = this._stateDataProvider.getState(controlUnitName);
|
||||
if (currentActivity) {
|
||||
let currentState = this._stateDataProvider.getState(controlUnitName);
|
||||
if (currentState) {
|
||||
let volumeDevice: HarmonyDevice =
|
||||
this._harmonyDataProvider.getDeviceByName(currentActivity.VolumeDevice);
|
||||
this._harmonyDataProvider.getDeviceByName(
|
||||
currentState.currentActivity!.VolumeDevice
|
||||
);
|
||||
await this._harmonyDataProvider.sendCommand(
|
||||
volumeDownCommand,
|
||||
volumeDevice
|
||||
|
Reference in New Issue
Block a user