nukeop/nuclear

View on GitHub
packages/main/src/services/@windows/system-api.ts

Summary

Maintainability
A
1 hr
Test Coverage
/* eslint-disable @typescript-eslint/no-empty-function */
import NuclearApi from '../../interfaces/nuclear-api';
import { injectable } from 'inversify';

@injectable()
class WindowsMediaService implements NuclearApi {
  onPause() {}
  onPlay() {}
  pause() {}
  play() {}
  listen() {}
}

export default WindowsMediaService;


// import { MediaPlaybackStatus, MediaPlaybackType, SystemMediaTransportControlsButton } from '@nodert-win10/windows.media';
// import { BackgroundMediaPlayer } from '@nodert-win10/windows.media.playback';
// import { RandomAccessStreamReference } from '@nodert-win10/windows.storage.streams';
// import { Uri } from '@nodert-win10/windows.foundation';
// import { NuclearStatus, PlaybackStatus, NuclearMeta } from '@nuclear/core';
// import { Event, IpcMain } from 'electron';
// import { inject, injectable } from 'inversify';

// import Ipc from '../ipc';
// import Config from '../config';
// import NuclearApi from '../../interfaces/nuclear-api';
// import Window from '../window';

// @injectable()
// class WindowsMediaService implements NuclearApi {
//   private controls: any;

//   constructor(
//     @inject(Config) private config: Config,
//     @inject(Ipc) private ipc: IpcMain,
//     @inject(Window) private window: Window
//   ) {}

//   private getPlayingStatus(): Promise<NuclearStatus> {
//     return new Promise(resolve => {
//       this.window.send('playing-status');
//       this.ipc.once('playing-status', (evt: Event, data: NuclearStatus) => {
//         resolve(data);
//       });
//     });
//   }

//   onPlay() {
//     this.window.send('play');
//   }
  
//   onPause() {
//     this.window.send('pause');
//   }

//   onStop() {
//     this.window.send('stop');
//   }

//   onNext() {
//     this.window.send('next');
//   }

//   onPrevious() {
//     this.window.send('previous');
//   }

//   play() {
//     this.controls.playbackStatus = MediaPlaybackStatus.playing;
//   }
  
//   pause() {
//     this.controls.playbackStatus = MediaPlaybackStatus.paused;
//   }

//   sendMetadata(track: NuclearMeta) {
//     this.controls.displayUpdater.musicProperties.artist = track.artist;
//     this.controls.displayUpdater.musicProperties.title = track.name;

//     // this.controls.displayUpdater.musicProperties.albumTitle = track.genre || '';
//     this.controls.displayUpdater.thumbnail = track.thumbnail ? RandomAccessStreamReference.createFromUri(new Uri(track.thumbnail)) : '';

//     this.controls.displayUpdater.update();
//   }

//   listen() {
//     this.controls = BackgroundMediaPlayer.current.systemMediaTransportControls;

//     this.controls.isChannelDownEnabled = false;
//     this.controls.isChannelUpEnabled = false;
//     this.controls.isFastForwardEnabled = false;
//     this.controls.isNextEnabled = true;
//     this.controls.isPauseEnabled = true;
//     this.controls.isPlayEnabled = true;
//     this.controls.isPreviousEnabled = true;
//     this.controls.isRecordEnabled = false;
//     this.controls.isRewindEnabled = false;
//     this.controls.isStopEnabled = true;
//     this.controls.playbackStatus = MediaPlaybackStatus.closed;
//     this.controls.displayUpdater.type = MediaPlaybackType.music;

//     this.controls.displayUpdater.musicProperties.title = this.config.title;
//     this.controls.displayUpdater.musicProperties.artist = 'No track';
//     this.controls.displayUpdater.update();

//     this.controls.on('buttonpressed', (_sender: any, eventArgs: any) => {
//       switch (eventArgs.button) {
//         case SystemMediaTransportControlsButton.play:
//           this.onPlay()
//           break;
//         case SystemMediaTransportControlsButton.pause:
//           this.onPause();
//           break;
//         case SystemMediaTransportControlsButton.stop:
//           this.onStop();
//           break;
//         case SystemMediaTransportControlsButton.next:
//           this.onNext()
//           break;
//         case SystemMediaTransportControlsButton.previous:
//           this.onPrevious()
//           break;
//         default:
//           break;
//       }
//     });
//   }
// }

// export default WindowsMediaService;