video-settings-service.ts 865 B

1234567891011121314151617181920212223242526272829303132333435
  1. import { createContext } from 'react';
  2. export type VideoQuality = {
  3. index: number;
  4. /**
  5. * This property is not just for display or so
  6. * but it holds information
  7. *
  8. * @example '1.2Mbps@24fps'
  9. */
  10. name: string;
  11. };
  12. export interface VideoSettingsStaticService {
  13. getVideoQualities(): Promise<Array<VideoQuality>>;
  14. }
  15. class VideoSettingsService {
  16. private static readonly VIDEO_CONFIG_URL = '/api/video/variants';
  17. public static async getVideoQualities(): Promise<Array<VideoQuality>> {
  18. let qualities: Array<VideoQuality> = [];
  19. try {
  20. const response = await fetch(VideoSettingsService.VIDEO_CONFIG_URL);
  21. qualities = await response.json();
  22. } catch (e) {
  23. console.error(e);
  24. }
  25. return qualities;
  26. }
  27. }
  28. export const VideoSettingsServiceContext =
  29. createContext<VideoSettingsStaticService>(VideoSettingsService);