streamdeck-typescript
Version:
This library will help you build elgato stream deck plugins in typescript
52 lines (45 loc) • 1.8 kB
text/typescript
import {
DidReceiveSettingsEvent,
KeyDownEvent,
KeyUpEvent,
SDOnActionEvent,
StreamDeckAction,
WillAppearEvent
} from '../../src';
import {Counter} from '../counter';
import {SettingsInterface} from '../interfaces/settings.interface';
export class CounterAction extends StreamDeckAction<Counter, CounterAction> {
private keyUpTimer: any;
constructor(private plugin: Counter, private actionName: string) {
super(plugin, actionName);
}
('willAppear')
private onAppear({context, payload: {settings}}: WillAppearEvent<SettingsInterface>) {
this.plugin.setTitle((settings.count ?? 0).toString(), context);
}
('keyUp')
private onKeyUp({context, payload: {settings}}: KeyUpEvent<SettingsInterface>) {
clearTimeout(this.keyUpTimer);
const steps = settings.steps ?? 1;
const count = (settings.count ?? 0) + steps;
this.plugin.setTitle(count.toString(), context);
this.plugin.setSettings<SettingsInterface>({steps, count}, context);
}
('keyDown')
private onKeyDown({context, payload: {settings}}: KeyDownEvent<SettingsInterface>) {
this.keyUpTimer = setTimeout(() => {
const steps = settings.steps ?? 1;
this.plugin.setSettings<SettingsInterface>(
{
steps,
count: steps * -1
}, context
);
this.plugin.setTitle('0', context);
}, 2000);
}
('didReceiveSettings')
private onSettings({context, payload: {settings}}: DidReceiveSettingsEvent<SettingsInterface>) {
this.plugin.setTitle(settings.count.toString() ?? 0, context);
}
}