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

Commit 8587ec8

Browse files
authored
Merge pull request #5769 from matrix-org/travis/voice-messages/exp
Labs feature: Early implementation of voice messages
2 parents c5f145e + d929d48 commit 8587ec8

File tree

18 files changed

+378
-6
lines changed

18 files changed

+378
-6
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@
8383
"matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop",
8484
"matrix-widget-api": "^0.1.0-beta.13",
8585
"minimist": "^1.2.5",
86+
"opus-recorder": "^8.0.3",
8687
"pako": "^2.0.3",
8788
"parse5": "^6.0.1",
8889
"png-chunks-extract": "^1.0.0",

res/css/_components.scss

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@
111111
@import "./views/elements/_AddressSelector.scss";
112112
@import "./views/elements/_AddressTile.scss";
113113
@import "./views/elements/_DesktopBuildsNotice.scss";
114-
@import "./views/elements/_DirectorySearchBox.scss";
115114
@import "./views/elements/_DesktopCapturerSourcePicker.scss";
115+
@import "./views/elements/_DirectorySearchBox.scss";
116116
@import "./views/elements/_Dropdown.scss";
117117
@import "./views/elements/_EditableItemList.scss";
118118
@import "./views/elements/_ErrorBoundary.scss";
@@ -211,20 +211,21 @@
211211
@import "./views/rooms/_SendMessageComposer.scss";
212212
@import "./views/rooms/_Stickers.scss";
213213
@import "./views/rooms/_TopUnreadMessagesBar.scss";
214+
@import "./views/rooms/_VoiceRecordComposerTile.scss";
214215
@import "./views/rooms/_WhoIsTypingTile.scss";
215216
@import "./views/settings/_AvatarSetting.scss";
216217
@import "./views/settings/_CrossSigningPanel.scss";
217218
@import "./views/settings/_DevicesPanel.scss";
218219
@import "./views/settings/_E2eAdvancedPanel.scss";
219220
@import "./views/settings/_EmailAddresses.scss";
220-
@import "./views/settings/_SpellCheckLanguages.scss";
221221
@import "./views/settings/_IntegrationManager.scss";
222222
@import "./views/settings/_Notifications.scss";
223223
@import "./views/settings/_PhoneNumbers.scss";
224224
@import "./views/settings/_ProfileSettings.scss";
225225
@import "./views/settings/_SecureBackupPanel.scss";
226226
@import "./views/settings/_SetIdServer.scss";
227227
@import "./views/settings/_SetIntegrationManager.scss";
228+
@import "./views/settings/_SpellCheckLanguages.scss";
228229
@import "./views/settings/_UpdateCheckButton.scss";
229230
@import "./views/settings/tabs/_SettingsTab.scss";
230231
@import "./views/settings/tabs/room/_GeneralRoomSettingsTab.scss";

res/css/views/rooms/_BasicMessageComposer.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ limitations under the License.
6666
}
6767
}
6868
}
69+
70+
&.mx_BasicMessageComposer_input_disabled {
71+
pointer-events: none;
72+
cursor: not-allowed;
73+
}
6974
}
7075

7176
.mx_BasicMessageComposer_AutoCompleteWrapper {

res/css/views/rooms/_MessageComposer.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,10 @@ limitations under the License.
227227
mask-image: url('$(res)/img/element-icons/room/composer/attach.svg');
228228
}
229229

230+
.mx_MessageComposer_voiceMessage::before {
231+
mask-image: url('$(res)/img/voip/mic-on-mask.svg');
232+
}
233+
230234
.mx_MessageComposer_emoji::before {
231235
mask-image: url('$(res)/img/element-icons/room/composer/emoji.svg');
232236
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
Copyright 2021 The Matrix.org Foundation C.I.C.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
.mx_VoiceRecordComposerTile_stop {
18+
// 28px plus a 2px border makes this a 32px square (as intended)
19+
width: 28px;
20+
height: 28px;
21+
border: 2px solid $voice-record-stop-border-color;
22+
border-radius: 32px;
23+
margin-right: 16px; // between us and the send button
24+
position: relative;
25+
26+
&::after {
27+
content: '';
28+
width: 14px;
29+
height: 14px;
30+
position: absolute;
31+
top: 7px;
32+
left: 7px;
33+
border-radius: 2px;
34+
background-color: $voice-record-stop-symbol-color;
35+
}
36+
}

res/img/voip/mic-on-mask.svg

Lines changed: 3 additions & 0 deletions
Loading

res/themes/legacy-light/css/_legacy-light.scss

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,9 @@ $roomsublist-skeleton-ui-bg: linear-gradient(180deg, #ffffff 0%, #ffffff00 100%)
189189
$groupFilterPanel-divider-color: $roomlist-header-color;
190190
$space-button-outline-color: #E3E8F0;
191191

192+
$voice-record-stop-border-color: #E3E8F0;
193+
$voice-record-stop-symbol-color: $warning-color;
194+
192195
$roomtile-preview-color: #9e9e9e;
193196
$roomtile-default-badge-bg-color: #61708b;
194197
$roomtile-selected-bg-color: #fff;

res/themes/light/css/_light.scss

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,9 @@ $roomsublist-skeleton-ui-bg: linear-gradient(180deg, #ffffff 0%, #ffffff00 100%)
180180
$groupFilterPanel-divider-color: $roomlist-header-color;
181181
$space-button-outline-color: #E3E8F0;
182182

183+
$voice-record-stop-border-color: #E3E8F0;
184+
$voice-record-stop-symbol-color: $warning-color;
185+
183186
$roomtile-preview-color: $secondary-fg-color;
184187
$roomtile-default-badge-bg-color: #61708b;
185188
$roomtile-selected-bg-color: #FFF;

src/@types/global.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import {ModalWidgetStore} from "../stores/ModalWidgetStore";
3939
import { WidgetLayoutStore } from "../stores/widgets/WidgetLayoutStore";
4040
import VoipUserMapper from "../VoipUserMapper";
4141
import {SpaceStoreClass} from "../stores/SpaceStore";
42+
import {VoiceRecorder} from "../voice/VoiceRecorder";
4243

4344
declare global {
4445
interface Window {
@@ -70,6 +71,7 @@ declare global {
7071
mxModalWidgetStore: ModalWidgetStore;
7172
mxVoipUserMapper: VoipUserMapper;
7273
mxSpaceStore: SpaceStoreClass;
74+
mxVoiceRecorder: typeof VoiceRecorder;
7375
}
7476

7577
interface Document {

src/components/views/messages/MessageEvent.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ export default class MessageEvent extends React.Component {
7171
'm.file': sdk.getComponent('messages.MFileBody'),
7272
'm.audio': sdk.getComponent('messages.MAudioBody'),
7373
'm.video': sdk.getComponent('messages.MVideoBody'),
74+
75+
// TODO: @@ TravisR: Use labs flag determination.
76+
// MSC: https://github.com/matrix-org/matrix-doc/pull/2516
77+
'org.matrix.msc2516.voice': sdk.getComponent('messages.MAudioBody'),
7478
};
7579
const evTypes = {
7680
'm.sticker': sdk.getComponent('messages.MStickerBody'),

0 commit comments

Comments
 (0)