index.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { defineStore } from 'pinia';
  2. import { MediaTypeEnum } from '@/interface';
  3. import { mobileRouterName } from '@/router';
  4. export type AppRootState = {
  5. muted: boolean;
  6. navList: { routeName: string; name: string }[];
  7. allTrack: {
  8. /** 1开启;2关闭 */
  9. audio: number;
  10. /** 1开启;2关闭 */
  11. video: number;
  12. id: string;
  13. mediaName: string;
  14. type: MediaTypeEnum;
  15. track: MediaStreamTrack;
  16. stream: MediaStream;
  17. streamid: string;
  18. }[];
  19. };
  20. export const useAppStore = defineStore('app', {
  21. state: (): AppRootState => {
  22. return {
  23. muted: true,
  24. navList: [
  25. { routeName: mobileRouterName.h5, name: '频道' },
  26. { routeName: mobileRouterName.h5Rank, name: '排行' },
  27. { routeName: mobileRouterName.h5Profile, name: '我的' },
  28. ],
  29. allTrack: [],
  30. };
  31. },
  32. actions: {
  33. setMuted(res: AppRootState['muted']) {
  34. this.muted = res;
  35. },
  36. setAllTrack(res: AppRootState['allTrack']) {
  37. this.allTrack = res;
  38. },
  39. isOnlyAudio() {
  40. let videoTracks = 0;
  41. this.allTrack.forEach((item) => {
  42. if (item.video === 1) {
  43. videoTracks += 1;
  44. }
  45. });
  46. return videoTracks <= 0;
  47. },
  48. getTrackInfo() {
  49. const res = { audio: 0, video: 0 };
  50. this.allTrack.forEach((item) => {
  51. res.audio += item.stream.getAudioTracks().length;
  52. res.video += item.stream.getVideoTracks().length;
  53. });
  54. return res;
  55. },
  56. },
  57. });