aboutsummaryrefslogtreecommitdiff
path: root/client-web/source/resource/mod.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client-web/source/resource/mod.ts')
-rw-r--r--client-web/source/resource/mod.ts9
1 files changed, 5 insertions, 4 deletions
diff --git a/client-web/source/resource/mod.ts b/client-web/source/resource/mod.ts
index 5c76f41..d5f6a7b 100644
--- a/client-web/source/resource/mod.ts
+++ b/client-web/source/resource/mod.ts
@@ -6,7 +6,6 @@
/// <reference lib="dom" />
import { ProvideInfo } from "../../../common/packets.d.ts"
-import { Room } from "../room.ts";
import { RemoteUser } from "../user/remote.ts"
import { resource_file } from "./file.ts";
import { resource_track } from "./track.ts";
@@ -15,23 +14,23 @@ export type TransportMethod = "data-channel" | "track"
export type RemoteResourceState = "connected" | "disconnected" | "await_connect" | "await_disconnect"
export interface ResourceHandlerDecl {
kind: string
- new_remote(info: ProvideInfo, user: RemoteUser, enable: () => void): RemoteResource
+ new_remote(info: ProvideInfo, user: RemoteUser, enable: () => void, request_preview: () => void): RemoteResource
}
export interface RemoteResource {
el: HTMLElement
info: ProvideInfo,
on_statechange(state: RemoteResourceState): void
+ on_preview_response?: (data: string, expire: number) => void,
on_enable(t: MediaStream | RTCDataChannel, disable: () => void): void,
- on_preview(p: string): void,
stream?: MediaStream
}
export interface LocalResource {
el: HTMLElement
info: ProvideInfo,
destroy(): void
+ on_preview_request?: (user: RemoteUser) => Promise<{ data?: string, expire: number }>,
on_request(user: RemoteUser, create_channel: () => RTCDataChannel): MediaStream | RTCDataChannel,
set_destroy(cb: () => void): void
- set_room?: (room: Room) => void
}
const RESOURCE_HANDLERS: ResourceHandlerDecl[] = [resource_file, resource_track]
@@ -41,6 +40,8 @@ export function new_remote_resource(user: RemoteUser, info: ProvideInfo): Remote
if (!h) return undefined
const res = h.new_remote(info, user, () => {
user.request_resource(res)
+ }, () => {
+ user.request_preview(res)
})
return res
}