From ae7450b3b8d743be76c72ee56edca3f9ad58a3a5 Mon Sep 17 00:00:00 2001 From: zijiren233 Date: Sun, 15 Oct 2023 15:24:13 +0800 Subject: [PATCH] Feat: update and use proto model --- proto.sh | 2 +- src/plugins/sync.ts | 59 +++--- src/proto/message.proto | 26 +-- src/proto/message.ts | 368 +++++++++++++++++++++---------------- src/services/apis/movie.ts | 9 +- src/services/apis/room.ts | 1 - src/stores/room.ts | 21 ++- src/types/Movie.ts | 23 --- src/types/Room.ts | 4 - src/views/Cinema.vue | 57 +++--- 10 files changed, 301 insertions(+), 269 deletions(-) diff --git a/proto.sh b/proto.sh index 11d2fa4..17608ad 100644 --- a/proto.sh +++ b/proto.sh @@ -1,2 +1,2 @@ #!/bin/bash -protoc --plugin=./node_modules/.bin/protoc-gen-ts_proto --ts_proto_opt=env=browser,esModuleInterop=true,useOptionals=messages --ts_proto_out=. ./src/proto/*.proto \ No newline at end of file +protoc --plugin=./node_modules/.bin/protoc-gen-ts_proto --ts_proto_opt=env=browser,esModuleInterop=true,useOptionals=none --ts_proto_out=. ./src/proto/*.proto \ No newline at end of file diff --git a/src/plugins/sync.ts b/src/plugins/sync.ts index 3b2d208..81dcd06 100644 --- a/src/plugins/sync.ts +++ b/src/plugins/sync.ts @@ -25,11 +25,13 @@ export const sync = (cbk: callback): resould => { let player: Artplayer | undefined = undefined; const publishSeek = useDebounceFn((currentTime: number) => { if (!player || player.option.isLive) return; - cbk["publishStatus"]({ - type: ElementMessageType.CHANGE_SEEK, - seek: currentTime, - rate: player.playbackRate - }); + cbk["publishStatus"]( + ElementMessage.create({ + type: ElementMessageType.CHANGE_SEEK, + seek: currentTime, + rate: player.playbackRate + }) + ); devLog("视频空降,:", player.currentTime); }, debounceTime); @@ -40,11 +42,13 @@ export const sync = (cbk: callback): resould => { const publishPlay = () => { if (!player || player.option.isLive) return; - cbk["publishStatus"]({ - type: ElementMessageType.PLAY, - seek: player.currentTime, - rate: player.playbackRate - }); + cbk["publishStatus"]( + ElementMessage.create({ + type: ElementMessageType.PLAY, + seek: player.currentTime, + rate: player.playbackRate + }) + ); }; const publishPlayDebounce = debounce(publishPlay); @@ -68,11 +72,13 @@ export const sync = (cbk: callback): resould => { const publishPause = () => { if (!player || player.option.isLive) return; - cbk["publishStatus"]({ - type: ElementMessageType.PAUSE, - seek: player.currentTime, - rate: player.playbackRate - }); + cbk["publishStatus"]( + ElementMessage.create({ + type: ElementMessageType.PAUSE, + seek: player.currentTime, + rate: player.playbackRate + }) + ); }; const publishPauseDebounce = debounce(publishPause); @@ -88,11 +94,13 @@ export const sync = (cbk: callback): resould => { const publishRate = () => { if (!player || player.option.isLive) return; - cbk["publishStatus"]({ - type: ElementMessageType.CHANGE_RATE, - seek: player.currentTime, - rate: player.playbackRate - }); + cbk["publishStatus"]( + ElementMessage.create({ + type: ElementMessageType.CHANGE_RATE, + seek: player.currentTime, + rate: player.playbackRate + }) + ); devLog("视频倍速,seek:", player.currentTime); }; @@ -122,10 +130,13 @@ export const sync = (cbk: callback): resould => { intervals.push( setInterval(() => { - cbk["publishStatus"]({ - type: ElementMessageType.CHECK_SEEK, - seek: art.currentTime - }); + cbk["publishStatus"]( + ElementMessage.create({ + type: ElementMessageType.CHECK_SEEK, + seek: art.currentTime, + rate: art.playbackRate + }) + ); }, 5000) ); }); diff --git a/src/proto/message.proto b/src/proto/message.proto index a82da69..8e91b88 100644 --- a/src/proto/message.proto +++ b/src/proto/message.proto @@ -19,18 +19,22 @@ enum ElementMessageType { CHANGE_PEOPLE = 12; } +message BaseMovieInfo { + string url = 1; + string name = 2; + bool live = 3; + bool proxy = 4; + bool rtmpSource = 5; + string type = 6; + map headers = 7; +} + message MovieInfo { uint64 id = 1; - string url = 2; - string name = 3; - bool live = 4; - bool proxy = 5; - bool rtmp_source = 6; - string type = 7; - map headers = 8; - string pull_key = 9; - int64 created_at = 10; - string creator = 11; + BaseMovieInfo base = 2; + string pullKey = 3; + int64 createdAt = 4; + string creator = 5; } message Status { @@ -51,6 +55,6 @@ message ElementMessage { double rate = 4; double seek = 5; optional Current current = 6; - int64 people_num = 7; + int64 peopleNum = 7; int64 time = 8; } \ No newline at end of file diff --git a/src/proto/message.ts b/src/proto/message.ts index c5b06de..5abf6ad 100644 --- a/src/proto/message.ts +++ b/src/proto/message.ts @@ -103,8 +103,7 @@ export function elementMessageTypeToJSON(object: ElementMessageType): string { } } -export interface MovieInfo { - id: number; +export interface BaseMovieInfo { url: string; name: string; live: boolean; @@ -112,16 +111,21 @@ export interface MovieInfo { rtmpSource: boolean; type: string; headers: { [key: string]: string }; - pullKey: string; - createdAt: number; - creator: string; } -export interface MovieInfo_HeadersEntry { +export interface BaseMovieInfo_HeadersEntry { key: string; value: string; } +export interface MovieInfo { + id: number; + base: BaseMovieInfo | undefined; + pullKey: string; + createdAt: number; + creator: string; +} + export interface Status { seek: number; rate: number; @@ -129,161 +133,109 @@ export interface Status { } export interface Current { - movie?: MovieInfo | undefined; - status?: Status | undefined; + movie: MovieInfo | undefined; + status: Status | undefined; } export interface ElementMessage { type: ElementMessageType; - sender?: string | undefined; - message?: string | undefined; - rate?: number | undefined; - seek?: number | undefined; + sender: string; + message: string; + rate: number; + seek: number; current?: Current | undefined; - peopleNum?: number | undefined; - time?: number | undefined; + peopleNum: number; + time: number; } -function createBaseMovieInfo(): MovieInfo { - return { - id: 0, - url: "", - name: "", - live: false, - proxy: false, - rtmpSource: false, - type: "", - headers: {}, - pullKey: "", - createdAt: 0, - creator: "", - }; +function createBaseBaseMovieInfo(): BaseMovieInfo { + return { url: "", name: "", live: false, proxy: false, rtmpSource: false, type: "", headers: {} }; } -export const MovieInfo = { - encode(message: MovieInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.id !== 0) { - writer.uint32(8).uint64(message.id); - } +export const BaseMovieInfo = { + encode(message: BaseMovieInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.url !== "") { - writer.uint32(18).string(message.url); + writer.uint32(10).string(message.url); } if (message.name !== "") { - writer.uint32(26).string(message.name); + writer.uint32(18).string(message.name); } if (message.live === true) { - writer.uint32(32).bool(message.live); + writer.uint32(24).bool(message.live); } if (message.proxy === true) { - writer.uint32(40).bool(message.proxy); + writer.uint32(32).bool(message.proxy); } if (message.rtmpSource === true) { - writer.uint32(48).bool(message.rtmpSource); + writer.uint32(40).bool(message.rtmpSource); } if (message.type !== "") { - writer.uint32(58).string(message.type); + writer.uint32(50).string(message.type); } Object.entries(message.headers).forEach(([key, value]) => { - MovieInfo_HeadersEntry.encode({ key: key as any, value }, writer.uint32(66).fork()).ldelim(); + BaseMovieInfo_HeadersEntry.encode({ key: key as any, value }, writer.uint32(58).fork()).ldelim(); }); - if (message.pullKey !== "") { - writer.uint32(74).string(message.pullKey); - } - if (message.createdAt !== 0) { - writer.uint32(80).int64(message.createdAt); - } - if (message.creator !== "") { - writer.uint32(90).string(message.creator); - } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): MovieInfo { + decode(input: _m0.Reader | Uint8Array, length?: number): BaseMovieInfo { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseMovieInfo(); + const message = createBaseBaseMovieInfo(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (tag !== 8) { + if (tag !== 10) { break; } - message.id = longToNumber(reader.uint64() as Long); + message.url = reader.string(); continue; case 2: if (tag !== 18) { break; } - message.url = reader.string(); + message.name = reader.string(); continue; case 3: - if (tag !== 26) { + if (tag !== 24) { break; } - message.name = reader.string(); + message.live = reader.bool(); continue; case 4: if (tag !== 32) { break; } - message.live = reader.bool(); + message.proxy = reader.bool(); continue; case 5: if (tag !== 40) { break; } - message.proxy = reader.bool(); + message.rtmpSource = reader.bool(); continue; case 6: - if (tag !== 48) { + if (tag !== 50) { break; } - message.rtmpSource = reader.bool(); + message.type = reader.string(); continue; case 7: if (tag !== 58) { break; } - message.type = reader.string(); - continue; - case 8: - if (tag !== 66) { - break; - } - - const entry8 = MovieInfo_HeadersEntry.decode(reader, reader.uint32()); - if (entry8.value !== undefined) { - message.headers[entry8.key] = entry8.value; - } - continue; - case 9: - if (tag !== 74) { - break; - } - - message.pullKey = reader.string(); - continue; - case 10: - if (tag !== 80) { - break; + const entry7 = BaseMovieInfo_HeadersEntry.decode(reader, reader.uint32()); + if (entry7.value !== undefined) { + message.headers[entry7.key] = entry7.value; } - - message.createdAt = longToNumber(reader.int64() as Long); - continue; - case 11: - if (tag !== 90) { - break; - } - - message.creator = reader.string(); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -294,9 +246,8 @@ export const MovieInfo = { return message; }, - fromJSON(object: any): MovieInfo { + fromJSON(object: any): BaseMovieInfo { return { - id: isSet(object.id) ? globalThis.Number(object.id) : 0, url: isSet(object.url) ? globalThis.String(object.url) : "", name: isSet(object.name) ? globalThis.String(object.name) : "", live: isSet(object.live) ? globalThis.Boolean(object.live) : false, @@ -309,17 +260,11 @@ export const MovieInfo = { return acc; }, {}) : {}, - pullKey: isSet(object.pullKey) ? globalThis.String(object.pullKey) : "", - createdAt: isSet(object.createdAt) ? globalThis.Number(object.createdAt) : 0, - creator: isSet(object.creator) ? globalThis.String(object.creator) : "", }; }, - toJSON(message: MovieInfo): unknown { + toJSON(message: BaseMovieInfo): unknown { const obj: any = {}; - if (message.id !== 0) { - obj.id = Math.round(message.id); - } if (message.url !== "") { obj.url = message.url; } @@ -347,24 +292,14 @@ export const MovieInfo = { }); } } - if (message.pullKey !== "") { - obj.pullKey = message.pullKey; - } - if (message.createdAt !== 0) { - obj.createdAt = Math.round(message.createdAt); - } - if (message.creator !== "") { - obj.creator = message.creator; - } return obj; }, - create, I>>(base?: I): MovieInfo { - return MovieInfo.fromPartial(base ?? ({} as any)); + create, I>>(base?: I): BaseMovieInfo { + return BaseMovieInfo.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>(object: I): MovieInfo { - const message = createBaseMovieInfo(); - message.id = object.id ?? 0; + fromPartial, I>>(object: I): BaseMovieInfo { + const message = createBaseBaseMovieInfo(); message.url = object.url ?? ""; message.name = object.name ?? ""; message.live = object.live ?? false; @@ -377,19 +312,16 @@ export const MovieInfo = { } return acc; }, {}); - message.pullKey = object.pullKey ?? ""; - message.createdAt = object.createdAt ?? 0; - message.creator = object.creator ?? ""; return message; }, }; -function createBaseMovieInfo_HeadersEntry(): MovieInfo_HeadersEntry { +function createBaseBaseMovieInfo_HeadersEntry(): BaseMovieInfo_HeadersEntry { return { key: "", value: "" }; } -export const MovieInfo_HeadersEntry = { - encode(message: MovieInfo_HeadersEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const BaseMovieInfo_HeadersEntry = { + encode(message: BaseMovieInfo_HeadersEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.key !== "") { writer.uint32(10).string(message.key); } @@ -399,10 +331,10 @@ export const MovieInfo_HeadersEntry = { return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): MovieInfo_HeadersEntry { + decode(input: _m0.Reader | Uint8Array, length?: number): BaseMovieInfo_HeadersEntry { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseMovieInfo_HeadersEntry(); + const message = createBaseBaseMovieInfo_HeadersEntry(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -429,14 +361,14 @@ export const MovieInfo_HeadersEntry = { return message; }, - fromJSON(object: any): MovieInfo_HeadersEntry { + fromJSON(object: any): BaseMovieInfo_HeadersEntry { return { key: isSet(object.key) ? globalThis.String(object.key) : "", value: isSet(object.value) ? globalThis.String(object.value) : "", }; }, - toJSON(message: MovieInfo_HeadersEntry): unknown { + toJSON(message: BaseMovieInfo_HeadersEntry): unknown { const obj: any = {}; if (message.key !== "") { obj.key = message.key; @@ -447,17 +379,138 @@ export const MovieInfo_HeadersEntry = { return obj; }, - create, I>>(base?: I): MovieInfo_HeadersEntry { - return MovieInfo_HeadersEntry.fromPartial(base ?? ({} as any)); + create, I>>(base?: I): BaseMovieInfo_HeadersEntry { + return BaseMovieInfo_HeadersEntry.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>(object: I): MovieInfo_HeadersEntry { - const message = createBaseMovieInfo_HeadersEntry(); + fromPartial, I>>(object: I): BaseMovieInfo_HeadersEntry { + const message = createBaseBaseMovieInfo_HeadersEntry(); message.key = object.key ?? ""; message.value = object.value ?? ""; return message; }, }; +function createBaseMovieInfo(): MovieInfo { + return { id: 0, base: undefined, pullKey: "", createdAt: 0, creator: "" }; +} + +export const MovieInfo = { + encode(message: MovieInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.id !== 0) { + writer.uint32(8).uint64(message.id); + } + if (message.base !== undefined) { + BaseMovieInfo.encode(message.base, writer.uint32(18).fork()).ldelim(); + } + if (message.pullKey !== "") { + writer.uint32(26).string(message.pullKey); + } + if (message.createdAt !== 0) { + writer.uint32(32).int64(message.createdAt); + } + if (message.creator !== "") { + writer.uint32(42).string(message.creator); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MovieInfo { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseMovieInfo(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.id = longToNumber(reader.uint64() as Long); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.base = BaseMovieInfo.decode(reader, reader.uint32()); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.pullKey = reader.string(); + continue; + case 4: + if (tag !== 32) { + break; + } + + message.createdAt = longToNumber(reader.int64() as Long); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.creator = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + fromJSON(object: any): MovieInfo { + return { + id: isSet(object.id) ? globalThis.Number(object.id) : 0, + base: isSet(object.base) ? BaseMovieInfo.fromJSON(object.base) : undefined, + pullKey: isSet(object.pullKey) ? globalThis.String(object.pullKey) : "", + createdAt: isSet(object.createdAt) ? globalThis.Number(object.createdAt) : 0, + creator: isSet(object.creator) ? globalThis.String(object.creator) : "", + }; + }, + + toJSON(message: MovieInfo): unknown { + const obj: any = {}; + if (message.id !== 0) { + obj.id = Math.round(message.id); + } + if (message.base !== undefined) { + obj.base = BaseMovieInfo.toJSON(message.base); + } + if (message.pullKey !== "") { + obj.pullKey = message.pullKey; + } + if (message.createdAt !== 0) { + obj.createdAt = Math.round(message.createdAt); + } + if (message.creator !== "") { + obj.creator = message.creator; + } + return obj; + }, + + create, I>>(base?: I): MovieInfo { + return MovieInfo.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): MovieInfo { + const message = createBaseMovieInfo(); + message.id = object.id ?? 0; + message.base = (object.base !== undefined && object.base !== null) + ? BaseMovieInfo.fromPartial(object.base) + : undefined; + message.pullKey = object.pullKey ?? ""; + message.createdAt = object.createdAt ?? 0; + message.creator = object.creator ?? ""; + return message; + }, +}; + function createBaseStatus(): Status { return { seek: 0, rate: 0, playing: false }; } @@ -626,16 +679,7 @@ export const Current = { }; function createBaseElementMessage(): ElementMessage { - return { - type: 0, - sender: undefined, - message: undefined, - rate: undefined, - seek: undefined, - current: undefined, - peopleNum: undefined, - time: undefined, - }; + return { type: 0, sender: "", message: "", rate: 0, seek: 0, current: undefined, peopleNum: 0, time: 0 }; } export const ElementMessage = { @@ -643,25 +687,25 @@ export const ElementMessage = { if (message.type !== 0) { writer.uint32(8).int32(message.type); } - if (message.sender !== undefined) { + if (message.sender !== "") { writer.uint32(18).string(message.sender); } - if (message.message !== undefined) { + if (message.message !== "") { writer.uint32(26).string(message.message); } - if (message.rate !== undefined) { + if (message.rate !== 0) { writer.uint32(33).double(message.rate); } - if (message.seek !== undefined) { + if (message.seek !== 0) { writer.uint32(41).double(message.seek); } if (message.current !== undefined) { Current.encode(message.current, writer.uint32(50).fork()).ldelim(); } - if (message.peopleNum !== undefined) { + if (message.peopleNum !== 0) { writer.uint32(56).int64(message.peopleNum); } - if (message.time !== undefined) { + if (message.time !== 0) { writer.uint32(64).int64(message.time); } return writer; @@ -742,13 +786,13 @@ export const ElementMessage = { fromJSON(object: any): ElementMessage { return { type: isSet(object.type) ? elementMessageTypeFromJSON(object.type) : 0, - sender: isSet(object.sender) ? globalThis.String(object.sender) : undefined, - message: isSet(object.message) ? globalThis.String(object.message) : undefined, - rate: isSet(object.rate) ? globalThis.Number(object.rate) : undefined, - seek: isSet(object.seek) ? globalThis.Number(object.seek) : undefined, + sender: isSet(object.sender) ? globalThis.String(object.sender) : "", + message: isSet(object.message) ? globalThis.String(object.message) : "", + rate: isSet(object.rate) ? globalThis.Number(object.rate) : 0, + seek: isSet(object.seek) ? globalThis.Number(object.seek) : 0, current: isSet(object.current) ? Current.fromJSON(object.current) : undefined, - peopleNum: isSet(object.peopleNum) ? globalThis.Number(object.peopleNum) : undefined, - time: isSet(object.time) ? globalThis.Number(object.time) : undefined, + peopleNum: isSet(object.peopleNum) ? globalThis.Number(object.peopleNum) : 0, + time: isSet(object.time) ? globalThis.Number(object.time) : 0, }; }, @@ -757,25 +801,25 @@ export const ElementMessage = { if (message.type !== 0) { obj.type = elementMessageTypeToJSON(message.type); } - if (message.sender !== undefined) { + if (message.sender !== "") { obj.sender = message.sender; } - if (message.message !== undefined) { + if (message.message !== "") { obj.message = message.message; } - if (message.rate !== undefined) { + if (message.rate !== 0) { obj.rate = message.rate; } - if (message.seek !== undefined) { + if (message.seek !== 0) { obj.seek = message.seek; } if (message.current !== undefined) { obj.current = Current.toJSON(message.current); } - if (message.peopleNum !== undefined) { + if (message.peopleNum !== 0) { obj.peopleNum = Math.round(message.peopleNum); } - if (message.time !== undefined) { + if (message.time !== 0) { obj.time = Math.round(message.time); } return obj; @@ -787,15 +831,15 @@ export const ElementMessage = { fromPartial, I>>(object: I): ElementMessage { const message = createBaseElementMessage(); message.type = object.type ?? 0; - message.sender = object.sender ?? undefined; - message.message = object.message ?? undefined; - message.rate = object.rate ?? undefined; - message.seek = object.seek ?? undefined; + message.sender = object.sender ?? ""; + message.message = object.message ?? ""; + message.rate = object.rate ?? 0; + message.seek = object.seek ?? 0; message.current = (object.current !== undefined && object.current !== null) ? Current.fromPartial(object.current) : undefined; - message.peopleNum = object.peopleNum ?? undefined; - message.time = object.time ?? undefined; + message.peopleNum = object.peopleNum ?? 0; + message.time = object.time ?? 0; return message; }, }; diff --git a/src/services/apis/movie.ts b/src/services/apis/movie.ts index 81ec1f3..52a8255 100644 --- a/src/services/apis/movie.ts +++ b/src/services/apis/movie.ts @@ -1,5 +1,6 @@ import { useDefineApi } from "@/stores/useDefineApi"; -import type { BaseMovieInfo, MovieInfo, EditMovieInfo, MovieStatus } from "@/types/Movie"; +import type { EditMovieInfo } from "@/types/Movie"; +import type { BaseMovieInfo, MovieInfo, Status } from "@/proto/message"; // 获取影片列表 export const movieListApi = useDefineApi< @@ -15,7 +16,7 @@ export const movieListApi = useDefineApi< { current: { movie: MovieInfo; - status: MovieStatus; + status: Status; }; movies: MovieInfo[] | []; total: number; @@ -53,7 +54,7 @@ export const currentMovieApi = useDefineApi< { current: { movie: MovieInfo; - status: MovieStatus; + status: Status; }; } >({ @@ -129,7 +130,7 @@ export const movieStatusApi = useDefineApi< { current: { movie: MovieInfo; - status: MovieStatus; + status: Status; }; } >({ diff --git a/src/services/apis/room.ts b/src/services/apis/room.ts index e79b25a..5337cf0 100644 --- a/src/services/apis/room.ts +++ b/src/services/apis/room.ts @@ -1,6 +1,5 @@ import { useDefineApi } from "@/stores/useDefineApi"; import type { RoomList } from "@/types/Room"; -import type { MovieInfo } from "@/types/Movie"; // 房间列表 export const roomListApi = useDefineApi< diff --git a/src/stores/room.ts b/src/stores/room.ts index 50e5003..9ccf57e 100644 --- a/src/stores/room.ts +++ b/src/stores/room.ts @@ -1,6 +1,6 @@ import { ref, computed } from "vue"; import { defineStore } from "pinia"; -import type { MovieInfo, MovieStatus } from "@/types/Movie"; +import type { MovieInfo, Status } from "@/proto/message"; export const roomStore = defineStore("roomStore", () => { const login = ref(false); @@ -13,20 +13,23 @@ export const roomStore = defineStore("roomStore", () => { // 设置播放当前影片 const currentMovie = ref({ - name: "", - live: false, - proxy: false, - url: "", - rtmpSource: false, - type: "", - headers: {}, + base: { + name: "", + live: false, + proxy: false, + url: "", + rtmpSource: false, + type: "", + headers: {} + }, + pullKey: "", createdAt: Date.now(), creator: "SYSTEM", id: 1 }); // 当前影片播放状态 - const currentMovieStatus = ref({ + const currentMovieStatus = ref({ playing: false, rate: 1, seek: 0 diff --git a/src/types/Movie.ts b/src/types/Movie.ts index bdcd31a..9cf164e 100644 --- a/src/types/Movie.ts +++ b/src/types/Movie.ts @@ -1,20 +1,3 @@ -export interface MovieInfo extends BaseMovieInfo { - createdAt: number; - creator: string; - id: number; - pullKey?: string; -} - -export interface BaseMovieInfo { - url: string; - name: string; - live: boolean; - proxy: boolean; - rtmpSource: boolean; - type: string; - headers: { [key: string]: string }; -} - export interface EditMovieInfo { id: number; url: string; @@ -22,9 +5,3 @@ export interface EditMovieInfo { type: string; headers: { [key: string]: string }; } - -export interface MovieStatus { - playing: boolean; - rate: number; - seek: number; -} diff --git a/src/types/Room.ts b/src/types/Room.ts index 12f8522..59b862c 100644 --- a/src/types/Room.ts +++ b/src/types/Room.ts @@ -1,5 +1,3 @@ -import type { MovieInfo, MovieStatus } from "./Movie"; - export interface RoomList { roomId: string; peopleNum: number; @@ -7,5 +5,3 @@ export interface RoomList { creator: string; createdAt: number; } - -export interface RoomInfo {} diff --git a/src/views/Cinema.vue b/src/views/Cinema.vue index db4c324..4de5023 100644 --- a/src/views/Cinema.vue +++ b/src/views/Cinema.vue @@ -16,7 +16,8 @@ import { clearMovieListApi, liveInfoApi } from "@/services/apis/movie"; -import type { MovieInfo, EditMovieInfo } from "@/types/Movie"; +import type { EditMovieInfo } from "@/types/Movie"; +import type { MovieInfo } from "@/proto/message"; import { getFileExtension, devLog } from "@/utils/utils"; import { sync } from "@/plugins/sync"; import artplayerPluginDanmuku from "artplayer-plugin-danmuku"; @@ -57,7 +58,6 @@ const SendElement = (msg: ElementMessage) => { msg.time = Date.now(); } return send(ElementMessage.encode(msg).finish()); - // ElementMessage.encode(msg) }; // 更新房间密码 @@ -304,10 +304,10 @@ let cMovieInfo = ref({ const editDialog = ref(false); const openEditDialog = (item: MovieInfo) => { cMovieInfo.value.id = item.id; - cMovieInfo.value.url = item.url; - cMovieInfo.value.name = item.name; - cMovieInfo.value.type = item.type; - cMovieInfo.value.headers = item.headers; + cMovieInfo.value.url = item.base!.url; + cMovieInfo.value.name = item.base!.name; + cMovieInfo.value.type = item.base!.type; + cMovieInfo.value.headers = item.base!.headers; editDialog.value = true; }; @@ -580,10 +580,12 @@ const sendText = () => { type: "warning" }); strLengthLimit(sendText_.value, 64); - SendElement({ - type: ElementMessageType.CHAT_MESSAGE, - message: sendText_.value - }); + SendElement( + ElementMessage.create({ + type: ElementMessageType.CHAT_MESSAGE, + message: sendText_.value + }) + ); sendText_.value = ""; if (chatArea.value) chatArea.value.scrollTop = chatArea.value.scrollHeight; // devLog("sended:" + msg); @@ -596,10 +598,10 @@ function getPlayerInstance(art: Artplayer) { } const parseVideoType = (movie: MovieInfo) => { - if (movie.type) { - return movie.type; + if (movie.base!.type) { + return movie.base!.type; } - return getFileExtension(movie.url); + return getFileExtension(movie.base!.url); }; // 设置聊天框高度 @@ -630,23 +632,23 @@ const danmukuPlugin = artplayerPluginDanmuku({ const playerUrl = computed(() => { if (room.currentMovie.pullKey) { - switch (room.currentMovie.type) { + switch (room.currentMovie.base!.type) { case "m3u8": return `${window.location.origin}/api/movie/live/${room.currentMovie.pullKey}.m3u8`; default: return `${window.location.origin}/api/movie/live/${room.currentMovie.pullKey}.flv`; } } else { - return room.currentMovie.url; + return room.currentMovie.base!.url; } }); const playerOption = computed(() => { return { url: playerUrl.value, - isLive: room.currentMovie.live, + isLive: room.currentMovie.base!.live, type: parseVideoType(room.currentMovie), - headers: room.currentMovie.headers, + headers: room.currentMovie.base!.headers, plugins: [danmukuPlugin, syncPlugin.plugin] }; }); @@ -660,9 +662,9 @@ const Player = defineAsyncComponent(() => import("@/components/Player.vue"));
- {{ room.currentMovie.name }} + {{ room.currentMovie.base!.name }} 👁‍🗨 {{ room.peopleNum }}
@@ -670,18 +672,13 @@ const Player = defineAsyncComponent(() => import("@/components/Player.vue")); >👁‍🗨 {{ room.peopleNum }}
-
+
-
@@ -794,7 +791,7 @@ const Player = defineAsyncComponent(() => import("@/components/Player.vue"));
@@ -802,17 +799,17 @@ const Player = defineAsyncComponent(() => import("@/components/Player.vue"));
- 直播流 - {{ item["name"] }} + 直播流 + {{ item.base!.name }} - {{ item["url"] || item["pullKey"] }} + {{ item.base!.url || item.pullKey }}