Merge pull request #848 from vector-im/dbkr/uncecryptable_todevice
Log undecryptable to-device events
This commit is contained in:
commit
ecdeb97502
5 changed files with 50 additions and 19 deletions
|
|
@ -45,7 +45,7 @@
|
||||||
"i18next": "^21.10.0",
|
"i18next": "^21.10.0",
|
||||||
"i18next-browser-languagedetector": "^6.1.8",
|
"i18next-browser-languagedetector": "^6.1.8",
|
||||||
"i18next-http-backend": "^1.4.4",
|
"i18next-http-backend": "^1.4.4",
|
||||||
"matrix-js-sdk": "github:matrix-org/matrix-js-sdk#c3d422f5fb1efac400da4c4ade592db3831445f9",
|
"matrix-js-sdk": "github:matrix-org/matrix-js-sdk#7b10fa367df357b51c2e78e220d39e5e7967f9e3",
|
||||||
"matrix-widget-api": "^1.0.0",
|
"matrix-widget-api": "^1.0.0",
|
||||||
"mermaid": "^8.13.8",
|
"mermaid": "^8.13.8",
|
||||||
"normalize.css": "^8.0.1",
|
"normalize.css": "^8.0.1",
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ import {
|
||||||
SignupTracker,
|
SignupTracker,
|
||||||
MuteCameraTracker,
|
MuteCameraTracker,
|
||||||
MuteMicrophoneTracker,
|
MuteMicrophoneTracker,
|
||||||
|
UndecryptableToDeviceEventTracker,
|
||||||
} from "./PosthogEvents";
|
} from "./PosthogEvents";
|
||||||
import { Config } from "./config/Config";
|
import { Config } from "./config/Config";
|
||||||
import { getUrlParams } from "./UrlParams";
|
import { getUrlParams } from "./UrlParams";
|
||||||
|
|
@ -415,4 +416,5 @@ export class PosthogAnalytics {
|
||||||
public eventLogin = new LoginTracker();
|
public eventLogin = new LoginTracker();
|
||||||
public eventMuteMicrophone = new MuteMicrophoneTracker();
|
public eventMuteMicrophone = new MuteMicrophoneTracker();
|
||||||
public eventMuteCamera = new MuteCameraTracker();
|
public eventMuteCamera = new MuteCameraTracker();
|
||||||
|
public eventUndecryptableToDevice = new UndecryptableToDeviceEventTracker();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -149,3 +149,17 @@ export class MuteCameraTracker {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface UndecryptableToDeviceEvent {
|
||||||
|
eventName: "UndecryptableToDeviceEvent";
|
||||||
|
callId: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class UndecryptableToDeviceEventTracker {
|
||||||
|
track(callId: string) {
|
||||||
|
PosthogAnalytics.instance.trackEvent<UndecryptableToDeviceEvent>({
|
||||||
|
eventName: "UndecryptableToDeviceEvent",
|
||||||
|
callId,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import * as Sentry from "@sentry/react";
|
||||||
import { Resizable } from "re-resizable";
|
import { Resizable } from "re-resizable";
|
||||||
import React, {
|
import React, {
|
||||||
useEffect,
|
useEffect,
|
||||||
|
|
@ -34,6 +35,7 @@ import { CallEvent } from "matrix-js-sdk/src/webrtc/call";
|
||||||
|
|
||||||
import styles from "./GroupCallInspector.module.css";
|
import styles from "./GroupCallInspector.module.css";
|
||||||
import { SelectInput } from "../input/SelectInput";
|
import { SelectInput } from "../input/SelectInput";
|
||||||
|
import { PosthogAnalytics } from "../PosthogAnalytics";
|
||||||
|
|
||||||
interface InspectorContextState {
|
interface InspectorContextState {
|
||||||
eventsByUserId?: { [userId: string]: SequenceDiagramMatrixEvent[] };
|
eventsByUserId?: { [userId: string]: SequenceDiagramMatrixEvent[] };
|
||||||
|
|
@ -108,6 +110,19 @@ function formatTimestamp(timestamp: number | Date) {
|
||||||
return dateFormatter.format(timestamp);
|
return dateFormatter.format(timestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function formatType(event: SequenceDiagramMatrixEvent): string {
|
||||||
|
if (event.content.msgtype === "m.bad.encrypted") return "Undecryptable";
|
||||||
|
return event.type;
|
||||||
|
}
|
||||||
|
|
||||||
|
function lineForEvent(event: SequenceDiagramMatrixEvent): string {
|
||||||
|
return `${getUserName(event.from)} ${
|
||||||
|
event.ignored ? "-x" : "->>"
|
||||||
|
} ${getUserName(event.to)}: ${formatTimestamp(event.timestamp)} ${formatType(
|
||||||
|
event
|
||||||
|
)} ${formatContent(event.type, event.content)}`;
|
||||||
|
}
|
||||||
|
|
||||||
export const InspectorContext =
|
export const InspectorContext =
|
||||||
createContext<
|
createContext<
|
||||||
[
|
[
|
||||||
|
|
@ -187,21 +202,7 @@ export function SequenceDiagramViewer({
|
||||||
participant ${getUserName(localUserId)}
|
participant ${getUserName(localUserId)}
|
||||||
participant Room
|
participant Room
|
||||||
participant ${selectedUserId ? getUserName(selectedUserId) : "unknown"}
|
participant ${selectedUserId ? getUserName(selectedUserId) : "unknown"}
|
||||||
${
|
${events ? events.map(lineForEvent).join("\n ") : ""}
|
||||||
events
|
|
||||||
? events
|
|
||||||
.map(
|
|
||||||
({ to, from, timestamp, type, content, ignored }) =>
|
|
||||||
`${getUserName(from)} ${ignored ? "-x" : "->>"} ${getUserName(
|
|
||||||
to
|
|
||||||
)}: ${formatTimestamp(timestamp)} ${type} ${formatContent(
|
|
||||||
type,
|
|
||||||
content
|
|
||||||
)}`
|
|
||||||
)
|
|
||||||
.join("\n ")
|
|
||||||
: ""
|
|
||||||
}
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
mermaid.mermaidAPI.render("mermaid", graphDefinition, (svgCode: string) => {
|
mermaid.mermaidAPI.render("mermaid", graphDefinition, (svgCode: string) => {
|
||||||
|
|
@ -389,12 +390,23 @@ function useGroupCallState(
|
||||||
function onSendVoipEvent(event: Record<string, unknown>) {
|
function onSendVoipEvent(event: Record<string, unknown>) {
|
||||||
dispatch({ type: CallEvent.SendVoipEvent, rawEvent: event });
|
dispatch({ type: CallEvent.SendVoipEvent, rawEvent: event });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onUndecryptableToDevice(event: MatrixEvent) {
|
||||||
|
dispatch({ type: ClientEvent.ReceivedVoipEvent, event });
|
||||||
|
|
||||||
|
Sentry.captureMessage("Undecryptable to-device Event");
|
||||||
|
PosthogAnalytics.instance.eventUndecryptableToDevice.track(
|
||||||
|
groupCall.groupCallId
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
client.on(RoomStateEvent.Events, onUpdateRoomState);
|
client.on(RoomStateEvent.Events, onUpdateRoomState);
|
||||||
//groupCall.on("calls_changed", onCallsChanged);
|
//groupCall.on("calls_changed", onCallsChanged);
|
||||||
groupCall.on(CallEvent.SendVoipEvent, onSendVoipEvent);
|
groupCall.on(CallEvent.SendVoipEvent, onSendVoipEvent);
|
||||||
//client.on("state", onCallsChanged);
|
//client.on("state", onCallsChanged);
|
||||||
//client.on("hangup", onCallHangup);
|
//client.on("hangup", onCallHangup);
|
||||||
client.on(ClientEvent.ReceivedVoipEvent, onReceivedVoipEvent);
|
client.on(ClientEvent.ReceivedVoipEvent, onReceivedVoipEvent);
|
||||||
|
client.on(ClientEvent.UndecryptableToDeviceEvent, onUndecryptableToDevice);
|
||||||
|
|
||||||
onUpdateRoomState();
|
onUpdateRoomState();
|
||||||
|
|
||||||
|
|
@ -405,6 +417,10 @@ function useGroupCallState(
|
||||||
//client.removeListener("state", onCallsChanged);
|
//client.removeListener("state", onCallsChanged);
|
||||||
//client.removeListener("hangup", onCallHangup);
|
//client.removeListener("hangup", onCallHangup);
|
||||||
client.removeListener(ClientEvent.ReceivedVoipEvent, onReceivedVoipEvent);
|
client.removeListener(ClientEvent.ReceivedVoipEvent, onReceivedVoipEvent);
|
||||||
|
client.removeListener(
|
||||||
|
ClientEvent.UndecryptableToDeviceEvent,
|
||||||
|
onUndecryptableToDevice
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}, [client, groupCall]);
|
}, [client, groupCall]);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10362,9 +10362,9 @@ matrix-events-sdk@0.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/matrix-events-sdk/-/matrix-events-sdk-0.0.1.tgz#c8c38911e2cb29023b0bbac8d6f32e0de2c957dd"
|
resolved "https://registry.yarnpkg.com/matrix-events-sdk/-/matrix-events-sdk-0.0.1.tgz#c8c38911e2cb29023b0bbac8d6f32e0de2c957dd"
|
||||||
integrity sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA==
|
integrity sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA==
|
||||||
|
|
||||||
"matrix-js-sdk@github:matrix-org/matrix-js-sdk#c3d422f5fb1efac400da4c4ade592db3831445f9":
|
"matrix-js-sdk@github:matrix-org/matrix-js-sdk#7b10fa367df357b51c2e78e220d39e5e7967f9e3":
|
||||||
version "23.0.0"
|
version "23.0.0"
|
||||||
resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/c3d422f5fb1efac400da4c4ade592db3831445f9"
|
resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/7b10fa367df357b51c2e78e220d39e5e7967f9e3"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.12.5"
|
"@babel/runtime" "^7.12.5"
|
||||||
"@matrix-org/matrix-sdk-crypto-js" "^0.1.0-alpha.2"
|
"@matrix-org/matrix-sdk-crypto-js" "^0.1.0-alpha.2"
|
||||||
|
|
@ -10375,7 +10375,6 @@ matrix-events-sdk@0.0.1:
|
||||||
matrix-events-sdk "0.0.1"
|
matrix-events-sdk "0.0.1"
|
||||||
matrix-widget-api "^1.0.0"
|
matrix-widget-api "^1.0.0"
|
||||||
p-retry "4"
|
p-retry "4"
|
||||||
qs "^6.9.6"
|
|
||||||
sdp-transform "^2.14.1"
|
sdp-transform "^2.14.1"
|
||||||
unhomoglyph "^1.0.6"
|
unhomoglyph "^1.0.6"
|
||||||
uuid "9"
|
uuid "9"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue