From abd909c03ab88428d297091fc2667e6fb40befc1 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 13 Jan 2023 18:27:22 +0000 Subject: [PATCH 01/56] Log undecryptable to-device events Listen for the new undecryptable to-device event event and log events for it in Posthog & Sentry, and make it visible in the call flow diagram. --- src/PosthogAnalytics.ts | 2 ++ src/PosthogEvents.ts | 14 ++++++++++ src/room/GroupCallInspector.tsx | 46 ++++++++++++++++++++++----------- 3 files changed, 47 insertions(+), 15 deletions(-) diff --git a/src/PosthogAnalytics.ts b/src/PosthogAnalytics.ts index 4ddc4b07..28f50d22 100644 --- a/src/PosthogAnalytics.ts +++ b/src/PosthogAnalytics.ts @@ -28,6 +28,7 @@ import { SignupTracker, MuteCameraTracker, MuteMicrophoneTracker, + UndecryptableToDeviceEventTracker, } from "./PosthogEvents"; import { Config } from "./config/Config"; import { getUrlParams } from "./UrlParams"; @@ -415,4 +416,5 @@ export class PosthogAnalytics { public eventLogin = new LoginTracker(); public eventMuteMicrophone = new MuteMicrophoneTracker(); public eventMuteCamera = new MuteCameraTracker(); + public eventUndecryptableToDevice = new UndecryptableToDeviceEventTracker(); } diff --git a/src/PosthogEvents.ts b/src/PosthogEvents.ts index f1b4baef..aa8aa329 100644 --- a/src/PosthogEvents.ts +++ b/src/PosthogEvents.ts @@ -149,3 +149,17 @@ export class MuteCameraTracker { }); } } + +interface UndecryptableToDeviceEvent { + eventName: "UndecryptableToDeviceEvent"; + callId: string; +} + +export class UndecryptableToDeviceEventTracker { + track(callId: string) { + PosthogAnalytics.instance.trackEvent({ + eventName: "UndecryptableToDeviceEvent", + callId, + }); + } +} diff --git a/src/room/GroupCallInspector.tsx b/src/room/GroupCallInspector.tsx index 32579285..73b2a000 100644 --- a/src/room/GroupCallInspector.tsx +++ b/src/room/GroupCallInspector.tsx @@ -14,6 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +import * as Sentry from "@sentry/react"; import { Resizable } from "re-resizable"; import React, { useEffect, @@ -34,6 +35,7 @@ import { CallEvent } from "matrix-js-sdk/src/webrtc/call"; import styles from "./GroupCallInspector.module.css"; import { SelectInput } from "../input/SelectInput"; +import { PosthogAnalytics } from "../PosthogAnalytics"; interface InspectorContextState { eventsByUserId?: { [userId: string]: SequenceDiagramMatrixEvent[] }; @@ -108,6 +110,19 @@ function formatTimestamp(timestamp: number | Date) { 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 = createContext< [ @@ -187,21 +202,7 @@ export function SequenceDiagramViewer({ participant ${getUserName(localUserId)} participant Room participant ${selectedUserId ? getUserName(selectedUserId) : "unknown"} - ${ - events - ? events - .map( - ({ to, from, timestamp, type, content, ignored }) => - `${getUserName(from)} ${ignored ? "-x" : "->>"} ${getUserName( - to - )}: ${formatTimestamp(timestamp)} ${type} ${formatContent( - type, - content - )}` - ) - .join("\n ") - : "" - } + ${events ? events.map(lineForEvent).join("\n ") : ""} `; mermaid.mermaidAPI.render("mermaid", graphDefinition, (svgCode: string) => { @@ -389,12 +390,23 @@ function useGroupCallState( function onSendVoipEvent(event: Record) { 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); //groupCall.on("calls_changed", onCallsChanged); groupCall.on(CallEvent.SendVoipEvent, onSendVoipEvent); //client.on("state", onCallsChanged); //client.on("hangup", onCallHangup); client.on(ClientEvent.ReceivedVoipEvent, onReceivedVoipEvent); + client.on(ClientEvent.UndecryptableToDeviceEvent, onUndecryptableToDevice); onUpdateRoomState(); @@ -405,6 +417,10 @@ function useGroupCallState( //client.removeListener("state", onCallsChanged); //client.removeListener("hangup", onCallHangup); client.removeListener(ClientEvent.ReceivedVoipEvent, onReceivedVoipEvent); + client.removeListener( + ClientEvent.UndecryptableToDeviceEvent, + onUndecryptableToDevice + ); }; }, [client, groupCall]); From a2a1a9032ac414ee3a00ad1b12f2c6f2de87d3c2 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 13 Jan 2023 18:33:58 +0000 Subject: [PATCH 02/56] Use js-sdk from branch --- package.json | 2 +- yarn.lock | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index b271f5d8..b3257d58 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "i18next": "^21.10.0", "i18next-browser-languagedetector": "^6.1.8", "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#79faee7a67f2cefa2a605aad1fad785b75e459c5", "matrix-widget-api": "^1.0.0", "mermaid": "^8.13.8", "normalize.css": "^8.0.1", diff --git a/yarn.lock b/yarn.lock index bd5b2ced..51ced136 100644 --- a/yarn.lock +++ b/yarn.lock @@ -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" integrity sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA== -"matrix-js-sdk@github:matrix-org/matrix-js-sdk#c3d422f5fb1efac400da4c4ade592db3831445f9": +"matrix-js-sdk@github:matrix-org/matrix-js-sdk#79faee7a67f2cefa2a605aad1fad785b75e459c5": 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/79faee7a67f2cefa2a605aad1fad785b75e459c5" dependencies: "@babel/runtime" "^7.12.5" "@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-widget-api "^1.0.0" p-retry "4" - qs "^6.9.6" sdp-transform "^2.14.1" unhomoglyph "^1.0.6" uuid "9" From 6168109894db251261d1bef21704bad98e574086 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 13 Jan 2023 21:41:21 +0000 Subject: [PATCH 03/56] Use merged js-sdk commit --- package.json | 2 +- yarn.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index b3257d58..f7bbbb05 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "i18next": "^21.10.0", "i18next-browser-languagedetector": "^6.1.8", "i18next-http-backend": "^1.4.4", - "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#79faee7a67f2cefa2a605aad1fad785b75e459c5", + "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#7b10fa367df357b51c2e78e220d39e5e7967f9e3", "matrix-widget-api": "^1.0.0", "mermaid": "^8.13.8", "normalize.css": "^8.0.1", diff --git a/yarn.lock b/yarn.lock index 51ced136..cd7b188e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -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" integrity sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA== -"matrix-js-sdk@github:matrix-org/matrix-js-sdk#79faee7a67f2cefa2a605aad1fad785b75e459c5": +"matrix-js-sdk@github:matrix-org/matrix-js-sdk#7b10fa367df357b51c2e78e220d39e5e7967f9e3": version "23.0.0" - resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/79faee7a67f2cefa2a605aad1fad785b75e459c5" + resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/7b10fa367df357b51c2e78e220d39e5e7967f9e3" dependencies: "@babel/runtime" "^7.12.5" "@matrix-org/matrix-sdk-crypto-js" "^0.1.0-alpha.2" From 030ca296642151ae37a97d484d5da11328d104bb Mon Sep 17 00:00:00 2001 From: Avery Date: Fri, 13 Jan 2023 15:32:52 +0000 Subject: [PATCH 04/56] Translated using Weblate (Spanish) Currently translated at 100.0% (141 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/es/ --- public/locales/es/app.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/public/locales/es/app.json b/public/locales/es/app.json index 95eb0a51..c41d345c 100644 --- a/public/locales/es/app.json +++ b/public/locales/es/app.json @@ -136,5 +136,8 @@ "This will send anonymised data (such as the duration of a call and the number of participants) to the Element Call team to help us optimise the application based on how it is used.": "Esto enviará datos anónimos (como la duración de la llamada y el número de participantes) al equipo de Element Call para ayudarnos a optimizar la aplicación dependiendo de cómo se use.", "Whether to enable single-key keyboard shortcuts, e.g. 'm' to mute/unmute the mic.": "Habilita los atajos de teclado de una sola tecla, por ejemplo 'm' para silenciar/desilenciar el micrófono.", "Single-key keyboard shortcuts": "Atajos de teclado de una sola tecla", - "{{name}} (Waiting for video...)": "{{name}} (Esperando al video...)" + "{{name}} (Waiting for video...)": "{{name}} (Esperando al video...)", + "This feature is only supported on Firefox.": "Esta característica solo está disponible en Firefox.", + "<0>Submitting debug logs will help us track down the problem.": "<0>Subir los registros de depuración nos ayudará a encontrar el problema.", + "<0>Oops, something's gone wrong.": "<0>Ups, algo ha salido mal." } From 13b1dcf78500081ff349a151e9e5ccb498e33593 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 16 Jan 2023 16:43:45 +0000 Subject: [PATCH 05/56] Mostly cosmetic fixes to rageshake * Remove duplicate copyright header * Remove ts-ignores by just using the objects directly rather than via event.target * Use error.message rather than errorCode which TS doesn't know about and may or may not exist. * Remove some unused things like the skip rageshake function and the option to init rageshakes without storage. * Turn single function with a boolean param to make it take two entirely separate code paths into two functions. --- src/settings/rageshake.ts | 113 +++++++++++++------------------------- 1 file changed, 39 insertions(+), 74 deletions(-) diff --git a/src/settings/rageshake.ts b/src/settings/rageshake.ts index 42441d1c..f83a205f 100644 --- a/src/settings/rageshake.ts +++ b/src/settings/rageshake.ts @@ -1,21 +1,4 @@ /* -Copyright 2022 New Vector Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -/* eslint-disable @typescript-eslint/ban-ts-comment */ -/* Copyright 2017 OpenMarket Ltd Copyright 2018 New Vector Ltd Copyright 2019 The New Vector Ltd @@ -99,13 +82,6 @@ export class ConsoleLogger { }); } - public bypassRageshake( - fnName: LogFunctionName, - ...args: (Error | DOMException | object | string)[] - ): void { - this.originalFunctions[fnName](...args); - } - public log( level: string, ...args: (Error | DOMException | object | string)[] @@ -140,20 +116,22 @@ export class ConsoleLogger { } /** - * Retrieve log lines to flush to disk. - * @param {boolean} keepLogs True to not delete logs after flushing. - * @return {string} \n delimited log lines to flush. + * Returns the log lines to flush to disk and empties the internal log buffer + * @return {string} \n delimited log lines */ - public flush(keepLogs?: boolean): string { - // The ConsoleLogger doesn't care how these end up on disk, it just - // flushes them to the caller. - if (keepLogs) { - return this.logs; - } + public popLogs(): string { const logsToFlush = this.logs; this.logs = ""; return logsToFlush; } + + /** + * Returns lines currently in the log buffer without removing them + * @return {string} \n delimited log lines + */ + public peekLogs(): string { + return this.logs; + } } // A class which stores log lines in an IndexedDB instance. @@ -174,30 +152,32 @@ export class IndexedDBLogStore { public connect(): Promise { const req = this.indexedDB.open("logs"); return new Promise((resolve, reject) => { - req.onsuccess = (event: Event) => { - // @ts-ignore - this.db = event.target.result; + req.onsuccess = () => { + this.db = req.result; // Periodically flush logs to local storage / indexeddb setInterval(this.flush.bind(this), FLUSH_RATE_MS); resolve(); }; req.onerror = (event) => { - const err = - // @ts-ignore - "Failed to open log database: " + event.target.error.name; + const err = "Failed to open log database: " + req.error.name; logger.error(err); reject(new Error(err)); }; // First time: Setup the object store req.onupgradeneeded = (event) => { - // @ts-ignore - const db = event.target.result; + const db = req.result; + // This is the log entries themselves. Each entry is a chunk of + // logs (ie multiple lines). 'id' is the instance ID (so logs with + // the same instance ID are all from the same session) and 'index' + // is a sequence number for the chunk. The log lines live in the + // 'lines' key, which is a chunk of many newline-separated log lines. const logObjStore = db.createObjectStore("logs", { keyPath: ["id", "index"], }); // Keys in the database look like: [ "instance-148938490", 0 ] + // (The instance ID plus the ID of each log chunk). // Later on we need to query everything based on an instance id. // In order to do this, we need to set up indexes "id". logObjStore.createIndex("id", "id", { unique: false }); @@ -206,6 +186,9 @@ export class IndexedDBLogStore { this.generateLogEntry(new Date() + " ::: Log database was created.") ); + // This records the last time each instance ID generated a log message, such + // that the logs from each session can be collated in the order they last logged + // something. const lastModifiedStore = db.createObjectStore("logslastmod", { keyPath: "id", }); @@ -258,7 +241,7 @@ export class IndexedDBLogStore { reject(new Error("No connected database")); return; } - const lines = this.logger.flush(); + const lines = this.logger.popLogs(); if (lines.length === 0) { resolve(); return; @@ -270,8 +253,7 @@ export class IndexedDBLogStore { }; txn.onerror = (event) => { logger.error("Failed to flush logs : ", event); - // @ts-ignore - reject(new Error("Failed to write logs: " + event.target.errorCode)); + reject(new Error("Failed to write logs: " + txn.error.message)); }; objStore.add(this.generateLogEntry(lines)); const lastModStore = txn.objectStore("logslastmod"); @@ -307,13 +289,11 @@ export class IndexedDBLogStore { .index("id") .openCursor(IDBKeyRange.only(id), "prev"); let lines = ""; - query.onerror = (event) => { - // @ts-ignore - reject(new Error("Query failed: " + event.target.errorCode)); + query.onerror = () => { + reject(new Error("Query failed: " + query.error.message)); }; - query.onsuccess = (event) => { - // @ts-ignore - const cursor = event.target.result; + query.onsuccess = () => { + const cursor = query.result; if (!cursor) { resolve(lines); return; // end of results @@ -355,9 +335,8 @@ export class IndexedDBLogStore { const o = txn.objectStore("logs"); // only load the key path, not the data which may be huge const query = o.index("id").openKeyCursor(IDBKeyRange.only(id)); - query.onsuccess = (event) => { - // @ts-ignore - const cursor = event.target.result; + query.onsuccess = () => { + const cursor = query.result; if (!cursor) { return; } @@ -367,12 +346,10 @@ export class IndexedDBLogStore { txn.oncomplete = () => { resolve(); }; - txn.onerror = (event) => { + txn.onerror = () => { reject( new Error( - "Failed to delete logs for " + - // @ts-ignore - `'${id}' : ${event.target.errorCode}` + "Failed to delete logs for " + `'${id}' : ${txn.error.message}` ) ); }; @@ -457,13 +434,11 @@ function selectQuery( return new Promise((resolve, reject) => { const results = []; query.onerror = (event) => { - // @ts-ignore - reject(new Error("Query failed: " + event.target.errorCode)); + reject(new Error("Query failed: " + query.error.message)); }; // collect results query.onsuccess = (event) => { - // @ts-ignore - const cursor = event.target.result; + const cursor = query.result; if (!cursor) { resolve(results); return; // end of results @@ -479,8 +454,6 @@ declare global { // eslint-disable-next-line no-var, camelcase var mx_rage_logger: ConsoleLogger; // eslint-disable-next-line no-var, camelcase - var mx_rage_initPromise: Promise; - // eslint-disable-next-line no-var, camelcase var mx_rage_initStoragePromise: Promise; } @@ -491,19 +464,11 @@ declare global { * be set up immediately for the logs. * @return {Promise} Resolves when set up. */ -export function init(setUpPersistence = true): Promise { - if (global.mx_rage_initPromise) { - return global.mx_rage_initPromise; - } +export function init(): Promise { global.mx_rage_logger = new ConsoleLogger(); global.mx_rage_logger.monkeyPatch(window.console); - if (setUpPersistence) { - return tryInitStorage(); - } - - global.mx_rage_initPromise = Promise.resolve(); - return global.mx_rage_initPromise; + return tryInitStorage(); } /** @@ -573,7 +538,7 @@ export async function getLogsForReport(): Promise { } else { return [ { - lines: global.mx_rage_logger.flush(true), + lines: global.mx_rage_logger.peekLogs(), id: "-", }, ]; From 860aff495858ac154ff4082290831beb741ef6f7 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 16 Jan 2023 17:27:49 +0000 Subject: [PATCH 06/56] Change rageshake persistence to throttled flushing Rather than every 30 seconds. This way we'll save logs for sessions lasting less than 30 seconds which we previously didn't. Also save on window unload just in case that doesn't catch everything. Plus remove some more unused params. --- package.json | 1 + src/settings/rageshake.ts | 65 ++++++++++++++++++++++++++++++--------- 2 files changed, 51 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index f7bbbb05..58001dba 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "i18next": "^21.10.0", "i18next-browser-languagedetector": "^6.1.8", "i18next-http-backend": "^1.4.4", + "lodash": "^4.17.21", "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#7b10fa367df357b51c2e78e220d39e5e7967f9e3", "matrix-widget-api": "^1.0.0", "mermaid": "^8.13.8", diff --git a/src/settings/rageshake.ts b/src/settings/rageshake.ts index f83a205f..268f2ac4 100644 --- a/src/settings/rageshake.ts +++ b/src/settings/rageshake.ts @@ -37,15 +37,23 @@ limitations under the License. // actually timestamps. We then purge the remaining logs. We also do this // purge on startup to prevent logs from accumulating. +import EventEmitter from "events"; +import { throttle } from "lodash"; import { logger } from "matrix-js-sdk/src/logger"; import { randomString } from "matrix-js-sdk/src/randomstring"; -// the frequency with which we flush to indexeddb -const FLUSH_RATE_MS = 30 * 1000; - // the length of log data we keep in indexeddb (and include in the reports) const MAX_LOG_SIZE = 1024 * 1024 * 5; // 5 MB +// Shortest amount of time between flushes. We are just appending to an +// IndexedDB table so we don't expect flushing to be that expensive, but +// we can batch the writes a little. +const MAX_FLUSH_INTERVAL = 2 * 1000; + +enum ConsoleLoggerEvent { + Log = "log", +} + type LogFunction = ( ...args: (Error | DOMException | object | string)[] ) => void; @@ -59,7 +67,7 @@ interface LogEntry { index?: number; } -export class ConsoleLogger { +export class ConsoleLogger extends EventEmitter { private logs = ""; private originalFunctions: { [key in LogFunctionName]?: LogFunction } = {}; @@ -113,6 +121,8 @@ export class ConsoleLogger { // Using + really is the quickest way in JS // http://jsperf.com/concat-vs-plus-vs-join this.logs += line; + + this.emit(ConsoleLoggerEvent.Log); } /** @@ -142,8 +152,14 @@ export class IndexedDBLogStore { private flushAgainPromise: Promise = null; private id: string; - constructor(private indexedDB: IDBFactory, private logger: ConsoleLogger) { + constructor( + private indexedDB: IDBFactory, + private loggerInstance: ConsoleLogger + ) { this.id = "instance-" + randomString(16); + + loggerInstance.on(ConsoleLoggerEvent.Log, this.onLoggerLog); + window.addEventListener("beforeunload", this.flush); } /** @@ -154,19 +170,18 @@ export class IndexedDBLogStore { return new Promise((resolve, reject) => { req.onsuccess = () => { this.db = req.result; - // Periodically flush logs to local storage / indexeddb - setInterval(this.flush.bind(this), FLUSH_RATE_MS); + resolve(); }; - req.onerror = (event) => { + req.onerror = () => { const err = "Failed to open log database: " + req.error.name; logger.error(err); reject(new Error(err)); }; // First time: Setup the object store - req.onupgradeneeded = (event) => { + req.onupgradeneeded = () => { const db = req.result; // This is the log entries themselves. Each entry is a chunk of // logs (ie multiple lines). 'id' is the instance ID (so logs with @@ -197,6 +212,26 @@ export class IndexedDBLogStore { }); } + private onLoggerLog = () => { + if (!this.db) return; + + this.throttledFlush(); + }; + + // Throttled function to flush logs. We use throttle rather + // than debounce as we want logs to be written regularly, otherwise + // if there's a constant stream of logging, we'd never write anything. + private throttledFlush = throttle( + () => { + this.flush(); + }, + MAX_FLUSH_INTERVAL, + { + leading: false, + trailing: true, + } + ); + /** * Flush logs to disk. * @@ -216,7 +251,7 @@ export class IndexedDBLogStore { * * @return {Promise} Resolved when the logs have been flushed. */ - public flush(): Promise { + public flush = (): Promise => { // check if a flush() operation is ongoing if (this.flushPromise) { if (this.flushAgainPromise) { @@ -241,14 +276,14 @@ export class IndexedDBLogStore { reject(new Error("No connected database")); return; } - const lines = this.logger.popLogs(); + const lines = this.loggerInstance.popLogs(); if (lines.length === 0) { resolve(); return; } const txn = this.db.transaction(["logs", "logslastmod"], "readwrite"); const objStore = txn.objectStore("logs"); - txn.oncomplete = (event) => { + txn.oncomplete = () => { resolve(); }; txn.onerror = (event) => { @@ -262,7 +297,7 @@ export class IndexedDBLogStore { this.flushPromise = null; }); return this.flushPromise; - } + }; /** * Consume the most recent logs and return them. Older logs which are not @@ -433,11 +468,11 @@ function selectQuery( const query = store.openCursor(keyRange); return new Promise((resolve, reject) => { const results = []; - query.onerror = (event) => { + query.onerror = () => { reject(new Error("Query failed: " + query.error.message)); }; // collect results - query.onsuccess = (event) => { + query.onsuccess = () => { const cursor = query.result; if (!cursor) { resolve(results); From e1c4042d15569c4ef05bffd1d7dea916ad506b46 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 17 Jan 2023 10:16:55 +0000 Subject: [PATCH 07/56] Add units to constant --- src/settings/rageshake.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/settings/rageshake.ts b/src/settings/rageshake.ts index 268f2ac4..446f0365 100644 --- a/src/settings/rageshake.ts +++ b/src/settings/rageshake.ts @@ -48,7 +48,7 @@ const MAX_LOG_SIZE = 1024 * 1024 * 5; // 5 MB // Shortest amount of time between flushes. We are just appending to an // IndexedDB table so we don't expect flushing to be that expensive, but // we can batch the writes a little. -const MAX_FLUSH_INTERVAL = 2 * 1000; +const MAX_FLUSH_INTERVAL_MS = 2 * 1000; enum ConsoleLoggerEvent { Log = "log", @@ -225,7 +225,7 @@ export class IndexedDBLogStore { () => { this.flush(); }, - MAX_FLUSH_INTERVAL, + MAX_FLUSH_INTERVAL_MS, { leading: false, trailing: true, From 524f530dcee72b7fe5c2859d9982a78a7df3d3f8 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 19 Jan 2023 19:20:42 +0000 Subject: [PATCH 08/56] Lowercase room alias before joining --- src/matrix-utils.ts | 6 ++++++ src/room/useLoadGroupCall.ts | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/matrix-utils.ts b/src/matrix-utils.ts index dc557027..03e32677 100644 --- a/src/matrix-utils.ts +++ b/src/matrix-utils.ts @@ -211,6 +211,12 @@ export function fullAliasFromRoomName( return `#${roomAliasLocalpartFromRoomName(roomName)}:${client.getDomain()}`; } +/** + * XXX What is this trying to do? It looks like it's getting the localpart from + * a room alias, but why is it splitting on hyphens and then putting spaces in?? + * @param roomId + * @returns + */ export function roomNameFromRoomId(roomId: string): string { return roomId .match(/([^:]+):.*$/)[1] diff --git a/src/room/useLoadGroupCall.ts b/src/room/useLoadGroupCall.ts index 363739aa..d90e0bcc 100644 --- a/src/room/useLoadGroupCall.ts +++ b/src/room/useLoadGroupCall.ts @@ -52,7 +52,11 @@ export const useLoadGroupCall = ( const fetchOrCreateRoom = async (): Promise => { try { - const room = await client.joinRoom(roomIdOrAlias, { viaServers }); + // We lowercase the localpart when we create the room, so we must lowercase + // it here too (we just do the whole alias). + const room = await client.joinRoom(roomIdOrAlias.toLowerCase(), { + viaServers, + }); logger.info( `Joined ${roomIdOrAlias}, waiting room to be ready for group calls` ); From 7e1033f5a424b5805d497e5e00211cdc90e7e408 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 20 Jan 2023 09:35:50 +0000 Subject: [PATCH 09/56] Add colon in comment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Šimon Brandner --- src/matrix-utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/matrix-utils.ts b/src/matrix-utils.ts index 03e32677..0a2ecfe5 100644 --- a/src/matrix-utils.ts +++ b/src/matrix-utils.ts @@ -212,7 +212,7 @@ export function fullAliasFromRoomName( } /** - * XXX What is this trying to do? It looks like it's getting the localpart from + * XXX: What is this trying to do? It looks like it's getting the localpart from * a room alias, but why is it splitting on hyphens and then putting spaces in?? * @param roomId * @returns From 81997624d4fee6fbaab4197eb4185bfc9b1d2f9b Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 20 Jan 2023 10:51:52 +0000 Subject: [PATCH 10/56] Fix joining rooms by ID MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We use this in embedded mode. Regressed by https://github.com/vector-im/element-call/pull/860 Lowercasing room IDs obviously makes them break, so… don't do that. --- src/room/useLoadGroupCall.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/room/useLoadGroupCall.ts b/src/room/useLoadGroupCall.ts index d90e0bcc..ae4de802 100644 --- a/src/room/useLoadGroupCall.ts +++ b/src/room/useLoadGroupCall.ts @@ -53,15 +53,21 @@ export const useLoadGroupCall = ( const fetchOrCreateRoom = async (): Promise => { try { // We lowercase the localpart when we create the room, so we must lowercase - // it here too (we just do the whole alias). - const room = await client.joinRoom(roomIdOrAlias.toLowerCase(), { + // it here too (we just do the whole alias). We can't do the same to room IDs + // though. + const sanitisedIdOrAlias = + roomIdOrAlias[0] === "#" + ? roomIdOrAlias.toLowerCase() + : roomIdOrAlias; + + const room = await client.joinRoom(sanitisedIdOrAlias, { viaServers, }); logger.info( - `Joined ${roomIdOrAlias}, waiting room to be ready for group calls` + `Joined ${sanitisedIdOrAlias}, waiting room to be ready for group calls` ); await client.waitUntilRoomReadyForGroupCalls(room.roomId); - logger.info(`${roomIdOrAlias}, is ready for group calls`); + logger.info(`${sanitisedIdOrAlias}, is ready for group calls`); return room; } catch (error) { if ( From 47c2e9e101ecfa46e3c5a61b0c0c4090059c57a9 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 20 Jan 2023 12:10:58 +0000 Subject: [PATCH 11/56] Don't crash if we can't find our own member event --- package.json | 2 +- src/room/usePTT.ts | 4 +++- yarn.lock | 6 +++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 58001dba..6a2962d3 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "i18next-browser-languagedetector": "^6.1.8", "i18next-http-backend": "^1.4.4", "lodash": "^4.17.21", - "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#7b10fa367df357b51c2e78e220d39e5e7967f9e3", + "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#c019f2bb191b52f9bec496a4812b4c59fea758af", "matrix-widget-api": "^1.0.0", "mermaid": "^8.13.8", "normalize.css": "^8.0.1", diff --git a/src/room/usePTT.ts b/src/room/usePTT.ts index 71d7d4e6..a171f0b9 100644 --- a/src/room/usePTT.ts +++ b/src/room/usePTT.ts @@ -113,12 +113,14 @@ export const usePTT = ( }, setState, ] = useState(() => { + // slightly concerningly, this can end up null as we seem to sometimes get + // here before the room state contains our own member event const roomMember = groupCall.room.getMember(client.getUserId()); const activeSpeakerFeed = getActiveSpeakerFeed(userMediaFeeds, groupCall); return { - isAdmin: roomMember.powerLevel >= 100, + isAdmin: roomMember ? roomMember.powerLevel >= 100 : false, talkOverEnabled: false, pttButtonHeld: false, activeSpeakerUserId: activeSpeakerFeed ? activeSpeakerFeed.userId : null, diff --git a/yarn.lock b/yarn.lock index cd7b188e..8bcb7671 100644 --- a/yarn.lock +++ b/yarn.lock @@ -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" integrity sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA== -"matrix-js-sdk@github:matrix-org/matrix-js-sdk#7b10fa367df357b51c2e78e220d39e5e7967f9e3": - version "23.0.0" - resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/7b10fa367df357b51c2e78e220d39e5e7967f9e3" +"matrix-js-sdk@github:matrix-org/matrix-js-sdk#c019f2bb191b52f9bec496a4812b4c59fea758af": + version "23.1.0" + resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/c019f2bb191b52f9bec496a4812b4c59fea758af" dependencies: "@babel/runtime" "^7.12.5" "@matrix-org/matrix-sdk-crypto-js" "^0.1.0-alpha.2" From 785fa51e0cf11a750d88d18f490ebc4529d2bdf1 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 20 Jan 2023 13:12:03 +0000 Subject: [PATCH 12/56] Use merged js-sdk commit --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 6a2962d3..c3a511f7 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "i18next-browser-languagedetector": "^6.1.8", "i18next-http-backend": "^1.4.4", "lodash": "^4.17.21", - "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#c019f2bb191b52f9bec496a4812b4c59fea758af", + "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#64197bf4db6486d77708125d7fb2e8d7fe001f14", "matrix-widget-api": "^1.0.0", "mermaid": "^8.13.8", "normalize.css": "^8.0.1", diff --git a/yarn.lock b/yarn.lock index 8bcb7671..f5719527 100644 --- a/yarn.lock +++ b/yarn.lock @@ -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" integrity sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA== -"matrix-js-sdk@github:matrix-org/matrix-js-sdk#c019f2bb191b52f9bec496a4812b4c59fea758af": - version "23.1.0" - resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/c019f2bb191b52f9bec496a4812b4c59fea758af" +"matrix-js-sdk@github:matrix-org/matrix-js-sdk#64197bf4db6486d77708125d7fb2e8d7fe001f14": + version "23.1.1" + resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/64197bf4db6486d77708125d7fb2e8d7fe001f14" dependencies: "@babel/runtime" "^7.12.5" "@matrix-org/matrix-sdk-crypto-js" "^0.1.0-alpha.2" From 9e8dadcc4453e197189efc03f4b78476e0f64cd0 Mon Sep 17 00:00:00 2001 From: Robin Townsend Date: Fri, 20 Jan 2023 10:51:28 -0500 Subject: [PATCH 13/56] Add a demo screenshot to the README --- README.md | 2 ++ demo.jpg | Bin 0 -> 182844 bytes 2 files changed, 2 insertions(+) create mode 100644 demo.jpg diff --git a/README.md b/README.md index c80c7900..997af57c 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ Full mesh group calls powered by [Matrix](https://matrix.org), implementing [MatrixRTC](https://github.com/matrix-org/matrix-spec-proposals/blob/matthew/group-voip/proposals/3401-group-voip.md). +![A demo of Element Call with six people](demo.jpg) + To try it out, visit our hosted version at [call.element.io](https://call.element.io). You can also find the latest development version continuously deployed to [element-call.netlify.app](https://element-call.netlify.app). ## Host it yourself diff --git a/demo.jpg b/demo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..afce1ae3fb0f1419566897f6de69544c8cf65bfe GIT binary patch literal 182844 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�Tt*Na~7XH}MtZDHi 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

K@K?WcwvU^|n96R?w; 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 Date: Fri, 20 Jan 2023 17:02:24 +0000 Subject: [PATCH 14/56] Translated using Weblate (Japanese) Currently translated at 2.1% (3 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 0967ef42..b615c7f7 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -1 +1,3 @@ -{} +{ + "{{name}} (Connecting...)": "{{name}} (接続中…)" +} From f61b2db80d02d2a00eb7ff072bdeb115dc7f2412 Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:02:10 +0000 Subject: [PATCH 15/56] Translated using Weblate (Japanese) Currently translated at 2.1% (3 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index b615c7f7..82123c7e 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -1,3 +1,5 @@ { - "{{name}} (Connecting...)": "{{name}} (接続中…)" + "{{name}} (Connecting...)": "{{name}} (接続中…)", + "{{count}} people connected|other": "{{count}}人が接続済", + "{{count}} people connected|one": "{{count}}人が接続済" } From 1cbda010514f64f275c6b754641338fc955a727b Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:02:31 +0000 Subject: [PATCH 16/56] Translated using Weblate (Japanese) Currently translated at 2.1% (3 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 82123c7e..5700887e 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -1,5 +1,5 @@ { - "{{name}} (Connecting...)": "{{name}} (接続中…)", + "{{name}} (Connecting...)": "{{name}}(接続中…)", "{{count}} people connected|other": "{{count}}人が接続済", "{{count}} people connected|one": "{{count}}人が接続済" } From 6acbf792fccb99807353d0bc4e367b83b2853ab5 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:02:36 +0000 Subject: [PATCH 17/56] Translated using Weblate (Japanese) Currently translated at 2.8% (4 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 5700887e..ef5bcc81 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -1,5 +1,6 @@ { "{{name}} (Connecting...)": "{{name}}(接続中…)", "{{count}} people connected|other": "{{count}}人が接続済", - "{{count}} people connected|one": "{{count}}人が接続済" + "{{count}} people connected|one": "{{count}}人が接続済", + "{{name}} (Waiting for video...)": "{{name}} (ビデオを待機しています…)" } From a55046148fb98adcb91ee95d70d7fdad8ca788b8 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:03:15 +0000 Subject: [PATCH 18/56] Translated using Weblate (Japanese) Currently translated at 4.2% (6 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index ef5bcc81..ceda9485 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -2,5 +2,7 @@ "{{name}} (Connecting...)": "{{name}}(接続中…)", "{{count}} people connected|other": "{{count}}人が接続済", "{{count}} people connected|one": "{{count}}人が接続済", - "{{name}} (Waiting for video...)": "{{name}} (ビデオを待機しています…)" + "{{name}} (Waiting for video...)": "{{name}} (ビデオを待機しています…)", + "<0>Already have an account?<1><0>Log in Or <2>Access as a guest": "<0>既にアカウントをお持ちですか?<1><0>ログイン Or <2>ゲストとしてアクセス", + "{{roomName}} - Walkie-talkie call": "{{roomName}} - トランシーバー通話" } From 74255d0554825de7eaf0cb498abee66948683bc4 Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:02:49 +0000 Subject: [PATCH 19/56] Translated using Weblate (Japanese) Currently translated at 4.2% (6 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index ceda9485..88bfc58b 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -2,7 +2,7 @@ "{{name}} (Connecting...)": "{{name}}(接続中…)", "{{count}} people connected|other": "{{count}}人が接続済", "{{count}} people connected|one": "{{count}}人が接続済", - "{{name}} (Waiting for video...)": "{{name}} (ビデオを待機しています…)", + "{{name}} (Waiting for video...)": "{{name}}(ビデオを待機しています…)", "<0>Already have an account?<1><0>Log in Or <2>Access as a guest": "<0>既にアカウントをお持ちですか?<1><0>ログイン Or <2>ゲストとしてアクセス", "{{roomName}} - Walkie-talkie call": "{{roomName}} - トランシーバー通話" } From 0b1689e6f79da6adbe9c237d5c3b7a9fb47ae499 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:03:51 +0000 Subject: [PATCH 20/56] Translated using Weblate (Japanese) Currently translated at 4.9% (7 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 88bfc58b..1dacd27a 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -4,5 +4,6 @@ "{{count}} people connected|one": "{{count}}人が接続済", "{{name}} (Waiting for video...)": "{{name}}(ビデオを待機しています…)", "<0>Already have an account?<1><0>Log in Or <2>Access as a guest": "<0>既にアカウントをお持ちですか?<1><0>ログイン Or <2>ゲストとしてアクセス", - "{{roomName}} - Walkie-talkie call": "{{roomName}} - トランシーバー通話" + "{{roomName}} - Walkie-talkie call": "{{roomName}} - トランシーバー通話", + "<0>Create an account Or <2>Access as a guest": "<0>アカウントを作成、または<2>ゲストとしてアクセス" } From 3220b030fb1930201a85253369a75bfd5ef09923 Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:03:43 +0000 Subject: [PATCH 21/56] Translated using Weblate (Japanese) Currently translated at 4.9% (7 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 1dacd27a..160acde8 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -3,7 +3,7 @@ "{{count}} people connected|other": "{{count}}人が接続済", "{{count}} people connected|one": "{{count}}人が接続済", "{{name}} (Waiting for video...)": "{{name}}(ビデオを待機しています…)", - "<0>Already have an account?<1><0>Log in Or <2>Access as a guest": "<0>既にアカウントをお持ちですか?<1><0>ログイン Or <2>ゲストとしてアクセス", + "<0>Already have an account?<1><0>Log in Or <2>Access as a guest": "<0>既にアカウントをお持ちですか?<1><0>ログインまたは<2>ゲストとしてアクセス", "{{roomName}} - Walkie-talkie call": "{{roomName}} - トランシーバー通話", "<0>Create an account Or <2>Access as a guest": "<0>アカウントを作成、または<2>ゲストとしてアクセス" } From 008ecd7409bd13c8eaeaa02c8678c503f8c769e9 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:04:05 +0000 Subject: [PATCH 22/56] Translated using Weblate (Japanese) Currently translated at 5.6% (8 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 160acde8..785f5fc8 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -5,5 +5,6 @@ "{{name}} (Waiting for video...)": "{{name}}(ビデオを待機しています…)", "<0>Already have an account?<1><0>Log in Or <2>Access as a guest": "<0>既にアカウントをお持ちですか?<1><0>ログインまたは<2>ゲストとしてアクセス", "{{roomName}} - Walkie-talkie call": "{{roomName}} - トランシーバー通話", - "<0>Create an account Or <2>Access as a guest": "<0>アカウントを作成、または<2>ゲストとしてアクセス" + "<0>Create an account Or <2>Access as a guest": "<0>アカウントを作成、または<2>ゲストとしてアクセス", + "<0>Join call now<1>Or<2>Copy call link and join later": "<0>今すぐ通話に参加する<1>Or<2>通話リンクをコピーし、後ほど参加する" } From 29ea2cfe909e8954f40ab7c68ac4f07108c017a8 Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:03:57 +0000 Subject: [PATCH 23/56] Translated using Weblate (Japanese) Currently translated at 5.6% (8 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 785f5fc8..10cd7898 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -5,6 +5,6 @@ "{{name}} (Waiting for video...)": "{{name}}(ビデオを待機しています…)", "<0>Already have an account?<1><0>Log in Or <2>Access as a guest": "<0>既にアカウントをお持ちですか?<1><0>ログインまたは<2>ゲストとしてアクセス", "{{roomName}} - Walkie-talkie call": "{{roomName}} - トランシーバー通話", - "<0>Create an account Or <2>Access as a guest": "<0>アカウントを作成、または<2>ゲストとしてアクセス", + "<0>Create an account Or <2>Access as a guest": "<0>アカウントを作成または<2>ゲストとしてアクセス", "<0>Join call now<1>Or<2>Copy call link and join later": "<0>今すぐ通話に参加する<1>Or<2>通話リンクをコピーし、後ほど参加する" } From e3d72e11042c8b0c0c9c658502c328e305534347 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:05:33 +0000 Subject: [PATCH 24/56] Translated using Weblate (Japanese) Currently translated at 7.0% (10 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 10cd7898..9a5b7867 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -6,5 +6,6 @@ "<0>Already have an account?<1><0>Log in Or <2>Access as a guest": "<0>既にアカウントをお持ちですか?<1><0>ログインまたは<2>ゲストとしてアクセス", "{{roomName}} - Walkie-talkie call": "{{roomName}} - トランシーバー通話", "<0>Create an account Or <2>Access as a guest": "<0>アカウントを作成または<2>ゲストとしてアクセス", - "<0>Join call now<1>Or<2>Copy call link and join later": "<0>今すぐ通話に参加する<1>Or<2>通話リンクをコピーし、後ほど参加する" + "<0>Join call now<1>Or<2>Copy call link and join later": "<0>今すぐ通話に参加する<1>Or<2>通話リンクをコピーし、後ほど参加する", + "Accept camera/microphone permissions to join the call.": "通話に参加するには、カメラ・マイクの許可が必要です。" } From af565ecd771e6d14843a75ff5ac9798b181a4470 Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:04:37 +0000 Subject: [PATCH 25/56] Translated using Weblate (Japanese) Currently translated at 7.0% (10 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 9a5b7867..e2309acd 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -6,6 +6,7 @@ "<0>Already have an account?<1><0>Log in Or <2>Access as a guest": "<0>既にアカウントをお持ちですか?<1><0>ログインまたは<2>ゲストとしてアクセス", "{{roomName}} - Walkie-talkie call": "{{roomName}} - トランシーバー通話", "<0>Create an account Or <2>Access as a guest": "<0>アカウントを作成または<2>ゲストとしてアクセス", - "<0>Join call now<1>Or<2>Copy call link and join later": "<0>今すぐ通話に参加する<1>Or<2>通話リンクをコピーし、後ほど参加する", - "Accept camera/microphone permissions to join the call.": "通話に参加するには、カメラ・マイクの許可が必要です。" + "<0>Join call now<1>Or<2>Copy call link and join later": "<0>今すぐ通話に参加<1>または<2>通話リンクをコピーし、後で参加", + "Accept camera/microphone permissions to join the call.": "通話に参加するには、カメラ・マイクの許可が必要です。", + "<0>Oops, something's gone wrong.": "<0>何かがうまく行きませんでした。" } From 990a08f4f616b024e60079232e9db37ed0b0a488 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:07:41 +0000 Subject: [PATCH 26/56] Translated using Weblate (Japanese) Currently translated at 14.1% (20 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index e2309acd..fd8c44a2 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -8,5 +8,13 @@ "<0>Create an account Or <2>Access as a guest": "<0>アカウントを作成または<2>ゲストとしてアクセス", "<0>Join call now<1>Or<2>Copy call link and join later": "<0>今すぐ通話に参加<1>または<2>通話リンクをコピーし、後で参加", "Accept camera/microphone permissions to join the call.": "通話に参加するには、カメラ・マイクの許可が必要です。", - "<0>Oops, something's gone wrong.": "<0>何かがうまく行きませんでした。" + "<0>Oops, something's gone wrong.": "<0>何かがうまく行きませんでした。", + "Camera/microphone permissions needed to join the call.": "通話に参加する場合、カメラ・マイクの許可が必要です", + "Allow analytics": "アナリティクスを許可", + "Camera": "カメラ", + "Call link copied": "通話リンクをコピーしました", + "By clicking \"Join call now\", you agree to our <2>Terms and conditions": "「今すぐ通話に参加」をクリックすると、<2>利用規約に同意したとみなされます", + "By clicking \"Go\", you agree to our <2>Terms and conditions": "「続行」をクリックすると、 <2>利用規約に同意したとみなされます", + "Avatar": "アバター", + "Accept microphone permissions to join the call.": "通話に参加するには、マイクの許可が必要です。" } From 5f24bf0b9c01df1179c4552fcbf5b7cc3b0e7407 Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:06:30 +0000 Subject: [PATCH 27/56] Translated using Weblate (Japanese) Currently translated at 14.1% (20 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index fd8c44a2..19bd95fe 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -16,5 +16,7 @@ "By clicking \"Join call now\", you agree to our <2>Terms and conditions": "「今すぐ通話に参加」をクリックすると、<2>利用規約に同意したとみなされます", "By clicking \"Go\", you agree to our <2>Terms and conditions": "「続行」をクリックすると、 <2>利用規約に同意したとみなされます", "Avatar": "アバター", - "Accept microphone permissions to join the call.": "通話に参加するには、マイクの許可が必要です。" + "Accept microphone permissions to join the call.": "通話に参加するには、マイクの許可が必要です。", + "Audio": "音声", + "Advanced": "高度" } From 18fe2daea71dba72025add5765570cec645d8460 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:08:11 +0000 Subject: [PATCH 28/56] Translated using Weblate (Japanese) Currently translated at 17.0% (24 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 19bd95fe..a5eda8bd 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -18,5 +18,9 @@ "Avatar": "アバター", "Accept microphone permissions to join the call.": "通話に参加するには、マイクの許可が必要です。", "Audio": "音声", - "Advanced": "高度" + "Advanced": "高度", + "Connection lost": "通信が切断されました", + "Confirm password": "パスワードを確認", + "Close": "閉じる", + "Change layout": "レイアウトを変更" } From 35386b5e1617dbc7df1b70ab6df57cd43790edf7 Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:07:45 +0000 Subject: [PATCH 29/56] Translated using Weblate (Japanese) Currently translated at 17.0% (24 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index a5eda8bd..c4e3518c 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -9,7 +9,7 @@ "<0>Join call now<1>Or<2>Copy call link and join later": "<0>今すぐ通話に参加<1>または<2>通話リンクをコピーし、後で参加", "Accept camera/microphone permissions to join the call.": "通話に参加するには、カメラ・マイクの許可が必要です。", "<0>Oops, something's gone wrong.": "<0>何かがうまく行きませんでした。", - "Camera/microphone permissions needed to join the call.": "通話に参加する場合、カメラ・マイクの許可が必要です", + "Camera/microphone permissions needed to join the call.": "通話に参加する場合、カメラ・マイクの許可が必要です。", "Allow analytics": "アナリティクスを許可", "Camera": "カメラ", "Call link copied": "通話リンクをコピーしました", From 26e15308822de72fcf82e3693b554f506e124d74 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:08:23 +0000 Subject: [PATCH 30/56] Translated using Weblate (Japanese) Currently translated at 17.7% (25 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index c4e3518c..6758d08b 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -22,5 +22,6 @@ "Connection lost": "通信が切断されました", "Confirm password": "パスワードを確認", "Close": "閉じる", - "Change layout": "レイアウトを変更" + "Change layout": "レイアウトを変更", + "Copied!": "コピーしました!" } From ff5ff175fdceb0c20b38d19e3333a30222a08ed2 Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:08:17 +0000 Subject: [PATCH 31/56] Translated using Weblate (Japanese) Currently translated at 17.7% (25 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 6758d08b..193bdeb3 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -19,7 +19,7 @@ "Accept microphone permissions to join the call.": "通話に参加するには、マイクの許可が必要です。", "Audio": "音声", "Advanced": "高度", - "Connection lost": "通信が切断されました", + "Connection lost": "接続が切断されました", "Confirm password": "パスワードを確認", "Close": "閉じる", "Change layout": "レイアウトを変更", From cab8a71ac2bce3529e91a17f6af9a8146adbdcfa Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:08:46 +0000 Subject: [PATCH 32/56] Translated using Weblate (Japanese) Currently translated at 19.1% (27 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 193bdeb3..9cebc183 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -23,5 +23,7 @@ "Confirm password": "パスワードを確認", "Close": "閉じる", "Change layout": "レイアウトを変更", - "Copied!": "コピーしました!" + "Copied!": "コピーしました!", + "Copy and share this call link": "通話リンクをコピー、または共有", + "Copy": "コピー" } From e4b2180bc200efaf98f6e7c71acd4f2c17bf178f Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:08:27 +0000 Subject: [PATCH 33/56] Translated using Weblate (Japanese) Currently translated at 19.1% (27 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 9cebc183..6e102f25 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -23,7 +23,7 @@ "Confirm password": "パスワードを確認", "Close": "閉じる", "Change layout": "レイアウトを変更", - "Copied!": "コピーしました!", + "Copied!": "コピーしました!", "Copy and share this call link": "通話リンクをコピー、または共有", "Copy": "コピー" } From c9c0ed85f829f609816b600c464f9bc662f53b47 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:09:34 +0000 Subject: [PATCH 34/56] Translated using Weblate (Japanese) Currently translated at 21.2% (30 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 6e102f25..11f00874 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -25,5 +25,8 @@ "Change layout": "レイアウトを変更", "Copied!": "コピーしました!", "Copy and share this call link": "通話リンクをコピー、または共有", - "Copy": "コピー" + "Copy": "コピー", + "Description (optional)": "概要 (任意)", + "Debug log": "デバッグログ", + "Create account": "アカウントを作成" } From 5ac12129884986e03117e5b5e2b37526f3653321 Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:09:04 +0000 Subject: [PATCH 35/56] Translated using Weblate (Japanese) Currently translated at 21.2% (30 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 11f00874..7b45669a 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -24,7 +24,7 @@ "Close": "閉じる", "Change layout": "レイアウトを変更", "Copied!": "コピーしました!", - "Copy and share this call link": "通話リンクをコピー、または共有", + "Copy and share this call link": "通話リンクをコピーし共有", "Copy": "コピー", "Description (optional)": "概要 (任意)", "Debug log": "デバッグログ", From 3cdb413587b02c9c474f08ad8f2d58ce2416dff7 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:11:18 +0000 Subject: [PATCH 36/56] Translated using Weblate (Japanese) Currently translated at 28.3% (40 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 7b45669a..6c98ee46 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -28,5 +28,13 @@ "Copy": "コピー", "Description (optional)": "概要 (任意)", "Debug log": "デバッグログ", - "Create account": "アカウントを作成" + "Create account": "アカウントを作成", + "Having trouble? Help us fix it.": "トラブルが起きましたか? 修正にご協力ください。", + "Go": "続行", + "Fetching group call timed out.": "グループ通話の取得がタイムアウトしました。", + "Element Call Home": "Element Call ホーム", + "Download debug logs": "デバッグログをダウンロード", + "Display name": "表示名", + "Developer": "開発者", + "Details": "詳細" } From 85d5946d6afdb7648bb670a475e1502e516ad643 Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:11:05 +0000 Subject: [PATCH 37/56] Translated using Weblate (Japanese) Currently translated at 28.3% (40 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 6c98ee46..ce28a113 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -26,7 +26,7 @@ "Copied!": "コピーしました!", "Copy and share this call link": "通話リンクをコピーし共有", "Copy": "コピー", - "Description (optional)": "概要 (任意)", + "Description (optional)": "概要(任意)", "Debug log": "デバッグログ", "Create account": "アカウントを作成", "Having trouble? Help us fix it.": "トラブルが起きましたか? 修正にご協力ください。", @@ -36,5 +36,7 @@ "Download debug logs": "デバッグログをダウンロード", "Display name": "表示名", "Developer": "開発者", - "Details": "詳細" + "Details": "詳細", + "Full screen": "全画面表示", + "Exit full screen": "全画面表示を終了" } From ddb3637d79b842299a29eeff2c93a2c2982889b9 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:11:35 +0000 Subject: [PATCH 38/56] Translated using Weblate (Japanese) Currently translated at 29.7% (42 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index ce28a113..46ce919b 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -38,5 +38,7 @@ "Developer": "開発者", "Details": "詳細", "Full screen": "全画面表示", - "Exit full screen": "全画面表示を終了" + "Exit full screen": "全画面表示を終了", + "Include debug logs": "デバッグログを含む", + "Home": "ホーム" } From ed1b1c3d3e946e937c3f97d500d21e606adaa428 Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:11:26 +0000 Subject: [PATCH 39/56] Translated using Weblate (Japanese) Currently translated at 29.7% (42 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 46ce919b..fc97e0ca 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -29,7 +29,7 @@ "Description (optional)": "概要(任意)", "Debug log": "デバッグログ", "Create account": "アカウントを作成", - "Having trouble? Help us fix it.": "トラブルが起きましたか? 修正にご協力ください。", + "Having trouble? Help us fix it.": "問題が起きましたか?修正にご協力ください。", "Go": "続行", "Fetching group call timed out.": "グループ通話の取得がタイムアウトしました。", "Element Call Home": "Element Call ホーム", From 375db2a47b7a777b71ff74ffcffa41b91f4b1e20 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:11:49 +0000 Subject: [PATCH 40/56] Translated using Weblate (Japanese) Currently translated at 31.2% (44 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index fc97e0ca..38bdedb2 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -40,5 +40,7 @@ "Full screen": "全画面表示", "Exit full screen": "全画面表示を終了", "Include debug logs": "デバッグログを含む", - "Home": "ホーム" + "Home": "ホーム", + "Incompatible versions!": "互換性のないバージョンです!", + "Incompatible versions": "互換性のないバージョン" } From 435f6f1ae9401934d178e779433e9ff06e39570c Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:11:39 +0000 Subject: [PATCH 41/56] Translated using Weblate (Japanese) Currently translated at 31.2% (44 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 38bdedb2..7518cdf5 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -39,7 +39,7 @@ "Details": "詳細", "Full screen": "全画面表示", "Exit full screen": "全画面表示を終了", - "Include debug logs": "デバッグログを含む", + "Include debug logs": "デバッグログを含める", "Home": "ホーム", "Incompatible versions!": "互換性のないバージョンです!", "Incompatible versions": "互換性のないバージョン" From a56d974f4836e0d920a570346f34ec89f6f764f1 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:12:43 +0000 Subject: [PATCH 42/56] Translated using Weblate (Japanese) Currently translated at 34.7% (49 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 7518cdf5..a4bf1111 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -42,5 +42,9 @@ "Include debug logs": "デバッグログを含める", "Home": "ホーム", "Incompatible versions!": "互換性のないバージョンです!", - "Incompatible versions": "互換性のないバージョン" + "Incompatible versions": "互換性のないバージョン", + "Join existing call?": "既存の通話に参加しますか?", + "Join call now": "今すぐ通話に参加", + "Join call": "通話に参加", + "Invite": "招待" } From f940063e0336dc85807fdcc1f11e47333cbafbde Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:12:31 +0000 Subject: [PATCH 43/56] Translated using Weblate (Japanese) Currently translated at 34.7% (49 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index a4bf1111..82628b93 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -41,10 +41,11 @@ "Exit full screen": "全画面表示を終了", "Include debug logs": "デバッグログを含める", "Home": "ホーム", - "Incompatible versions!": "互換性のないバージョンです!", + "Incompatible versions!": "互換性のないバージョンです!", "Incompatible versions": "互換性のないバージョン", "Join existing call?": "既存の通話に参加しますか?", "Join call now": "今すぐ通話に参加", "Join call": "通話に参加", - "Invite": "招待" + "Invite": "招待", + "Invite people": "連絡先を招待" } From ea7bfb5afbabd280d2852c07366648c4618b41ad Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:14:07 +0000 Subject: [PATCH 44/56] Translated using Weblate (Japanese) Currently translated at 41.1% (58 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 82628b93..3e0f0d9d 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -47,5 +47,14 @@ "Join call now": "今すぐ通話に参加", "Join call": "通話に参加", "Invite": "招待", - "Invite people": "連絡先を招待" + "Invite people": "連絡先を招待", + "Not registered yet? <2>Create an account": "まだアカウントをお持ちではありませんか? <2>アカウントを作成", + "Mute microphone": "マイクをミュート", + "Microphone permissions needed to join the call.": "通話の参加にはマイクの許可が必要です。", + "Microphone": "マイク", + "Login": "ログイン", + "Logging in…": "ログイン中です…", + "Loading…": "読み込み中です…", + "Loading room…": "ルームを読み込んでいます…", + "Leave": "退出" } From 5c3c15266a5d96c9778ab8192afa2df62391cd11 Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:12:49 +0000 Subject: [PATCH 45/56] Translated using Weblate (Japanese) Currently translated at 41.1% (58 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 3e0f0d9d..a8bb3c33 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -43,7 +43,7 @@ "Home": "ホーム", "Incompatible versions!": "互換性のないバージョンです!", "Incompatible versions": "互換性のないバージョン", - "Join existing call?": "既存の通話に参加しますか?", + "Join existing call?": "既存の通話に参加しますか?", "Join call now": "今すぐ通話に参加", "Join call": "通話に参加", "Invite": "招待", From 7798128cbd87d9764af8009a0099ceeeaf67fe5a Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:19:28 +0000 Subject: [PATCH 46/56] Translated using Weblate (Japanese) Currently translated at 60.9% (86 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index a8bb3c33..8abf615e 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -56,5 +56,32 @@ "Logging in…": "ログイン中です…", "Loading…": "読み込み中です…", "Loading room…": "ルームを読み込んでいます…", - "Leave": "退出" + "Leave": "退出", + "Version: {{version}}": "バージョン: {{version}}", + "Username": "ユーザー名", + "User menu": "ユーザーメニュー", + "User ID": "ユーザーID", + "Unmute microphone": "マイクのミュートを解除", + "Turn on camera": "カメラをつける", + "Turn off camera": "カメラを切る", + "Submitting feedback…": "フィードバックを送信しています…", + "Submit feedback": "フィードバックを送信", + "Stop sharing screen": "画面共有を停止", + "Spotlight": "スポットライト", + "Send debug logs": "デバッグログを送信", + "Sign out": "サインアウト", + "Sign in": "サインイン", + "Share screen": "画面共有", + "Settings": "設定", + "Sending…": "送信しています…", + "Sending debug logs…": "デバッグログを送信しています…", + "Saving…": "保存しています…", + "Save": "保存", + "Return to home screen": "ホーム画面に戻る", + "Registering…": "登録しています…", + "Register": "登録", + "Profile": "プロフィール", + "Press and hold spacebar to talk": "スペースを長押しで会話", + "Passwords must match": "パスワードが一致する必要があります", + "Password": "パスワード" } From edfb8709d1f6b007496481e32e336efb20001257 Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:17:47 +0000 Subject: [PATCH 47/56] Translated using Weblate (Japanese) Currently translated at 60.9% (86 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 8abf615e..7fafb642 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -1,5 +1,5 @@ { - "{{name}} (Connecting...)": "{{name}}(接続中…)", + "{{name}} (Connecting...)": "{{name}}(接続しています…)", "{{count}} people connected|other": "{{count}}人が接続済", "{{count}} people connected|one": "{{count}}人が接続済", "{{name}} (Waiting for video...)": "{{name}}(ビデオを待機しています…)", @@ -48,13 +48,13 @@ "Join call": "通話に参加", "Invite": "招待", "Invite people": "連絡先を招待", - "Not registered yet? <2>Create an account": "まだアカウントをお持ちではありませんか? <2>アカウントを作成", + "Not registered yet? <2>Create an account": "アカウントがありませんか? <2>アカウントを作成", "Mute microphone": "マイクをミュート", "Microphone permissions needed to join the call.": "通話の参加にはマイクの許可が必要です。", "Microphone": "マイク", "Login": "ログイン", - "Logging in…": "ログイン中です…", - "Loading…": "読み込み中です…", + "Logging in…": "ログインしています…", + "Loading…": "読み込んでいます…", "Loading room…": "ルームを読み込んでいます…", "Leave": "退出", "Version: {{version}}": "バージョン: {{version}}", @@ -83,5 +83,6 @@ "Profile": "プロフィール", "Press and hold spacebar to talk": "スペースを長押しで会話", "Passwords must match": "パスワードが一致する必要があります", - "Password": "パスワード" + "Password": "パスワード", + "Speaker": "スピーカー" } From 26e1772c758a5695db645a8968e19d7ac55b1b16 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:20:03 +0000 Subject: [PATCH 48/56] Translated using Weblate (Japanese) Currently translated at 63.1% (89 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 7fafb642..fcb59edd 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -84,5 +84,8 @@ "Press and hold spacebar to talk": "スペースを長押しで会話", "Passwords must match": "パスワードが一致する必要があります", "Password": "パスワード", - "Speaker": "スピーカー" + "Speaker": "スピーカー", + "Video call name": "ビデオ通話の名前", + "Video call": "ビデオ通話", + "Video": "ビデオ" } From 17a3e14d09fc81169b705e80f12e9bb45c77b4fa Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:19:33 +0000 Subject: [PATCH 49/56] Translated using Weblate (Japanese) Currently translated at 63.1% (89 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index fcb59edd..874dd56c 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -57,7 +57,7 @@ "Loading…": "読み込んでいます…", "Loading room…": "ルームを読み込んでいます…", "Leave": "退出", - "Version: {{version}}": "バージョン: {{version}}", + "Version: {{version}}": "バージョン:{{version}}", "Username": "ユーザー名", "User menu": "ユーザーメニュー", "User ID": "ユーザーID", From 906fcdf72edc0e38331ff7128ebf634542e6ae61 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:20:20 +0000 Subject: [PATCH 50/56] Translated using Weblate (Japanese) Currently translated at 64.5% (91 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 874dd56c..4520a12a 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -87,5 +87,6 @@ "Speaker": "スピーカー", "Video call name": "ビデオ通話の名前", "Video call": "ビデオ通話", - "Video": "ビデオ" + "Video": "ビデオ", + "Waiting for other participants…": "他の参加者を待っています…" } From bf7c45b0bc137f4db3ee4ce45aa54552e38b9e3e Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:20:13 +0000 Subject: [PATCH 51/56] Translated using Weblate (Japanese) Currently translated at 64.5% (91 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 4520a12a..d5713ae7 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -85,8 +85,9 @@ "Passwords must match": "パスワードが一致する必要があります", "Password": "パスワード", "Speaker": "スピーカー", - "Video call name": "ビデオ通話の名前", + "Video call name": "ビデオ通話の名称", "Video call": "ビデオ通話", "Video": "ビデオ", - "Waiting for other participants…": "他の参加者を待っています…" + "Waiting for other participants…": "他の参加者を待っています…", + "Waiting for network": "ネットワークを待機しています" } From 85b206c2704edc085a01cd6b36e890d655a8067c Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:20:39 +0000 Subject: [PATCH 52/56] Translated using Weblate (Japanese) Currently translated at 65.9% (93 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index d5713ae7..403e58dd 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -89,5 +89,7 @@ "Video call": "ビデオ通話", "Video": "ビデオ", "Waiting for other participants…": "他の参加者を待っています…", - "Waiting for network": "ネットワークを待機しています" + "Waiting for network": "ネットワークを待機しています", + "Walkie-talkie call name": "トランシーバー通話の名前", + "Walkie-talkie call": "トランシーバー通話" } From f56177b96a79ce13119e1573f50d2e5af696d4fe Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:20:30 +0000 Subject: [PATCH 53/56] Translated using Weblate (Japanese) Currently translated at 65.9% (93 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 403e58dd..fd876f14 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -88,7 +88,7 @@ "Video call name": "ビデオ通話の名称", "Video call": "ビデオ通話", "Video": "ビデオ", - "Waiting for other participants…": "他の参加者を待っています…", + "Waiting for other participants…": "他の参加者を待機しています…", "Waiting for network": "ネットワークを待機しています", "Walkie-talkie call name": "トランシーバー通話の名前", "Walkie-talkie call": "トランシーバー通話" From 4f8bd18efdfcd500858019e1f13ec2a0d423b923 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 20 Jan 2023 17:59:57 +0000 Subject: [PATCH 54/56] Don't try to register users until client is loaded --- src/room/RoomPage.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/room/RoomPage.tsx b/src/room/RoomPage.tsx index e8b3fa9a..f4e460d7 100644 --- a/src/room/RoomPage.tsx +++ b/src/room/RoomPage.tsx @@ -50,9 +50,9 @@ export const RoomPage: FC = () => { const [isRegistering, setIsRegistering] = useState(false); useEffect(() => { - // If we're not already authed and we've been given a display name as + // If we've finished loading, are not already authed and we've been given a display name as // a URL param, automatically register a passwordless user - if (!isAuthenticated && displayName) { + if (!loading && !isAuthenticated && displayName) { setIsRegistering(true); registerPasswordlessUser(displayName).finally(() => { setIsRegistering(false); @@ -63,6 +63,7 @@ export const RoomPage: FC = () => { displayName, setIsRegistering, registerPasswordlessUser, + loading, ]); const groupCallView = useCallback( From d65464e4dbfc3f53a077f24adfb3d9469bc6518f Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 23 Jan 2023 16:53:24 +0000 Subject: [PATCH 55/56] Avoid duplicate PTT button 'unhold' events We called the 'unhold' function even if the button wasn't held which probably will have been generating unmute events even when we weren't muted. Also use separate handlers for events so we can have specific log lines (and also see where the event comes from when caught in the debugger). --- src/room/PTTButton.tsx | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/room/PTTButton.tsx b/src/room/PTTButton.tsx index abc02c68..1ff7b27b 100644 --- a/src/room/PTTButton.tsx +++ b/src/room/PTTButton.tsx @@ -17,6 +17,7 @@ limitations under the License. import React, { useCallback, useState, useRef } from "react"; import classNames from "classnames"; import { useSpring, animated } from "@react-spring/web"; +import { logger } from "@sentry/utils"; import styles from "./PTTButton.module.css"; import { ReactComponent as MicIcon } from "../icons/Mic.svg"; @@ -68,11 +69,23 @@ export const PTTButton: React.FC = ({ enqueueNetworkWaiting(true, 100); startTalking(); }, [enqueueNetworkWaiting, startTalking, buttonHeld]); + const unhold = useCallback(() => { + if (!buttonHeld) return; setButtonHeld(false); setNetworkWaiting(false); stopTalking(); - }, [setNetworkWaiting, stopTalking]); + }, [setNetworkWaiting, stopTalking, buttonHeld]); + + const onMouseUp = useCallback(() => { + logger.info("Mouse up event: unholding PTT button"); + unhold(); + }, [unhold]); + + const onBlur = useCallback(() => { + logger.info("Blur event: unholding PTT button"); + unhold(); + }, [unhold]); const onButtonMouseDown = useCallback( (e: React.MouseEvent) => { @@ -85,7 +98,7 @@ export const PTTButton: React.FC = ({ // These listeners go on the window so even if the user's cursor / finger // leaves the button while holding it, the button stays pushed until // they stop clicking / tapping. - useEventTarget(window, "mouseup", unhold); + useEventTarget(window, "mouseup", onMouseUp); useEventTarget( window, "touchend", @@ -103,6 +116,8 @@ export const PTTButton: React.FC = ({ } if (!touchFound) return; + logger.info("Touch event ended: unholding PTT button"); + e.preventDefault(); unhold(); setActiveTouchId(null); @@ -163,6 +178,8 @@ export const PTTButton: React.FC = ({ e.preventDefault(); + logger.info("Keyup event for spacebar: unholding PTT button"); + unhold(); } }, @@ -171,7 +188,7 @@ export const PTTButton: React.FC = ({ ); // TODO: We will need to disable this for a global PTT hotkey to work - useEventTarget(window, "blur", unhold); + useEventTarget(window, "blur", onBlur); const prefersReducedMotion = usePrefersReducedMotion(); const { shadow } = useSpring({ From d2631a3e0201c7e5338f9b3508a548b0f60fe477 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 23 Jan 2023 17:52:02 +0000 Subject: [PATCH 56/56] Fix the rageshake modal on mobile As per comment Unsure if this is the best fix - ideally we wouldn't go into no-controls mode at all, but this part doesn't know whether the dialog is open so the only thing we could really do is tweak the threshold, or possibly guess based on width instead? --- src/room/PTTCallView.tsx | 60 ++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/room/PTTCallView.tsx b/src/room/PTTCallView.tsx index 08836d09..a25f3371 100644 --- a/src/room/PTTCallView.tsx +++ b/src/room/PTTCallView.tsx @@ -210,36 +210,36 @@ export const PTTCallView: React.FC = ({ )}

- {showControls && ( - <> -
-

- {t("{{count}} people connected", { - count: participatingMembers.length, - })} -

- -
-
- - {!isEmbedded && } - inviteModalState.open()} /> -
- - )} + {/* Always render this because the window will become shorter when the on-screen + keyboard appears, so if we don't render it, the dialog will unmount. */} +
+
+

+ {t("{{count}} people connected", { + count: participatingMembers.length, + })} +

+ +
+
+ + {!isEmbedded && } + inviteModalState.open()} /> +
+
{showControls &&