mattermost-mobile/types/modules/react-native-webrtc2.d.ts
Jesús Espino 8ef65d8b24
Voicechannels (#5753)
* Some extra work on voice channels interface

* Fixing some TODOs

* Improving styling of call in channel

* Improve calls monitoring

* Replacing some of the fontawesome icons with the compass ones

* Improving the layout

* Migrating to webrtc2 for unified plan

* Add screen on and off behavior

* Adding incall manager plugin

* Moving everything into the products/calls folder

* Make products modules routes relatives

* Make products modules routes @mmproducts

* Removing initiator parameter

* Removing trickle parameter

* Simplifying code

* Removing underscore from private variables

* Removing underscore from private things

* More simplifications

* More simplifications

* More simplifications

* Changing sha sum for mmjstool

* Fixing typo

* Migrating simple-peer to typescript

* Migrating simple-peer to typescript

* Improving the size of the screen share

* Adding feature flag to disable the calls feature in mobile

* Fixing some tests

* Removing obsolte tests

* Added call ended support for the post messages

* Fixing some warnings in the tests

* Adding JoinCall tests

* Adding CallMessage tests

* Adding CurrentCall unit tests

* Adding CallAvatar unit tests

* Adding FloatingCallContainer unit tests

* Adding StartCall unit tests

* Adding EnableDisableCalls unit tests

* Adding CallDuration tests

* Improving CallDuration tests

* Adding CallScreen unit tests

* Adding CallOtherActions screen tests

* Fixing some dark theme styles

* Fixing tests

* More robustness around connecting/disconnecting

* Adding FormattedRelativeTime tests

* Adding tests for ChannelItem

* Adding tests for ChannelInfo

* Adding selectors tests

* Adding reducers unit tests

* Adding actions tests

* Removing most of the TODOs

* Removing another TODO

* Updating tests snapshots

* Removing the last TODO

* Fixed a small problem on pressing while a call is ongoing

* Remove all the inlined functions

* Replacing usage of isLandscape selector with useWindowDimensions

* Removed unnecesary makeStyleSheetFromTheme

* Removing unneded  properties from call_duration

* Fixing possible null channels return from getChannel selector

* Moving other inlined functions to its own constant

* Simplifiying enable/disable calls component

* Improving the behavior when you are in the call of the current channel

* Adding missing translation strings

* Simplified a bit the EnableDisableCalls component

* Moving other inlined functions to its own constant

* Updating snapshots

* Improving usage of makeStyleSheetFromTheme

* Moving data reformating from the rest client to the redux action

* Adding calls to the blocklist to the redux-persist

* Fixing tests

* Updating snapshots

* Update file icon name to the last compass icons version

* Fix loading state

* Only show the call connected if the websocket gets connected

* Taking into consideration the indicator bar to position the calls new bars

* Making the MoreMessagesButton component aware of calls components

* Updating snapshots

* Fixing tests

* Updating snapshot

* Fixing different use cases for start call channel menu

* Fixing tests

* Ask for confirmation to start a call when you are already in another call

* Update app/products/calls/components/floating_call_container.tsx

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>

* Memoizing userIds in join call

* Applying suggestion around combine the blocklist for calls with the one for typing

* Adding explicit types to the rest client

* Removing unneeded permission

* Making updateIntervalInSeconds prop optional in FormattedRelativeTime

* Making updateIntervalInSeconds prop optional in CallDuration

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
2021-11-11 11:32:39 +01:00

229 lines
6.9 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
//
// Based on react-native-webrtc types from
// https://github.com/DefinitelyTyped/DefinitelyTyped
//
// Definitions by: Carlos Quiroga <https://github.com/KarlosQ>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
declare module 'react-native-webrtc2' {
export const RTCView: any;
export type RTCSignalingState =
| 'stable'
| 'have-local-offer'
| 'have-remote-offer'
| 'have-local-pranswer'
| 'have-remote-pranswer'
| 'closed';
export type RTCIceGatheringState = 'new' | 'gathering' | 'complete';
export type RTCIceConnectionState =
| 'new'
| 'checking'
| 'connected'
| 'completed'
| 'failed'
| 'disconnected'
| 'closed';
export type RTCPeerConnectionState = 'new' | 'connecting' | 'connected' | 'disconnected' | 'failed' | 'closed';
export class MediaStreamTrack {
private _enabled: boolean;
enabled: boolean;
id: string;
kind: string;
label: string;
muted: boolean;
readonly: boolean;
readyState: MediaStreamTrackState;
remote: boolean;
onended: () => void | undefined;
onmute: () => void | undefined;
onunmute: () => void | undefined;
overconstrained: () => void | undefined;
constructor();
stop(): void;
applyConstraints(): void;
clone(): void;
getCapabilities(): void;
getConstraints(): void;
getSettings(): void;
release(): void;
private _switchCamera(): void;
}
export class MediaStream {
id: string;
active: boolean;
onactive: () => void | undefined;
oninactive: () => void | undefined;
onaddtrack: () => void | undefined;
onremovetrack: () => void | undefined;
_tracks: MediaStreamTrack[];
private _reactTag: string;
constructor(arg: any);
addTrack(track: MediaStreamTrack): void;
removeTrack(track: MediaStreamTrack): void;
getTracks(): MediaStreamTrack[];
getTrackById(trackId: string): MediaStreamTrack | undefined;
getAudioTracks(): MediaStreamTrack[];
getVideoTracks(): MediaStreamTrack[];
clone(): void;
toURL(): string;
release(): void;
}
export class RTCDataChannel {
_peerConnectionId: number;
binaryType: 'arraybuffer';
bufferedAmount: number;
bufferedAmountLowThreshold: number;
id: number;
label: string;
maxPacketLifeTime: ?number;
maxRetransmits: ?number;
negotiated: boolean;
ordered: boolean;
protocol: string;
readyState: 'connecting' | 'open' | 'closing' | 'closed';
onopen: ?Function;
onmessage: ?Function;
onbufferedamountlow: ?Function;
onerror: ?Function;
onclose: ?Function;
constructor(peerConnectionId: number, label: string, dataChannelDict: RTCDataChannelInit)
send(data: string | ArrayBuffer | ArrayBufferView): void
close(): void
_unregisterEvents(): void
_registerEvents(): void
}
export class MessageEvent {
type: string;
data: string | ArrayBuffer | Blob;
origin: string;
constructor(type: any, eventInitDict: any)
}
export interface EventOnCandidate {
candidate: RTCIceCandidateType;
}
export interface EventOnAddStream {
stream: MediaStream;
target: RTCPeerConnection;
track?: MediaStreamTrack;
}
export class RTCPeerConnection {
localDescription: RTCSessionDescriptionType;
remoteDescription: RTCSessionDescriptionType;
connectionState: RTCPeerConnectionState;
iceConnectionState: RTCIceConnectionState;
iceGatheringState: RTCIceGatheringState;
signalingState: RTCSignalingState;
private privateiceGatheringState: RTCIceGatheringState;
private privateiceConnectionState: RTCIceConnectionState;
onconnectionstatechange: (event: Event) => void | undefined;
onicecandidate: (event: EventOnCandidate) => void | undefined;
onicecandidateerror: (error: Error) => void | undefined;
oniceconnectionstatechange: (event: EventOnConnectionStateChange) => void | undefined;
onicegatheringstatechange: () => void | undefined;
onnegotiationneeded: () => void | undefined;
onsignalingstatechange: () => void | undefined;
onaddstream: (event: EventOnAddStream) => void | undefined;
onremovestream: () => void | undefined;
private _peerConnectionId: number;
private _localStreams: MediaStream[];
_remoteStreams: MediaStream[];
private _subscriptions: any[];
private _dataChannelIds: any;
constructor(configuration: RTCPeerConnectionConfiguration);
addStream(stream: MediaStream): void;
addTransceiver(kind: 'audio'|'video'|MediaStreamTrack, init: any): void;
removeStream(stream: MediaStream): void;
removeTrack(sender: RtpSender): Promise<boolean>
createOffer(options?: RTCOfferOptions): Promise<RTCSessionDescriptionType>;
createAnswer(options?: RTCAnswerOptions): Promise<RTCSessionDescriptionType>;
setConfiguration(configuration: RTCPeerConnectionConfiguration): void;
setLocalDescription(sessionDescription: RTCSessionDescriptionType): Promise<void>;
setRemoteDescription(sessionDescription: RTCSessionDescriptionType): Promise<void>;
addIceCandidate(candidate: RTCIceCandidateType): Promise<void>;
getStats(selector?: MediaStreamTrack | null): Promise<any>;
getLocalStreams(): MediaStream[];
getRemoteStreams(): MediaStream[];
close(): void;
private _getTrack(streamReactTag: string, trackId: string): MediaStreamTrack;
private _unregisterEvents(): void;
private _registerEvents(): void;
createDataChannel(label: string, dataChannelDict?: any): RTCDataChannel;
}
export class RTCIceCandidateType {
candidate: string;
sdpMLineIndex: number;
sdpMid: string;
}
export class RTCIceCandidate extends RTCIceCandidateType {
constructor(info: RTCIceCandidateType);
toJSON(): RTCIceCandidateType;
}
export class RTCSessionDescriptionType {
sdp: string;
type: string;
}
export class RTCSessionDescription extends RTCSessionDescriptionType {
constructor(info: RTCSessionDescriptionType);
toJSON(): RTCSessionDescriptionType;
}
export class mediaDevices {
ondevicechange: () => void | undefined;
static enumerateDevices(): Promise<any>;
static getUserMedia(constraints: MediaStreamConstraints): Promise<MediaStream | boolean>;
}
}