Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit 73dd30f

Browse files
committed
Merge branch 'develop' into travis/cross-room
2 parents f912d9d + 470bc0f commit 73dd30f

File tree

10 files changed

+62
-39
lines changed

10 files changed

+62
-39
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@
151151
"@typescript-eslint/eslint-plugin": "^4.17.0",
152152
"@typescript-eslint/parser": "^4.17.0",
153153
"@wojtekmaj/enzyme-adapter-react-17": "^0.6.1",
154-
"allchange": "^1.0.0",
154+
"allchange": "^1.0.2",
155155
"babel-jest": "^26.6.3",
156156
"chokidar": "^3.5.1",
157157
"concurrently": "^5.3.0",

res/css/_common.scss

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -381,11 +381,6 @@ input[type=text]:focus, input[type=password]:focus, textarea:focus {
381381
font-size: $font-14px;
382382
color: $primary-content;
383383
word-wrap: break-word;
384-
385-
a {
386-
color: $accent-color;
387-
cursor: pointer;
388-
}
389384
}
390385

391386
.mx_Dialog_buttons {

res/css/structures/_ScrollPanel.scss

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ limitations under the License.
1515
*/
1616

1717
.mx_ScrollPanel {
18-
contain: strict;
19-
2018
.mx_RoomView_MessageList {
2119
position: relative;
2220
display: flex;

res/css/views/rooms/_EventTile.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ $hover-select-border: 4px;
514514

515515
.mx_EventTile:hover .mx_EventTile_body pre,
516516
.mx_EventTile.focus-visible:focus-within .mx_EventTile_body pre {
517-
border: 1px solid #e5e5e5; // deliberate constant as we're behind an invert filter
517+
border: 1px solid $tertiary-content;
518518
}
519519

520520
.mx_EventTile_pre_container {

src/CallHandler.tsx

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,15 @@ export default class CallHandler extends EventEmitter {
250250
* @returns {boolean}
251251
*/
252252
private areAnyCallsUnsilenced(): boolean {
253-
return this.calls.size > this.silencedCalls.size;
253+
for (const call of this.calls.values()) {
254+
if (
255+
call.state === CallState.Ringing &&
256+
!this.isCallSilenced(call.callId)
257+
) {
258+
return true;
259+
}
260+
}
261+
return false;
254262
}
255263

256264
private async checkProtocols(maxTries) {
@@ -878,6 +886,8 @@ export default class CallHandler extends EventEmitter {
878886
break;
879887
case 'hangup':
880888
case 'reject':
889+
this.stopRingingIfPossible(this.calls.get(payload.room_id).callId);
890+
881891
if (!this.calls.get(payload.room_id)) {
882892
return; // no call to hangup
883893
}
@@ -890,11 +900,15 @@ export default class CallHandler extends EventEmitter {
890900
// the hangup event away)
891901
break;
892902
case 'hangup_all':
903+
this.stopRingingIfPossible(this.calls.get(payload.room_id).callId);
904+
893905
for (const call of this.calls.values()) {
894906
call.hangup(CallErrorCode.UserHangup, false);
895907
}
896908
break;
897909
case 'answer': {
910+
this.stopRingingIfPossible(this.calls.get(payload.room_id).callId);
911+
898912
if (!this.calls.has(payload.room_id)) {
899913
return; // no call to answer
900914
}
@@ -929,6 +943,12 @@ export default class CallHandler extends EventEmitter {
929943
}
930944
};
931945

946+
private stopRingingIfPossible(callId: string): void {
947+
this.silencedCalls.delete(callId);
948+
if (this.areAnyCallsUnsilenced()) return;
949+
this.pause(AudioID.Ring);
950+
}
951+
932952
private async dialNumber(number: string) {
933953
const results = await this.pstnLookup(number);
934954
if (!results || results.length === 0 || !results[0].userid) {

src/components/structures/LeftPanelWidget.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ const LeftPanelWidget: React.FC = () => {
115115
aria-expanded={expanded}
116116
aria-level={1}
117117
onClick={() => {
118-
setExpanded(e => !e);
118+
setExpanded(!expanded);
119119
}}
120120
>
121121
<span className={classNames({

src/components/views/dialogs/WidgetCapabilitiesPromptDialog.tsx

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,6 @@ import { CapabilityText } from "../../../widgets/CapabilityText";
3333
import { replaceableComponent } from "../../../utils/replaceableComponent";
3434
import { lexicographicCompare } from "matrix-js-sdk/src/utils";
3535

36-
export function getRememberedCapabilitiesForWidget(widget: Widget): Capability[] {
37-
return JSON.parse(localStorage.getItem(`widget_${widget.id}_approved_caps`) || "[]");
38-
}
39-
40-
function setRememberedCapabilitiesForWidget(widget: Widget, caps: Capability[]) {
41-
localStorage.setItem(`widget_${widget.id}_approved_caps`, JSON.stringify(caps));
42-
}
43-
4436
interface IProps extends IDialogProps {
4537
requestedCapabilities: Set<Capability>;
4638
widget: Widget;
@@ -97,10 +89,7 @@ export default class WidgetCapabilitiesPromptDialog extends React.PureComponent<
9789
};
9890

9991
private closeAndTryRemember(approved: Capability[]) {
100-
if (this.state.rememberSelection) {
101-
setRememberedCapabilitiesForWidget(this.props.widget, approved);
102-
}
103-
this.props.onFinished({ approved });
92+
this.props.onFinished({ approved, remember: this.state.rememberSelection });
10493
}
10594

10695
public render() {

src/components/views/settings/tabs/room/SecurityRoomSettingsTab.tsx

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,12 @@ export default class SecurityRoomSettingsTab extends React.Component<IProps, ISt
149149
"To avoid these issues, create a <a>new encrypted room</a> for " +
150150
"the conversation you plan to have.",
151151
null,
152-
{ "a": (sub) => <a onClick={() => {
153-
dialog.close();
154-
this.createNewRoom(false, true);
155-
}}> { sub } </a> },
152+
{ "a": (sub) => <a
153+
className="mx_linkButton"
154+
onClick={() => {
155+
dialog.close();
156+
this.createNewRoom(false, true);
157+
}}> { sub } </a> },
156158
) } </p>
157159
</div>,
158160

@@ -248,10 +250,12 @@ export default class SecurityRoomSettingsTab extends React.Component<IProps, ISt
248250
"you plan to have.",
249251
null,
250252
{
251-
"a": (sub) => <a onClick={() => {
252-
dialog.close();
253-
this.createNewRoom(true, false);
254-
}}> { sub } </a>,
253+
"a": (sub) => <a
254+
className="mx_linkButton"
255+
onClick={() => {
256+
dialog.close();
257+
this.createNewRoom(true, false);
258+
}}> { sub } </a>,
255259
},
256260
) } </p>
257261
</div>,

src/stores/widgets/StopGapWidgetDriver.ts

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,7 @@ import { MatrixClientPeg } from "../../MatrixClientPeg";
3434
import ActiveRoomObserver from "../../ActiveRoomObserver";
3535
import Modal from "../../Modal";
3636
import WidgetOpenIDPermissionsDialog from "../../components/views/dialogs/WidgetOpenIDPermissionsDialog";
37-
import WidgetCapabilitiesPromptDialog, {
38-
getRememberedCapabilitiesForWidget,
39-
} from "../../components/views/dialogs/WidgetCapabilitiesPromptDialog";
37+
import WidgetCapabilitiesPromptDialog from "../../components/views/dialogs/WidgetCapabilitiesPromptDialog";
4038
import { WidgetPermissionCustomisations } from "../../customisations/WidgetPermissions";
4139
import { OIDCState, WidgetPermissionStore } from "./WidgetPermissionStore";
4240
import { WidgetType } from "../../widgets/WidgetType";
@@ -50,6 +48,14 @@ import { Room } from "matrix-js-sdk";
5048

5149
// TODO: Purge this from the universe
5250

51+
function getRememberedCapabilitiesForWidget(widget: Widget): Capability[] {
52+
return JSON.parse(localStorage.getItem(`widget_${widget.id}_approved_caps`) || "[]");
53+
}
54+
55+
function setRememberedCapabilitiesForWidget(widget: Widget, caps: Capability[]) {
56+
localStorage.setItem(`widget_${widget.id}_approved_caps`, JSON.stringify(caps));
57+
}
58+
5359
export class StopGapWidgetDriver extends WidgetDriver {
5460
private allowedCapabilities: Set<Capability>;
5561

@@ -102,6 +108,7 @@ export class StopGapWidgetDriver extends WidgetDriver {
102108
}
103109
}
104110
// TODO: Do something when the widget requests new capabilities not yet asked for
111+
let rememberApproved = false;
105112
if (missing.size > 0) {
106113
try {
107114
const [result] = await Modal.createTrackedDialog(
@@ -113,12 +120,19 @@ export class StopGapWidgetDriver extends WidgetDriver {
113120
widgetKind: this.forWidgetKind,
114121
}).finished;
115122
(result.approved || []).forEach(cap => allowedSoFar.add(cap));
123+
rememberApproved = result.remember;
116124
} catch (e) {
117125
console.error("Non-fatal error getting capabilities: ", e);
118126
}
119127
}
120128

121-
return new Set(iterableUnion(allowedSoFar, requested));
129+
const allAllowed = new Set(iterableUnion(allowedSoFar, requested));
130+
131+
if (rememberApproved) {
132+
setRememberedCapabilitiesForWidget(this.forWidget, Array.from(allAllowed));
133+
}
134+
135+
return allAllowed;
122136
}
123137

124138
public async sendEvent(
@@ -136,6 +150,9 @@ export class StopGapWidgetDriver extends WidgetDriver {
136150
if (stateKey !== null) {
137151
// state event
138152
r = await client.sendStateEvent(roomId, eventType, content, stateKey);
153+
} else if (eventType === EventType.RoomRedaction) {
154+
// special case: extract the `redacts` property and call redact
155+
r = await client.redactEvent(roomId, content['redacts']);
139156
} else {
140157
// message event
141158
r = await client.sendEvent(roomId, eventType, content);

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2036,10 +2036,10 @@ ajv@^8.0.1:
20362036
require-from-string "^2.0.2"
20372037
uri-js "^4.2.2"
20382038

2039-
allchange@^1.0.0:
2040-
version "1.0.1"
2041-
resolved "https://registry.yarnpkg.com/allchange/-/allchange-1.0.1.tgz#f32a75f65ab182d044d18e8baa43bd1c9be982f6"
2042-
integrity sha512-lj8HZcvQ04RsNqwLWjCYSDvchrW4nnjlOZ3z+VGhA78M7KootV0eRwlvTlYJec73jsz/Ts59kVArgooEsACOog==
2039+
allchange@^1.0.2:
2040+
version "1.0.2"
2041+
resolved "https://registry.yarnpkg.com/allchange/-/allchange-1.0.2.tgz#86b9190e12b7ede4f230ae763cbd504c48fd907b"
2042+
integrity sha512-qJv1t2yvBThkes8g/dPMt8CGu+04U+q5QjCJn2Ngp92edZU8DJBfKGyGXo7w1iV48LVuQKQDfMsdIWhP7zHdlQ==
20432043
dependencies:
20442044
"@actions/core" "^1.4.0"
20452045
"@actions/github" "^5.0.0"

0 commit comments

Comments
 (0)