mirror of
https://github.com/vector-im/element-web.git
synced 2024-11-16 13:14:58 +08:00
Merge pull request #6570 from SimonBrandner/feature/call-length/18405
This commit is contained in:
commit
81b70c6955
@ -123,6 +123,19 @@ export function formatTime(date: Date, showTwelveHour = false): string {
|
|||||||
return pad(date.getHours()) + ':' + pad(date.getMinutes());
|
return pad(date.getHours()) + ':' + pad(date.getMinutes());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function formatCallTime(delta: Date): string {
|
||||||
|
const hours = delta.getUTCHours();
|
||||||
|
const minutes = delta.getUTCMinutes();
|
||||||
|
const seconds = delta.getUTCSeconds();
|
||||||
|
|
||||||
|
let output = "";
|
||||||
|
if (hours) output += `${hours}h `;
|
||||||
|
if (minutes || output) output += `${minutes}m `;
|
||||||
|
if (seconds || output) output += `${seconds}s`;
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
const MILLIS_IN_DAY = 86400000;
|
const MILLIS_IN_DAY = 86400000;
|
||||||
export function wantsDateSeparator(prevEventDate: Date, nextEventDate: Date): boolean {
|
export function wantsDateSeparator(prevEventDate: Date, nextEventDate: Date): boolean {
|
||||||
if (!nextEventDate || !prevEventDate) {
|
if (!nextEventDate || !prevEventDate) {
|
||||||
|
@ -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 duration(): 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
|
||||||
*/
|
*/
|
||||||
|
@ -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 duration = this.props.callEventGrouper.duration;
|
||||||
|
let text = _t("Call ended");
|
||||||
|
if (duration) {
|
||||||
|
text += " • " + formatCallTime(duration);
|
||||||
|
}
|
||||||
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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user