StationModule.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { UniqueMethods } from "../types/TestModules";
  2. import BaseModule from "../BaseModule";
  3. import ModuleManager from "../ModuleManager";
  4. export default class StationModule extends BaseModule {
  5. /**
  6. * Station Module
  7. *
  8. * @param {ModuleManager} moduleManager Module manager class
  9. */
  10. public constructor(moduleManager: ModuleManager) {
  11. super(moduleManager, "stations");
  12. }
  13. /**
  14. * startup - Startup station module
  15. */
  16. public override startup(): void {
  17. super.startup();
  18. console.log("Station Startup");
  19. super.started();
  20. }
  21. /**
  22. * addToQueue - Add media to queue
  23. *
  24. * @param {object} payload Payload
  25. * @param {string} payload.songId Song ID
  26. */
  27. public addToQueue(payload: { songId: string }): Promise<void> {
  28. return new Promise((resolve, reject) => {
  29. const { songId } = payload;
  30. // console.log(`Adding song ${songId} to the queue.`);
  31. setTimeout(
  32. () => (Math.round(Math.random()) ? resolve() : reject()),
  33. Math.random() * 1000
  34. );
  35. });
  36. }
  37. /**
  38. *
  39. * @returns {{ number: number }} return
  40. */
  41. public addA(): Promise<{ number: number }> {
  42. return new Promise<{ number: number }>(resolve => {
  43. resolve({ number: 123 });
  44. });
  45. }
  46. /**
  47. *
  48. */
  49. public addB(): Promise<void> {
  50. return new Promise<void>(resolve => {
  51. resolve();
  52. });
  53. }
  54. }
  55. export type StationModuleJobs = {
  56. [Property in keyof UniqueMethods<StationModule>]: {
  57. payload: Parameters<UniqueMethods<StationModule>[Property]>[0];
  58. returns: Awaited<ReturnType<UniqueMethods<StationModule>[Property]>>;
  59. };
  60. };