Show call length

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
This commit is contained in:
Šimon Brandner 2021-08-06 13:59:26 +02:00
parent 5a284b62eb
commit c1449ff01a
No known key found for this signature in database
GPG key ID: CC823428E9B582FB
2 changed files with 16 additions and 1 deletions

View file

@ -61,6 +61,10 @@ export default class CallEventGrouper extends EventEmitter {
return [...this.events].find((event) => event.getType() === EventType.CallReject); return [...this.events].find((event) => event.getType() === EventType.CallReject);
} }
private get selectAnswer(): MatrixEvent {
return [...this.events].find((event) => event.getType() === EventType.CallSelectAnswer);
}
public get isVoice(): boolean { public get isVoice(): boolean {
const invite = this.invite; const invite = this.invite;
if (!invite) return; if (!invite) return;
@ -82,6 +86,11 @@ export default class CallEventGrouper extends EventEmitter {
return Boolean(this.reject); return Boolean(this.reject);
} }
public get length(): Date {
if (!this.hangup || !this.selectAnswer) return;
return new Date(this.hangup.getDate().getTime() - this.selectAnswer.getDate().getTime());
}
/** /**
* Returns true if there are only events from the other side - we missed the call * Returns true if there are only events from the other side - we missed the call
*/ */

View file

@ -25,6 +25,7 @@ import { CallErrorCode, CallState } from 'matrix-js-sdk/src/webrtc/call';
import InfoTooltip, { InfoTooltipKind } from '../elements/InfoTooltip'; import InfoTooltip, { InfoTooltipKind } from '../elements/InfoTooltip';
import classNames from 'classnames'; import classNames from 'classnames';
import AccessibleTooltipButton from '../elements/AccessibleTooltipButton'; import AccessibleTooltipButton from '../elements/AccessibleTooltipButton';
import { formatCallTime } from "../../../DateUtils";
interface IProps { interface IProps {
mxEvent: MatrixEvent; mxEvent: MatrixEvent;
@ -131,9 +132,14 @@ export default class CallEvent extends React.Component<IProps, IState> {
// https://github.com/vector-im/riot-android/issues/2623 // https://github.com/vector-im/riot-android/issues/2623
// Also the correct hangup code as of VoIP v1 (with underscore) // Also the correct hangup code as of VoIP v1 (with underscore)
// Also, if we don't have a reason // Also, if we don't have a reason
const length = this.props.callEventGrouper.length;
let text = _t("Call ended");
if (length) {
text += " • " + formatCallTime(length);
}
return ( return (
<div className="mx_CallEvent_content"> <div className="mx_CallEvent_content">
{ _t("Call ended") } { text }
</div> </div>
); );
} else if (hangupReason === CallErrorCode.InviteTimeout) { } else if (hangupReason === CallErrorCode.InviteTimeout) {