@@ -14,8 +14,17 @@ See the License for the specific language governing permissions and
14
14
limitations under the License.
15
15
*/
16
16
17
- import { ClientEvent , MatrixEvent , MatrixEventEvent , SyncStateData , SyncState } from "matrix-js-sdk/src/matrix" ;
17
+ import {
18
+ ClientEvent ,
19
+ MatrixEvent ,
20
+ MatrixEventEvent ,
21
+ SyncStateData ,
22
+ SyncState ,
23
+ ToDeviceMessageId ,
24
+ } from "matrix-js-sdk/src/matrix" ;
18
25
import { sleep } from "matrix-js-sdk/src/utils" ;
26
+ import { v4 as uuidv4 } from "uuid" ;
27
+ import { logger } from "matrix-js-sdk/src/logger" ;
19
28
20
29
import SdkConfig from "../SdkConfig" ;
21
30
import sendBugReport from "../rageshake/submit-rageshake" ;
@@ -108,20 +117,28 @@ export default class AutoRageshakeStore extends AsyncStoreWithClient<IState> {
108
117
109
118
const now = new Date ( ) . getTime ( ) ;
110
119
if ( now - this . state . lastRageshakeTime < RAGESHAKE_INTERVAL ) {
120
+ logger . info (
121
+ `Not sending recipient-side autorageshake for event ${ ev . getId ( ) } /session ${ sessionId } : last rageshake was too recent` ,
122
+ ) ;
111
123
return ;
112
124
}
113
125
114
126
await this . updateState ( { lastRageshakeTime : now } ) ;
115
127
128
+ const senderUserId = ev . getSender ( ) ! ;
116
129
const eventInfo = {
117
130
event_id : ev . getId ( ) ,
118
131
room_id : ev . getRoomId ( ) ,
119
132
session_id : sessionId ,
120
133
device_id : wireContent . device_id ,
121
- user_id : ev . getSender ( ) ! ,
134
+ user_id : senderUserId ,
122
135
sender_key : wireContent . sender_key ,
123
136
} ;
124
137
138
+ logger . info ( `Sending recipient-side autorageshake for event ${ ev . getId ( ) } /session ${ sessionId } ` ) ;
139
+ // XXX: the rageshake server returns the URL for the github issue... which is typically absent for
140
+ // auto-uisis, because we've disabled creation of GH issues for them. So the `recipient_rageshake`
141
+ // field is broken.
125
142
const rageshakeURL = await sendBugReport ( SdkConfig . get ( ) . bug_report_endpoint_url , {
126
143
userText : "Auto-reporting decryption error (recipient)" ,
127
144
sendLogs : true ,
@@ -133,10 +150,11 @@ export default class AutoRageshakeStore extends AsyncStoreWithClient<IState> {
133
150
const messageContent = {
134
151
...eventInfo ,
135
152
recipient_rageshake : rageshakeURL ,
153
+ [ ToDeviceMessageId ] : uuidv4 ( ) ,
136
154
} ;
137
155
this . matrixClient ?. sendToDevice (
138
156
AUTO_RS_REQUEST ,
139
- new Map ( [ [ "messageContent.user_id" , new Map ( [ [ messageContent . device_id , messageContent ] ] ) ] ] ) ,
157
+ new Map ( [ [ senderUserId , new Map ( [ [ messageContent . device_id , messageContent ] ] ) ] ] ) ,
140
158
) ;
141
159
}
142
160
}
@@ -158,6 +176,9 @@ export default class AutoRageshakeStore extends AsyncStoreWithClient<IState> {
158
176
const now = new Date ( ) . getTime ( ) ;
159
177
if ( now - this . state . lastRageshakeTime > RAGESHAKE_INTERVAL ) {
160
178
await this . updateState ( { lastRageshakeTime : now } ) ;
179
+ logger . info (
180
+ `Sending sender-side autorageshake for event ${ messageContent [ "event_id" ] } /session ${ messageContent [ "session_id" ] } ` ,
181
+ ) ;
161
182
await sendBugReport ( SdkConfig . get ( ) . bug_report_endpoint_url , {
162
183
userText : `Auto-reporting decryption error (sender)\nRecipient rageshake: ${ recipientRageshake } ` ,
163
184
sendLogs : true ,
@@ -168,6 +189,10 @@ export default class AutoRageshakeStore extends AsyncStoreWithClient<IState> {
168
189
auto_uisi : JSON . stringify ( messageContent ) ,
169
190
} ,
170
191
} ) ;
192
+ } else {
193
+ logger . info (
194
+ `Not sending sender-side autorageshake for event ${ messageContent [ "event_id" ] } /session ${ messageContent [ "session_id" ] } : last rageshake was too recent` ,
195
+ ) ;
171
196
}
172
197
}
173
198
0 commit comments