@awiki/dsh-plugin 0.3.7-dsh-test.20260831.2 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -58
- package/README.zh.md +51 -45
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/cordis.patch.yml +8 -7
- package/lib/client.js +1119 -1340
- package/lib/client.js.map +1 -1
- package/lib/index.js +809 -1085
- package/lib/provider.js +17 -70
- package/lib/{sdk-adapter-FGaOi8It.mjs → sdk-adapter--trNlr-T.mjs} +84 -168
- package/lib/typert.host.js +178 -406
- package/lib/typert.remote-client.d.ts +7 -19
- package/lib/typert.remote-client.d.ts.map +1 -1
- package/lib/typert.remote-client.js +178 -406
- package/lib/types/base64.d.ts +4 -0
- package/lib/types/base64.d.ts.map +1 -0
- package/lib/types/base64.js +28 -0
- package/lib/types/base64.js.map +1 -0
- package/lib/types/client/AwikiIdentityAccess.d.ts +5 -6
- package/lib/types/client/AwikiIdentityAccess.d.ts.map +1 -1
- package/lib/types/client/AwikiIdentityAccess.js +27 -88
- package/lib/types/client/AwikiIdentityAccess.js.map +1 -1
- package/lib/types/client/AwikiMail.d.ts +1 -1
- package/lib/types/client/AwikiMail.d.ts.map +1 -1
- package/lib/types/client/AwikiMail.js +130 -6
- package/lib/types/client/AwikiMail.js.map +1 -1
- package/lib/types/client/AwikiOverlay.d.ts.map +1 -1
- package/lib/types/client/AwikiOverlay.js +12 -5
- package/lib/types/client/AwikiOverlay.js.map +1 -1
- package/lib/types/client/AwikiRecoveryForm.d.ts.map +1 -1
- package/lib/types/client/AwikiRecoveryForm.js +1 -1
- package/lib/types/client/AwikiRecoveryForm.js.map +1 -1
- package/lib/types/client/controller.d.ts +34 -20
- package/lib/types/client/controller.d.ts.map +1 -1
- package/lib/types/client/controller.js +203 -56
- package/lib/types/client/controller.js.map +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/index.js +4 -8
- package/lib/types/client/index.js.map +1 -1
- package/lib/types/client/mail-attachment.d.ts +40 -0
- package/lib/types/client/mail-attachment.d.ts.map +1 -0
- package/lib/types/client/mail-attachment.js +187 -0
- package/lib/types/client/mail-attachment.js.map +1 -0
- package/lib/types/client/settings-locales.js +8 -8
- package/lib/types/client/settings-locales.js.map +1 -1
- package/lib/types/client/slots.d.ts +10 -10
- package/lib/types/client/slots.d.ts.map +1 -1
- package/lib/types/conversation-preferences.d.ts.map +1 -1
- package/lib/types/conversation-preferences.js +17 -0
- package/lib/types/conversation-preferences.js.map +1 -1
- package/lib/types/index.d.ts +30 -59
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +464 -805
- package/lib/types/index.js.map +1 -1
- package/lib/types/listener-state.d.ts +3 -5
- package/lib/types/listener-state.d.ts.map +1 -1
- package/lib/types/listener-state.js +13 -28
- package/lib/types/listener-state.js.map +1 -1
- package/lib/types/listener.d.ts +32 -9
- package/lib/types/listener.d.ts.map +1 -1
- package/lib/types/listener.js +127 -11
- package/lib/types/listener.js.map +1 -1
- package/lib/types/mail.d.ts +28 -2
- package/lib/types/mail.d.ts.map +1 -1
- package/lib/types/mail.js +79 -2
- package/lib/types/mail.js.map +1 -1
- package/lib/types/profile-state.d.ts +17 -0
- package/lib/types/profile-state.d.ts.map +1 -0
- package/lib/types/profile-state.js +58 -0
- package/lib/types/profile-state.js.map +1 -0
- package/lib/types/provider-api.d.ts +38 -102
- package/lib/types/provider-api.d.ts.map +1 -1
- package/lib/types/provider.d.ts +2 -8
- package/lib/types/provider.d.ts.map +1 -1
- package/lib/types/provider.js +16 -73
- package/lib/types/provider.js.map +1 -1
- package/lib/types/sdk-adapter.d.ts +7 -32
- package/lib/types/sdk-adapter.d.ts.map +1 -1
- package/lib/types/sdk-adapter.js +104 -163
- package/lib/types/sdk-adapter.js.map +1 -1
- package/lib/types/sent-mail-store.d.ts +7 -2
- package/lib/types/sent-mail-store.d.ts.map +1 -1
- package/lib/types/sent-mail-store.js +125 -23
- package/lib/types/sent-mail-store.js.map +1 -1
- package/lib/types/tools.d.ts +1 -1
- package/lib/types/tools.d.ts.map +1 -1
- package/lib/types/tools.js +20 -4
- package/lib/types/tools.js.map +1 -1
- package/lib/types/types.d.ts +66 -77
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/types.js.map +1 -1
- package/package.json +15 -20
- package/lib/types/client/AwikiDevices.d.ts +0 -28
- package/lib/types/client/AwikiDevices.d.ts.map +0 -1
- package/lib/types/client/AwikiDevices.js +0 -85
- package/lib/types/client/AwikiDevices.js.map +0 -1
- package/lib/types/realtime-supervisor.d.ts +0 -54
- package/lib/types/realtime-supervisor.d.ts.map +0 -1
- package/lib/types/realtime-supervisor.js +0 -242
- package/lib/types/realtime-supervisor.js.map +0 -1
package/lib/client.js
CHANGED
|
@@ -589,7 +589,7 @@ window.__ModuleLoader__.load({
|
|
|
589
589
|
const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;
|
|
590
590
|
const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/;
|
|
591
591
|
const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;
|
|
592
|
-
const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;
|
|
592
|
+
const base64$1 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;
|
|
593
593
|
const base64url = /^[A-Za-z0-9_-]*$/;
|
|
594
594
|
const httpProtocol = /^https?$/;
|
|
595
595
|
const e164 = /^\+[1-9]\d{6,14}$/;
|
|
@@ -1326,7 +1326,7 @@ window.__ModuleLoader__.load({
|
|
|
1326
1326
|
}
|
|
1327
1327
|
}
|
|
1328
1328
|
const $ZodBase64 = /*@__PURE__*/ $constructor("$ZodBase64", (inst, def) => {
|
|
1329
|
-
def.pattern ?? (def.pattern = base64);
|
|
1329
|
+
def.pattern ?? (def.pattern = base64$1);
|
|
1330
1330
|
$ZodStringFormat.init(inst, def);
|
|
1331
1331
|
inst._zod.bag.contentEncoding = "base64";
|
|
1332
1332
|
inst._zod.check = (payload) => {
|
|
@@ -4112,6 +4112,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4112
4112
|
literal("forbidden"),
|
|
4113
4113
|
literal("identity-recovery-required"),
|
|
4114
4114
|
literal("conflict"),
|
|
4115
|
+
literal("state-in-use"),
|
|
4115
4116
|
literal("rate-limited"),
|
|
4116
4117
|
literal("group-membership-required"),
|
|
4117
4118
|
literal("group-identity-stale"),
|
|
@@ -4146,12 +4147,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4146
4147
|
"failureCode": string().readonly().optional(),
|
|
4147
4148
|
"retryable": boolean().readonly(),
|
|
4148
4149
|
"localOrdinaryDataWillMigrate": boolean().readonly(),
|
|
4149
|
-
"otherDevicesMustRejoin": boolean().readonly()
|
|
4150
|
+
"otherDevicesMustRejoin": boolean().readonly(),
|
|
4151
|
+
"unsupportedE2eeGroupCount": number().readonly(),
|
|
4152
|
+
"unsupportedDidOnlyGroupCount": number().readonly()
|
|
4150
4153
|
}).readonly()
|
|
4151
4154
|
})]);
|
|
4152
4155
|
const _awiki_dsh_plugin_awiki_addGroupMember_parameter_0$schema = object({
|
|
4153
4156
|
"member": string().readonly(),
|
|
4154
|
-
"role": union([literal("
|
|
4157
|
+
"role": union([literal("admin"), literal("member")]).readonly().optional(),
|
|
4155
4158
|
"groupDid": intersection(string(), unknown()).readonly()
|
|
4156
4159
|
});
|
|
4157
4160
|
const _awiki_dsh_plugin_awiki_addGroupMember_result$schema = union([object({
|
|
@@ -4169,6 +4172,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4169
4172
|
literal("forbidden"),
|
|
4170
4173
|
literal("identity-recovery-required"),
|
|
4171
4174
|
literal("conflict"),
|
|
4175
|
+
literal("state-in-use"),
|
|
4172
4176
|
literal("rate-limited"),
|
|
4173
4177
|
literal("group-membership-required"),
|
|
4174
4178
|
literal("group-identity-stale"),
|
|
@@ -4191,139 +4195,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4191
4195
|
"handle": intersection(string(), unknown()).readonly().optional()
|
|
4192
4196
|
}).readonly()
|
|
4193
4197
|
})]);
|
|
4194
|
-
const _awiki_dsh_plugin_awiki_approveDeviceJoin_parameter_0$schema = object({
|
|
4195
|
-
"enteredSas": string().readonly(),
|
|
4196
|
-
"confirmation": string().readonly(),
|
|
4197
|
-
"requestRef": string().readonly()
|
|
4198
|
-
});
|
|
4199
|
-
const _awiki_dsh_plugin_awiki_approveDeviceJoin_result$schema = union([object({
|
|
4200
|
-
"ok": literal(false).readonly(),
|
|
4201
|
-
"error": object({
|
|
4202
|
-
"code": union([
|
|
4203
|
-
literal("not-registered"),
|
|
4204
|
-
literal("signed-out"),
|
|
4205
|
-
literal("already-registered"),
|
|
4206
|
-
literal("invalid-request"),
|
|
4207
|
-
literal("invalid-otp"),
|
|
4208
|
-
literal("challenge-expired"),
|
|
4209
|
-
literal("handle-unavailable"),
|
|
4210
|
-
literal("not-found"),
|
|
4211
|
-
literal("forbidden"),
|
|
4212
|
-
literal("identity-recovery-required"),
|
|
4213
|
-
literal("conflict"),
|
|
4214
|
-
literal("rate-limited"),
|
|
4215
|
-
literal("group-membership-required"),
|
|
4216
|
-
literal("group-identity-stale"),
|
|
4217
|
-
literal("attachment-too-large"),
|
|
4218
|
-
literal("summary-unavailable"),
|
|
4219
|
-
literal("summary-timeout"),
|
|
4220
|
-
literal("summary-cancelled"),
|
|
4221
|
-
literal("summary-invalid-output"),
|
|
4222
|
-
literal("summary-failed"),
|
|
4223
|
-
literal("delivery-unknown"),
|
|
4224
|
-
literal("network"),
|
|
4225
|
-
literal("remote")
|
|
4226
|
-
]).readonly(),
|
|
4227
|
-
"message": string().readonly()
|
|
4228
|
-
}).readonly()
|
|
4229
|
-
}), object({
|
|
4230
|
-
"ok": literal(true).readonly(),
|
|
4231
|
-
"value": object({
|
|
4232
|
-
"requestRef": string().readonly(),
|
|
4233
|
-
"phase": union([
|
|
4234
|
-
literal("pending"),
|
|
4235
|
-
literal("verifying"),
|
|
4236
|
-
literal("sas-ready"),
|
|
4237
|
-
literal("authorized"),
|
|
4238
|
-
literal("cancelled"),
|
|
4239
|
-
literal("rejected"),
|
|
4240
|
-
literal("expired")
|
|
4241
|
-
]).readonly(),
|
|
4242
|
-
"expiresAt": string().readonly(),
|
|
4243
|
-
"sas": string().readonly().optional()
|
|
4244
|
-
}).readonly()
|
|
4245
|
-
})]);
|
|
4246
|
-
const _awiki_dsh_plugin_awiki_beginDeviceJoin_result$schema = union([object({
|
|
4247
|
-
"ok": literal(false).readonly(),
|
|
4248
|
-
"error": object({
|
|
4249
|
-
"code": union([
|
|
4250
|
-
literal("not-registered"),
|
|
4251
|
-
literal("signed-out"),
|
|
4252
|
-
literal("already-registered"),
|
|
4253
|
-
literal("invalid-request"),
|
|
4254
|
-
literal("invalid-otp"),
|
|
4255
|
-
literal("challenge-expired"),
|
|
4256
|
-
literal("handle-unavailable"),
|
|
4257
|
-
literal("not-found"),
|
|
4258
|
-
literal("forbidden"),
|
|
4259
|
-
literal("identity-recovery-required"),
|
|
4260
|
-
literal("conflict"),
|
|
4261
|
-
literal("rate-limited"),
|
|
4262
|
-
literal("group-membership-required"),
|
|
4263
|
-
literal("group-identity-stale"),
|
|
4264
|
-
literal("attachment-too-large"),
|
|
4265
|
-
literal("summary-unavailable"),
|
|
4266
|
-
literal("summary-timeout"),
|
|
4267
|
-
literal("summary-cancelled"),
|
|
4268
|
-
literal("summary-invalid-output"),
|
|
4269
|
-
literal("summary-failed"),
|
|
4270
|
-
literal("delivery-unknown"),
|
|
4271
|
-
literal("network"),
|
|
4272
|
-
literal("remote")
|
|
4273
|
-
]).readonly(),
|
|
4274
|
-
"message": string().readonly()
|
|
4275
|
-
}).readonly()
|
|
4276
|
-
}), object({
|
|
4277
|
-
"ok": literal(true).readonly(),
|
|
4278
|
-
"value": object({
|
|
4279
|
-
"phase": union([
|
|
4280
|
-
literal("pending"),
|
|
4281
|
-
literal("verifying"),
|
|
4282
|
-
literal("sas-ready"),
|
|
4283
|
-
literal("authorized"),
|
|
4284
|
-
literal("cancelled"),
|
|
4285
|
-
literal("rejected"),
|
|
4286
|
-
literal("expired")
|
|
4287
|
-
]).readonly(),
|
|
4288
|
-
"expiresAt": string().readonly(),
|
|
4289
|
-
"sas": string().readonly().optional(),
|
|
4290
|
-
"completed": boolean().readonly()
|
|
4291
|
-
}).readonly()
|
|
4292
|
-
})]);
|
|
4293
|
-
const _awiki_dsh_plugin_awiki_cancelDeviceJoin_result$schema = union([object({
|
|
4294
|
-
"ok": literal(false).readonly(),
|
|
4295
|
-
"error": object({
|
|
4296
|
-
"code": union([
|
|
4297
|
-
literal("not-registered"),
|
|
4298
|
-
literal("signed-out"),
|
|
4299
|
-
literal("already-registered"),
|
|
4300
|
-
literal("invalid-request"),
|
|
4301
|
-
literal("invalid-otp"),
|
|
4302
|
-
literal("challenge-expired"),
|
|
4303
|
-
literal("handle-unavailable"),
|
|
4304
|
-
literal("not-found"),
|
|
4305
|
-
literal("forbidden"),
|
|
4306
|
-
literal("identity-recovery-required"),
|
|
4307
|
-
literal("conflict"),
|
|
4308
|
-
literal("rate-limited"),
|
|
4309
|
-
literal("group-membership-required"),
|
|
4310
|
-
literal("group-identity-stale"),
|
|
4311
|
-
literal("attachment-too-large"),
|
|
4312
|
-
literal("summary-unavailable"),
|
|
4313
|
-
literal("summary-timeout"),
|
|
4314
|
-
literal("summary-cancelled"),
|
|
4315
|
-
literal("summary-invalid-output"),
|
|
4316
|
-
literal("summary-failed"),
|
|
4317
|
-
literal("delivery-unknown"),
|
|
4318
|
-
literal("network"),
|
|
4319
|
-
literal("remote")
|
|
4320
|
-
]).readonly(),
|
|
4321
|
-
"message": string().readonly()
|
|
4322
|
-
}).readonly()
|
|
4323
|
-
}), object({
|
|
4324
|
-
"ok": literal(true).readonly(),
|
|
4325
|
-
"value": object({ "completed": literal(true).readonly() }).readonly()
|
|
4326
|
-
})]);
|
|
4327
4198
|
const _awiki_dsh_plugin_awiki_clearLocalData_parameter_0$schema = object({ "confirmation": string().readonly() });
|
|
4328
4199
|
const _awiki_dsh_plugin_awiki_clearLocalData_result$schema = union([object({
|
|
4329
4200
|
"ok": literal(false).readonly(),
|
|
@@ -4340,6 +4211,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4340
4211
|
literal("forbidden"),
|
|
4341
4212
|
literal("identity-recovery-required"),
|
|
4342
4213
|
literal("conflict"),
|
|
4214
|
+
literal("state-in-use"),
|
|
4343
4215
|
literal("rate-limited"),
|
|
4344
4216
|
literal("group-membership-required"),
|
|
4345
4217
|
literal("group-identity-stale"),
|
|
@@ -4378,6 +4250,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4378
4250
|
literal("forbidden"),
|
|
4379
4251
|
literal("identity-recovery-required"),
|
|
4380
4252
|
literal("conflict"),
|
|
4253
|
+
literal("state-in-use"),
|
|
4381
4254
|
literal("rate-limited"),
|
|
4382
4255
|
literal("group-membership-required"),
|
|
4383
4256
|
literal("group-identity-stale"),
|
|
@@ -4424,6 +4297,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4424
4297
|
literal("forbidden"),
|
|
4425
4298
|
literal("identity-recovery-required"),
|
|
4426
4299
|
literal("conflict"),
|
|
4300
|
+
literal("state-in-use"),
|
|
4427
4301
|
literal("rate-limited"),
|
|
4428
4302
|
literal("group-membership-required"),
|
|
4429
4303
|
literal("group-identity-stale"),
|
|
@@ -4458,6 +4332,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4458
4332
|
literal("forbidden"),
|
|
4459
4333
|
literal("identity-recovery-required"),
|
|
4460
4334
|
literal("conflict"),
|
|
4335
|
+
literal("state-in-use"),
|
|
4461
4336
|
literal("rate-limited"),
|
|
4462
4337
|
literal("group-membership-required"),
|
|
4463
4338
|
literal("group-identity-stale"),
|
|
@@ -4496,6 +4371,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4496
4371
|
literal("forbidden"),
|
|
4497
4372
|
literal("identity-recovery-required"),
|
|
4498
4373
|
literal("conflict"),
|
|
4374
|
+
literal("state-in-use"),
|
|
4499
4375
|
literal("rate-limited"),
|
|
4500
4376
|
literal("group-membership-required"),
|
|
4501
4377
|
literal("group-identity-stale"),
|
|
@@ -4524,7 +4400,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4524
4400
|
"bytesBase64": string().readonly()
|
|
4525
4401
|
}).readonly()
|
|
4526
4402
|
})]);
|
|
4527
|
-
const
|
|
4403
|
+
const _awiki_dsh_plugin_awiki_downloadMailAttachment_parameter_0$schema = object({
|
|
4404
|
+
"localMessageId": intersection(string(), unknown()).readonly(),
|
|
4405
|
+
"attachmentIndex": number().readonly()
|
|
4406
|
+
});
|
|
4407
|
+
const _awiki_dsh_plugin_awiki_downloadMailAttachment_result$schema = union([object({
|
|
4528
4408
|
"ok": literal(false).readonly(),
|
|
4529
4409
|
"error": object({
|
|
4530
4410
|
"code": union([
|
|
@@ -4539,6 +4419,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4539
4419
|
literal("forbidden"),
|
|
4540
4420
|
literal("identity-recovery-required"),
|
|
4541
4421
|
literal("conflict"),
|
|
4422
|
+
literal("state-in-use"),
|
|
4542
4423
|
literal("rate-limited"),
|
|
4543
4424
|
literal("group-membership-required"),
|
|
4544
4425
|
literal("group-identity-stale"),
|
|
@@ -4557,12 +4438,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4557
4438
|
}), object({
|
|
4558
4439
|
"ok": literal(true).readonly(),
|
|
4559
4440
|
"value": object({
|
|
4560
|
-
"
|
|
4561
|
-
"
|
|
4562
|
-
"
|
|
4441
|
+
"fileName": string().readonly(),
|
|
4442
|
+
"contentType": string().readonly(),
|
|
4443
|
+
"sizeBytes": number().readonly(),
|
|
4444
|
+
"sha256": string().readonly(),
|
|
4445
|
+
"bytesBase64": string().readonly()
|
|
4563
4446
|
}).readonly()
|
|
4564
4447
|
})]);
|
|
4565
|
-
const
|
|
4448
|
+
const _awiki_dsh_plugin_awiki_getConfig_result$schema = union([object({
|
|
4566
4449
|
"ok": literal(false).readonly(),
|
|
4567
4450
|
"error": object({
|
|
4568
4451
|
"code": union([
|
|
@@ -4577,6 +4460,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4577
4460
|
literal("forbidden"),
|
|
4578
4461
|
literal("identity-recovery-required"),
|
|
4579
4462
|
literal("conflict"),
|
|
4463
|
+
literal("state-in-use"),
|
|
4580
4464
|
literal("rate-limited"),
|
|
4581
4465
|
literal("group-membership-required"),
|
|
4582
4466
|
literal("group-identity-stale"),
|
|
@@ -4594,30 +4478,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4594
4478
|
}).readonly()
|
|
4595
4479
|
}), object({
|
|
4596
4480
|
"ok": literal(true).readonly(),
|
|
4597
|
-
"value": object({
|
|
4598
|
-
"
|
|
4599
|
-
|
|
4600
|
-
|
|
4601
|
-
|
|
4602
|
-
|
|
4603
|
-
|
|
4604
|
-
|
|
4605
|
-
|
|
4606
|
-
|
|
4607
|
-
"kind": literal("direct").readonly(),
|
|
4608
|
-
"id": intersection(string(), unknown()).readonly(),
|
|
4609
|
-
"peerDid": intersection(string(), unknown()).readonly(),
|
|
4610
|
-
"peerHandle": intersection(string(), unknown()).readonly().optional(),
|
|
4611
|
-
"displayName": string().readonly().optional(),
|
|
4612
|
-
"title": string().readonly(),
|
|
4613
|
-
"unreadCount": number().readonly().optional(),
|
|
4614
|
-
"lastMessageAt": number().readonly().optional(),
|
|
4615
|
-
"lastMessagePreview": string().readonly().optional()
|
|
4616
|
-
})]).readonly(),
|
|
4617
|
-
"hiddenAt": number().readonly()
|
|
4618
|
-
})).readonly() }).readonly()
|
|
4481
|
+
"value": object({
|
|
4482
|
+
"tenantDomain": string().readonly(),
|
|
4483
|
+
"pollIntervalMs": number().readonly(),
|
|
4484
|
+
"attachmentMaxBytes": number().readonly(),
|
|
4485
|
+
"mailAttachmentMaxCount": number().readonly(),
|
|
4486
|
+
"mailAttachmentMaxBytes": number().readonly(),
|
|
4487
|
+
"mailAttachmentTotalMaxBytes": number().readonly(),
|
|
4488
|
+
"profileName": string().readonly().optional(),
|
|
4489
|
+
"legacySharedStateDetected": boolean().readonly().optional()
|
|
4490
|
+
}).readonly()
|
|
4619
4491
|
})]);
|
|
4620
|
-
const
|
|
4492
|
+
const _awiki_dsh_plugin_awiki_getConversationPreferences_result$schema = union([object({
|
|
4621
4493
|
"ok": literal(false).readonly(),
|
|
4622
4494
|
"error": object({
|
|
4623
4495
|
"code": union([
|
|
@@ -4632,6 +4504,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4632
4504
|
literal("forbidden"),
|
|
4633
4505
|
literal("identity-recovery-required"),
|
|
4634
4506
|
literal("conflict"),
|
|
4507
|
+
literal("state-in-use"),
|
|
4635
4508
|
literal("rate-limited"),
|
|
4636
4509
|
literal("group-membership-required"),
|
|
4637
4510
|
literal("group-identity-stale"),
|
|
@@ -4649,20 +4522,31 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4649
4522
|
}).readonly()
|
|
4650
4523
|
}), object({
|
|
4651
4524
|
"ok": literal(true).readonly(),
|
|
4652
|
-
"value":
|
|
4653
|
-
"
|
|
4654
|
-
|
|
4655
|
-
|
|
4656
|
-
|
|
4657
|
-
|
|
4658
|
-
|
|
4659
|
-
|
|
4660
|
-
|
|
4661
|
-
|
|
4662
|
-
|
|
4663
|
-
|
|
4664
|
-
|
|
4665
|
-
|
|
4525
|
+
"value": object({
|
|
4526
|
+
"hiddenConversations": array(object({
|
|
4527
|
+
"conversation": union([object({
|
|
4528
|
+
"kind": literal("group").readonly(),
|
|
4529
|
+
"id": intersection(string(), unknown()).readonly(),
|
|
4530
|
+
"groupDid": intersection(string(), unknown()).readonly(),
|
|
4531
|
+
"title": string().readonly(),
|
|
4532
|
+
"unreadCount": number().readonly().optional(),
|
|
4533
|
+
"lastMessageAt": number().readonly().optional(),
|
|
4534
|
+
"lastMessagePreview": string().readonly().optional()
|
|
4535
|
+
}), object({
|
|
4536
|
+
"kind": literal("direct").readonly(),
|
|
4537
|
+
"id": intersection(string(), unknown()).readonly(),
|
|
4538
|
+
"peerDid": intersection(string(), unknown()).readonly(),
|
|
4539
|
+
"peerHandle": intersection(string(), unknown()).readonly().optional(),
|
|
4540
|
+
"displayName": string().readonly().optional(),
|
|
4541
|
+
"title": string().readonly(),
|
|
4542
|
+
"unreadCount": number().readonly().optional(),
|
|
4543
|
+
"lastMessageAt": number().readonly().optional(),
|
|
4544
|
+
"lastMessagePreview": string().readonly().optional()
|
|
4545
|
+
})]).readonly(),
|
|
4546
|
+
"hiddenAt": number().readonly()
|
|
4547
|
+
})).readonly(),
|
|
4548
|
+
"dismissedGroupRecoverySignature": string().readonly().optional()
|
|
4549
|
+
}).readonly()
|
|
4666
4550
|
})]);
|
|
4667
4551
|
const _awiki_dsh_plugin_awiki_getGroup_parameter_0$schema = object({ "groupDid": intersection(string(), unknown()).readonly() });
|
|
4668
4552
|
const _awiki_dsh_plugin_awiki_getGroup_result$schema = union([object({
|
|
@@ -4680,6 +4564,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4680
4564
|
literal("forbidden"),
|
|
4681
4565
|
literal("identity-recovery-required"),
|
|
4682
4566
|
literal("conflict"),
|
|
4567
|
+
literal("state-in-use"),
|
|
4683
4568
|
literal("rate-limited"),
|
|
4684
4569
|
literal("group-membership-required"),
|
|
4685
4570
|
literal("group-identity-stale"),
|
|
@@ -4727,6 +4612,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4727
4612
|
literal("forbidden"),
|
|
4728
4613
|
literal("identity-recovery-required"),
|
|
4729
4614
|
literal("conflict"),
|
|
4615
|
+
literal("state-in-use"),
|
|
4730
4616
|
literal("rate-limited"),
|
|
4731
4617
|
literal("group-membership-required"),
|
|
4732
4618
|
literal("group-identity-stale"),
|
|
@@ -4795,6 +4681,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4795
4681
|
literal("forbidden"),
|
|
4796
4682
|
literal("identity-recovery-required"),
|
|
4797
4683
|
literal("conflict"),
|
|
4684
|
+
literal("state-in-use"),
|
|
4798
4685
|
literal("rate-limited"),
|
|
4799
4686
|
literal("group-membership-required"),
|
|
4800
4687
|
literal("group-identity-stale"),
|
|
@@ -4839,6 +4726,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4839
4726
|
literal("forbidden"),
|
|
4840
4727
|
literal("identity-recovery-required"),
|
|
4841
4728
|
literal("conflict"),
|
|
4729
|
+
literal("state-in-use"),
|
|
4842
4730
|
literal("rate-limited"),
|
|
4843
4731
|
literal("group-membership-required"),
|
|
4844
4732
|
literal("group-identity-stale"),
|
|
@@ -4907,6 +4795,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4907
4795
|
literal("forbidden"),
|
|
4908
4796
|
literal("identity-recovery-required"),
|
|
4909
4797
|
literal("conflict"),
|
|
4798
|
+
literal("state-in-use"),
|
|
4910
4799
|
literal("rate-limited"),
|
|
4911
4800
|
literal("group-membership-required"),
|
|
4912
4801
|
literal("group-identity-stale"),
|
|
@@ -4945,6 +4834,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4945
4834
|
literal("forbidden"),
|
|
4946
4835
|
literal("identity-recovery-required"),
|
|
4947
4836
|
literal("conflict"),
|
|
4837
|
+
literal("state-in-use"),
|
|
4948
4838
|
literal("rate-limited"),
|
|
4949
4839
|
literal("group-membership-required"),
|
|
4950
4840
|
literal("group-identity-stale"),
|
|
@@ -4987,6 +4877,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4987
4877
|
literal("forbidden"),
|
|
4988
4878
|
literal("identity-recovery-required"),
|
|
4989
4879
|
literal("conflict"),
|
|
4880
|
+
literal("state-in-use"),
|
|
4990
4881
|
literal("rate-limited"),
|
|
4991
4882
|
literal("group-membership-required"),
|
|
4992
4883
|
literal("group-identity-stale"),
|
|
@@ -5021,7 +4912,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5021
4912
|
"failureCode": string().readonly().optional(),
|
|
5022
4913
|
"retryable": boolean().readonly(),
|
|
5023
4914
|
"localOrdinaryDataWillMigrate": boolean().readonly(),
|
|
5024
|
-
"otherDevicesMustRejoin": boolean().readonly()
|
|
4915
|
+
"otherDevicesMustRejoin": boolean().readonly(),
|
|
4916
|
+
"unsupportedE2eeGroupCount": number().readonly(),
|
|
4917
|
+
"unsupportedDidOnlyGroupCount": number().readonly()
|
|
5025
4918
|
}).readonly()
|
|
5026
4919
|
})]);
|
|
5027
4920
|
const _awiki_dsh_plugin_awiki_getSession_result$schema = union([object({
|
|
@@ -5039,6 +4932,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5039
4932
|
literal("forbidden"),
|
|
5040
4933
|
literal("identity-recovery-required"),
|
|
5041
4934
|
literal("conflict"),
|
|
4935
|
+
literal("state-in-use"),
|
|
5042
4936
|
literal("rate-limited"),
|
|
5043
4937
|
literal("group-membership-required"),
|
|
5044
4938
|
literal("group-identity-stale"),
|
|
@@ -5086,6 +4980,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5086
4980
|
literal("forbidden"),
|
|
5087
4981
|
literal("identity-recovery-required"),
|
|
5088
4982
|
literal("conflict"),
|
|
4983
|
+
literal("state-in-use"),
|
|
5089
4984
|
literal("rate-limited"),
|
|
5090
4985
|
literal("group-membership-required"),
|
|
5091
4986
|
literal("group-identity-stale"),
|
|
@@ -5124,6 +5019,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5124
5019
|
literal("forbidden"),
|
|
5125
5020
|
literal("identity-recovery-required"),
|
|
5126
5021
|
literal("conflict"),
|
|
5022
|
+
literal("state-in-use"),
|
|
5127
5023
|
literal("rate-limited"),
|
|
5128
5024
|
literal("group-membership-required"),
|
|
5129
5025
|
literal("group-identity-stale"),
|
|
@@ -5167,6 +5063,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5167
5063
|
literal("forbidden"),
|
|
5168
5064
|
literal("identity-recovery-required"),
|
|
5169
5065
|
literal("conflict"),
|
|
5066
|
+
literal("state-in-use"),
|
|
5170
5067
|
literal("rate-limited"),
|
|
5171
5068
|
literal("group-membership-required"),
|
|
5172
5069
|
literal("group-identity-stale"),
|
|
@@ -5205,6 +5102,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5205
5102
|
literal("forbidden"),
|
|
5206
5103
|
literal("identity-recovery-required"),
|
|
5207
5104
|
literal("conflict"),
|
|
5105
|
+
literal("state-in-use"),
|
|
5208
5106
|
literal("rate-limited"),
|
|
5209
5107
|
literal("group-membership-required"),
|
|
5210
5108
|
literal("group-identity-stale"),
|
|
@@ -5266,6 +5164,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5266
5164
|
literal("forbidden"),
|
|
5267
5165
|
literal("identity-recovery-required"),
|
|
5268
5166
|
literal("conflict"),
|
|
5167
|
+
literal("state-in-use"),
|
|
5269
5168
|
literal("rate-limited"),
|
|
5270
5169
|
literal("group-membership-required"),
|
|
5271
5170
|
literal("group-identity-stale"),
|
|
@@ -5325,6 +5224,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5325
5224
|
literal("forbidden"),
|
|
5326
5225
|
literal("identity-recovery-required"),
|
|
5327
5226
|
literal("conflict"),
|
|
5227
|
+
literal("state-in-use"),
|
|
5328
5228
|
literal("rate-limited"),
|
|
5329
5229
|
literal("group-membership-required"),
|
|
5330
5230
|
literal("group-identity-stale"),
|
|
@@ -5378,6 +5278,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5378
5278
|
literal("forbidden"),
|
|
5379
5279
|
literal("identity-recovery-required"),
|
|
5380
5280
|
literal("conflict"),
|
|
5281
|
+
literal("state-in-use"),
|
|
5381
5282
|
literal("rate-limited"),
|
|
5382
5283
|
literal("group-membership-required"),
|
|
5383
5284
|
literal("group-identity-stale"),
|
|
@@ -5425,6 +5326,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5425
5326
|
literal("forbidden"),
|
|
5426
5327
|
literal("identity-recovery-required"),
|
|
5427
5328
|
literal("conflict"),
|
|
5329
|
+
literal("state-in-use"),
|
|
5428
5330
|
literal("rate-limited"),
|
|
5429
5331
|
literal("group-membership-required"),
|
|
5430
5332
|
literal("group-identity-stale"),
|
|
@@ -5472,6 +5374,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5472
5374
|
literal("forbidden"),
|
|
5473
5375
|
literal("identity-recovery-required"),
|
|
5474
5376
|
literal("conflict"),
|
|
5377
|
+
literal("state-in-use"),
|
|
5475
5378
|
literal("rate-limited"),
|
|
5476
5379
|
literal("group-membership-required"),
|
|
5477
5380
|
literal("group-identity-stale"),
|
|
@@ -5507,6 +5410,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5507
5410
|
literal("forbidden"),
|
|
5508
5411
|
literal("identity-recovery-required"),
|
|
5509
5412
|
literal("conflict"),
|
|
5413
|
+
literal("state-in-use"),
|
|
5510
5414
|
literal("rate-limited"),
|
|
5511
5415
|
literal("group-membership-required"),
|
|
5512
5416
|
literal("group-identity-stale"),
|
|
@@ -5546,6 +5450,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5546
5450
|
literal("forbidden"),
|
|
5547
5451
|
literal("identity-recovery-required"),
|
|
5548
5452
|
literal("conflict"),
|
|
5453
|
+
literal("state-in-use"),
|
|
5549
5454
|
literal("rate-limited"),
|
|
5550
5455
|
literal("group-membership-required"),
|
|
5551
5456
|
literal("group-identity-stale"),
|
|
@@ -5580,7 +5485,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5580
5485
|
"failureCode": string().readonly().optional(),
|
|
5581
5486
|
"retryable": boolean().readonly(),
|
|
5582
5487
|
"localOrdinaryDataWillMigrate": boolean().readonly(),
|
|
5583
|
-
"otherDevicesMustRejoin": boolean().readonly()
|
|
5488
|
+
"otherDevicesMustRejoin": boolean().readonly(),
|
|
5489
|
+
"unsupportedE2eeGroupCount": number().readonly(),
|
|
5490
|
+
"unsupportedDidOnlyGroupCount": number().readonly()
|
|
5584
5491
|
}).readonly()
|
|
5585
5492
|
})]);
|
|
5586
5493
|
const _awiki_dsh_plugin_awiki_readMail_parameter_0$schema = object({ "messageId": intersection(string(), unknown()).readonly() });
|
|
@@ -5599,6 +5506,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5599
5506
|
literal("forbidden"),
|
|
5600
5507
|
literal("identity-recovery-required"),
|
|
5601
5508
|
literal("conflict"),
|
|
5509
|
+
literal("state-in-use"),
|
|
5602
5510
|
literal("rate-limited"),
|
|
5603
5511
|
literal("group-membership-required"),
|
|
5604
5512
|
literal("group-identity-stale"),
|
|
@@ -5644,74 +5552,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5644
5552
|
})).readonly()
|
|
5645
5553
|
}).readonly()
|
|
5646
5554
|
})]);
|
|
5647
|
-
const _awiki_dsh_plugin_awiki_refreshDeviceManagement_result$schema = union([object({
|
|
5648
|
-
"ok": literal(false).readonly(),
|
|
5649
|
-
"error": object({
|
|
5650
|
-
"code": union([
|
|
5651
|
-
literal("not-registered"),
|
|
5652
|
-
literal("signed-out"),
|
|
5653
|
-
literal("already-registered"),
|
|
5654
|
-
literal("invalid-request"),
|
|
5655
|
-
literal("invalid-otp"),
|
|
5656
|
-
literal("challenge-expired"),
|
|
5657
|
-
literal("handle-unavailable"),
|
|
5658
|
-
literal("not-found"),
|
|
5659
|
-
literal("forbidden"),
|
|
5660
|
-
literal("identity-recovery-required"),
|
|
5661
|
-
literal("conflict"),
|
|
5662
|
-
literal("rate-limited"),
|
|
5663
|
-
literal("group-membership-required"),
|
|
5664
|
-
literal("group-identity-stale"),
|
|
5665
|
-
literal("attachment-too-large"),
|
|
5666
|
-
literal("summary-unavailable"),
|
|
5667
|
-
literal("summary-timeout"),
|
|
5668
|
-
literal("summary-cancelled"),
|
|
5669
|
-
literal("summary-invalid-output"),
|
|
5670
|
-
literal("summary-failed"),
|
|
5671
|
-
literal("delivery-unknown"),
|
|
5672
|
-
literal("network"),
|
|
5673
|
-
literal("remote")
|
|
5674
|
-
]).readonly(),
|
|
5675
|
-
"message": string().readonly()
|
|
5676
|
-
}).readonly()
|
|
5677
|
-
}), object({
|
|
5678
|
-
"ok": literal(true).readonly(),
|
|
5679
|
-
"value": object({
|
|
5680
|
-
"canManage": boolean().readonly(),
|
|
5681
|
-
"role": union([literal("member"), literal("admin")]).readonly().optional(),
|
|
5682
|
-
"readiness": union([
|
|
5683
|
-
literal("legacy"),
|
|
5684
|
-
literal("member_ready"),
|
|
5685
|
-
literal("admin_awaiting_root"),
|
|
5686
|
-
literal("admin_ready"),
|
|
5687
|
-
literal("blocked")
|
|
5688
|
-
]).readonly(),
|
|
5689
|
-
"devices": array(object({
|
|
5690
|
-
"deviceRef": string().readonly(),
|
|
5691
|
-
"status": union([literal("active"), literal("revoked")]).readonly(),
|
|
5692
|
-
"role": union([literal("member"), literal("admin")]).readonly(),
|
|
5693
|
-
"managementReady": boolean().readonly(),
|
|
5694
|
-
"isCurrent": boolean().readonly()
|
|
5695
|
-
})).readonly(),
|
|
5696
|
-
"requests": array(object({
|
|
5697
|
-
"requestRef": string().readonly(),
|
|
5698
|
-
"candidateKeyFingerprint": string().readonly(),
|
|
5699
|
-
"issuedAt": string().readonly(),
|
|
5700
|
-
"expiresAt": string().readonly(),
|
|
5701
|
-
"state": union([
|
|
5702
|
-
literal("pending"),
|
|
5703
|
-
literal("verifying"),
|
|
5704
|
-
literal("sas-ready"),
|
|
5705
|
-
literal("authorized"),
|
|
5706
|
-
literal("cancelled"),
|
|
5707
|
-
literal("rejected"),
|
|
5708
|
-
literal("expired")
|
|
5709
|
-
]).readonly(),
|
|
5710
|
-
"claimedByCurrentDevice": boolean().readonly(),
|
|
5711
|
-
"canStartVerification": boolean().readonly()
|
|
5712
|
-
})).readonly()
|
|
5713
|
-
}).readonly()
|
|
5714
|
-
})]);
|
|
5715
5555
|
const _awiki_dsh_plugin_awiki_registerIdentity_parameter_0$schema = object({
|
|
5716
5556
|
"handle": string().readonly(),
|
|
5717
5557
|
"phone": string().readonly(),
|
|
@@ -5732,6 +5572,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5732
5572
|
literal("forbidden"),
|
|
5733
5573
|
literal("identity-recovery-required"),
|
|
5734
5574
|
literal("conflict"),
|
|
5575
|
+
literal("state-in-use"),
|
|
5735
5576
|
literal("rate-limited"),
|
|
5736
5577
|
literal("group-membership-required"),
|
|
5737
5578
|
literal("group-identity-stale"),
|
|
@@ -5749,26 +5590,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5749
5590
|
}).readonly()
|
|
5750
5591
|
}), object({
|
|
5751
5592
|
"ok": literal(true).readonly(),
|
|
5752
|
-
"value":
|
|
5753
|
-
"
|
|
5754
|
-
"
|
|
5755
|
-
|
|
5756
|
-
|
|
5757
|
-
|
|
5758
|
-
"registeredAt": number().readonly()
|
|
5759
|
-
}).readonly()
|
|
5760
|
-
}), object({
|
|
5761
|
-
"status": literal("join-required").readonly(),
|
|
5762
|
-
"fullHandle": intersection(string(), unknown()).readonly(),
|
|
5763
|
-
"mode": union([literal("ordinary"), literal("handle-recovery-rebind")]).readonly(),
|
|
5764
|
-
"requiresUserPresence": boolean().readonly()
|
|
5765
|
-
})]).readonly()
|
|
5593
|
+
"value": object({
|
|
5594
|
+
"handle": intersection(string(), unknown()).readonly(),
|
|
5595
|
+
"did": intersection(string(), unknown()).readonly(),
|
|
5596
|
+
"displayName": string().readonly().optional(),
|
|
5597
|
+
"registeredAt": number().readonly()
|
|
5598
|
+
}).readonly()
|
|
5766
5599
|
})]);
|
|
5767
|
-
const
|
|
5768
|
-
"
|
|
5769
|
-
"
|
|
5600
|
+
const _awiki_dsh_plugin_awiki_removeGroupMember_parameter_0$schema = object({
|
|
5601
|
+
"member": string().readonly(),
|
|
5602
|
+
"groupDid": intersection(string(), unknown()).readonly()
|
|
5770
5603
|
});
|
|
5771
|
-
const
|
|
5604
|
+
const _awiki_dsh_plugin_awiki_removeGroupMember_result$schema = union([object({
|
|
5772
5605
|
"ok": literal(false).readonly(),
|
|
5773
5606
|
"error": object({
|
|
5774
5607
|
"code": union([
|
|
@@ -5783,6 +5616,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5783
5616
|
literal("forbidden"),
|
|
5784
5617
|
literal("identity-recovery-required"),
|
|
5785
5618
|
literal("conflict"),
|
|
5619
|
+
literal("state-in-use"),
|
|
5786
5620
|
literal("rate-limited"),
|
|
5787
5621
|
literal("group-membership-required"),
|
|
5788
5622
|
literal("group-identity-stale"),
|
|
@@ -5801,25 +5635,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5801
5635
|
}), object({
|
|
5802
5636
|
"ok": literal(true).readonly(),
|
|
5803
5637
|
"value": object({
|
|
5804
|
-
"
|
|
5805
|
-
"
|
|
5806
|
-
literal("pending"),
|
|
5807
|
-
literal("verifying"),
|
|
5808
|
-
literal("sas-ready"),
|
|
5809
|
-
literal("authorized"),
|
|
5810
|
-
literal("cancelled"),
|
|
5811
|
-
literal("rejected"),
|
|
5812
|
-
literal("expired")
|
|
5813
|
-
]).readonly(),
|
|
5814
|
-
"expiresAt": string().readonly(),
|
|
5815
|
-
"sas": string().readonly().optional()
|
|
5638
|
+
"did": intersection(string(), unknown()).readonly(),
|
|
5639
|
+
"handle": intersection(string(), unknown()).readonly().optional()
|
|
5816
5640
|
}).readonly()
|
|
5817
5641
|
})]);
|
|
5818
|
-
const
|
|
5819
|
-
|
|
5820
|
-
"groupDid": intersection(string(), unknown()).readonly()
|
|
5821
|
-
});
|
|
5822
|
-
const _awiki_dsh_plugin_awiki_removeGroupMember_result$schema = union([object({
|
|
5642
|
+
const _awiki_dsh_plugin_awiki_resolvePeer_parameter_0$schema = object({ "peer": string().readonly() });
|
|
5643
|
+
const _awiki_dsh_plugin_awiki_resolvePeer_result$schema = union([object({
|
|
5823
5644
|
"ok": literal(false).readonly(),
|
|
5824
5645
|
"error": object({
|
|
5825
5646
|
"code": union([
|
|
@@ -5834,6 +5655,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5834
5655
|
literal("forbidden"),
|
|
5835
5656
|
literal("identity-recovery-required"),
|
|
5836
5657
|
literal("conflict"),
|
|
5658
|
+
literal("state-in-use"),
|
|
5837
5659
|
literal("rate-limited"),
|
|
5838
5660
|
literal("group-membership-required"),
|
|
5839
5661
|
literal("group-identity-stale"),
|
|
@@ -5853,11 +5675,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5853
5675
|
"ok": literal(true).readonly(),
|
|
5854
5676
|
"value": object({
|
|
5855
5677
|
"did": intersection(string(), unknown()).readonly(),
|
|
5856
|
-
"handle": intersection(string(), unknown()).readonly().optional()
|
|
5678
|
+
"handle": intersection(string(), unknown()).readonly().optional(),
|
|
5679
|
+
"displayName": string().readonly().optional(),
|
|
5680
|
+
"conversationId": intersection(string(), unknown()).readonly()
|
|
5857
5681
|
}).readonly()
|
|
5858
5682
|
})]);
|
|
5859
|
-
const
|
|
5860
|
-
const _awiki_dsh_plugin_awiki_resolvePeer_result$schema = union([object({
|
|
5683
|
+
const _awiki_dsh_plugin_awiki_resumeGroupRebindRecovery_result$schema = union([object({
|
|
5861
5684
|
"ok": literal(false).readonly(),
|
|
5862
5685
|
"error": object({
|
|
5863
5686
|
"code": union([
|
|
@@ -5872,6 +5695,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5872
5695
|
literal("forbidden"),
|
|
5873
5696
|
literal("identity-recovery-required"),
|
|
5874
5697
|
literal("conflict"),
|
|
5698
|
+
literal("state-in-use"),
|
|
5875
5699
|
literal("rate-limited"),
|
|
5876
5700
|
literal("group-membership-required"),
|
|
5877
5701
|
literal("group-identity-stale"),
|
|
@@ -5890,10 +5714,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5890
5714
|
}), object({
|
|
5891
5715
|
"ok": literal(true).readonly(),
|
|
5892
5716
|
"value": object({
|
|
5893
|
-
"
|
|
5894
|
-
"
|
|
5895
|
-
"
|
|
5896
|
-
"
|
|
5717
|
+
"processed": number().readonly(),
|
|
5718
|
+
"completed": number().readonly(),
|
|
5719
|
+
"pending": number().readonly(),
|
|
5720
|
+
"blocked": number().readonly(),
|
|
5721
|
+
"items": array(object({
|
|
5722
|
+
"groupDid": intersection(string(), unknown()).readonly(),
|
|
5723
|
+
"status": union([literal("pending"), literal("blocked")]).readonly()
|
|
5724
|
+
})).readonly()
|
|
5897
5725
|
}).readonly()
|
|
5898
5726
|
})]);
|
|
5899
5727
|
const _awiki_dsh_plugin_awiki_resumeRecovery_parameter_0$schema = object({ "operationId": string().readonly() });
|
|
@@ -5912,6 +5740,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5912
5740
|
literal("forbidden"),
|
|
5913
5741
|
literal("identity-recovery-required"),
|
|
5914
5742
|
literal("conflict"),
|
|
5743
|
+
literal("state-in-use"),
|
|
5915
5744
|
literal("rate-limited"),
|
|
5916
5745
|
literal("group-membership-required"),
|
|
5917
5746
|
literal("group-identity-stale"),
|
|
@@ -5946,79 +5775,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5946
5775
|
"failureCode": string().readonly().optional(),
|
|
5947
5776
|
"retryable": boolean().readonly(),
|
|
5948
5777
|
"localOrdinaryDataWillMigrate": boolean().readonly(),
|
|
5949
|
-
"otherDevicesMustRejoin": boolean().readonly()
|
|
5950
|
-
|
|
5951
|
-
|
|
5952
|
-
const _awiki_dsh_plugin_awiki_revokeDevice_parameter_0$schema = object({
|
|
5953
|
-
"deviceRef": string().readonly(),
|
|
5954
|
-
"confirmation": string().readonly()
|
|
5955
|
-
});
|
|
5956
|
-
const _awiki_dsh_plugin_awiki_revokeDevice_result$schema = union([object({
|
|
5957
|
-
"ok": literal(false).readonly(),
|
|
5958
|
-
"error": object({
|
|
5959
|
-
"code": union([
|
|
5960
|
-
literal("not-registered"),
|
|
5961
|
-
literal("signed-out"),
|
|
5962
|
-
literal("already-registered"),
|
|
5963
|
-
literal("invalid-request"),
|
|
5964
|
-
literal("invalid-otp"),
|
|
5965
|
-
literal("challenge-expired"),
|
|
5966
|
-
literal("handle-unavailable"),
|
|
5967
|
-
literal("not-found"),
|
|
5968
|
-
literal("forbidden"),
|
|
5969
|
-
literal("identity-recovery-required"),
|
|
5970
|
-
literal("conflict"),
|
|
5971
|
-
literal("rate-limited"),
|
|
5972
|
-
literal("group-membership-required"),
|
|
5973
|
-
literal("group-identity-stale"),
|
|
5974
|
-
literal("attachment-too-large"),
|
|
5975
|
-
literal("summary-unavailable"),
|
|
5976
|
-
literal("summary-timeout"),
|
|
5977
|
-
literal("summary-cancelled"),
|
|
5978
|
-
literal("summary-invalid-output"),
|
|
5979
|
-
literal("summary-failed"),
|
|
5980
|
-
literal("delivery-unknown"),
|
|
5981
|
-
literal("network"),
|
|
5982
|
-
literal("remote")
|
|
5983
|
-
]).readonly(),
|
|
5984
|
-
"message": string().readonly()
|
|
5985
|
-
}).readonly()
|
|
5986
|
-
}), object({
|
|
5987
|
-
"ok": literal(true).readonly(),
|
|
5988
|
-
"value": object({
|
|
5989
|
-
"canManage": boolean().readonly(),
|
|
5990
|
-
"role": union([literal("member"), literal("admin")]).readonly().optional(),
|
|
5991
|
-
"readiness": union([
|
|
5992
|
-
literal("legacy"),
|
|
5993
|
-
literal("member_ready"),
|
|
5994
|
-
literal("admin_awaiting_root"),
|
|
5995
|
-
literal("admin_ready"),
|
|
5996
|
-
literal("blocked")
|
|
5997
|
-
]).readonly(),
|
|
5998
|
-
"devices": array(object({
|
|
5999
|
-
"deviceRef": string().readonly(),
|
|
6000
|
-
"status": union([literal("active"), literal("revoked")]).readonly(),
|
|
6001
|
-
"role": union([literal("member"), literal("admin")]).readonly(),
|
|
6002
|
-
"managementReady": boolean().readonly(),
|
|
6003
|
-
"isCurrent": boolean().readonly()
|
|
6004
|
-
})).readonly(),
|
|
6005
|
-
"requests": array(object({
|
|
6006
|
-
"requestRef": string().readonly(),
|
|
6007
|
-
"candidateKeyFingerprint": string().readonly(),
|
|
6008
|
-
"issuedAt": string().readonly(),
|
|
6009
|
-
"expiresAt": string().readonly(),
|
|
6010
|
-
"state": union([
|
|
6011
|
-
literal("pending"),
|
|
6012
|
-
literal("verifying"),
|
|
6013
|
-
literal("sas-ready"),
|
|
6014
|
-
literal("authorized"),
|
|
6015
|
-
literal("cancelled"),
|
|
6016
|
-
literal("rejected"),
|
|
6017
|
-
literal("expired")
|
|
6018
|
-
]).readonly(),
|
|
6019
|
-
"claimedByCurrentDevice": boolean().readonly(),
|
|
6020
|
-
"canStartVerification": boolean().readonly()
|
|
6021
|
-
})).readonly()
|
|
5778
|
+
"otherDevicesMustRejoin": boolean().readonly(),
|
|
5779
|
+
"unsupportedE2eeGroupCount": number().readonly(),
|
|
5780
|
+
"unsupportedDidOnlyGroupCount": number().readonly()
|
|
6022
5781
|
}).readonly()
|
|
6023
5782
|
})]);
|
|
6024
5783
|
const _awiki_dsh_plugin_awiki_sendAttachment_parameter_0$schema = object({
|
|
@@ -6050,6 +5809,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6050
5809
|
literal("forbidden"),
|
|
6051
5810
|
literal("identity-recovery-required"),
|
|
6052
5811
|
literal("conflict"),
|
|
5812
|
+
literal("state-in-use"),
|
|
6053
5813
|
literal("rate-limited"),
|
|
6054
5814
|
literal("group-membership-required"),
|
|
6055
5815
|
literal("group-identity-stale"),
|
|
@@ -6103,7 +5863,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6103
5863
|
"to": array(string()).readonly(),
|
|
6104
5864
|
"cc": array(string()).readonly().optional(),
|
|
6105
5865
|
"subject": string().readonly(),
|
|
6106
|
-
"bodyText": string().readonly()
|
|
5866
|
+
"bodyText": string().readonly(),
|
|
5867
|
+
"attachments": array(object({
|
|
5868
|
+
"fileName": string().readonly(),
|
|
5869
|
+
"contentType": string().readonly(),
|
|
5870
|
+
"sizeBytes": number().readonly(),
|
|
5871
|
+
"bytesBase64": string().readonly()
|
|
5872
|
+
})).readonly().optional()
|
|
6107
5873
|
});
|
|
6108
5874
|
const _awiki_dsh_plugin_awiki_sendMail_result$schema = union([object({
|
|
6109
5875
|
"ok": literal(false).readonly(),
|
|
@@ -6120,6 +5886,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6120
5886
|
literal("forbidden"),
|
|
6121
5887
|
literal("identity-recovery-required"),
|
|
6122
5888
|
literal("conflict"),
|
|
5889
|
+
literal("state-in-use"),
|
|
6123
5890
|
literal("rate-limited"),
|
|
6124
5891
|
literal("group-membership-required"),
|
|
6125
5892
|
literal("group-identity-stale"),
|
|
@@ -6162,6 +5929,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6162
5929
|
literal("forbidden"),
|
|
6163
5930
|
literal("identity-recovery-required"),
|
|
6164
5931
|
literal("conflict"),
|
|
5932
|
+
literal("state-in-use"),
|
|
6165
5933
|
literal("rate-limited"),
|
|
6166
5934
|
literal("group-membership-required"),
|
|
6167
5935
|
literal("group-identity-stale"),
|
|
@@ -6205,6 +5973,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6205
5973
|
literal("forbidden"),
|
|
6206
5974
|
literal("identity-recovery-required"),
|
|
6207
5975
|
literal("conflict"),
|
|
5976
|
+
literal("state-in-use"),
|
|
6208
5977
|
literal("rate-limited"),
|
|
6209
5978
|
literal("group-membership-required"),
|
|
6210
5979
|
literal("group-identity-stale"),
|
|
@@ -6260,6 +6029,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6260
6029
|
literal("forbidden"),
|
|
6261
6030
|
literal("identity-recovery-required"),
|
|
6262
6031
|
literal("conflict"),
|
|
6032
|
+
literal("state-in-use"),
|
|
6263
6033
|
literal("rate-limited"),
|
|
6264
6034
|
literal("group-membership-required"),
|
|
6265
6035
|
literal("group-identity-stale"),
|
|
@@ -6309,54 +6079,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6309
6079
|
})]).readonly()
|
|
6310
6080
|
}).readonly()
|
|
6311
6081
|
})]);
|
|
6312
|
-
const _awiki_dsh_plugin_awiki_startDeviceJoinVerification_parameter_0$schema = object({ "requestRef": string().readonly() });
|
|
6313
|
-
const _awiki_dsh_plugin_awiki_startDeviceJoinVerification_result$schema = union([object({
|
|
6314
|
-
"ok": literal(false).readonly(),
|
|
6315
|
-
"error": object({
|
|
6316
|
-
"code": union([
|
|
6317
|
-
literal("not-registered"),
|
|
6318
|
-
literal("signed-out"),
|
|
6319
|
-
literal("already-registered"),
|
|
6320
|
-
literal("invalid-request"),
|
|
6321
|
-
literal("invalid-otp"),
|
|
6322
|
-
literal("challenge-expired"),
|
|
6323
|
-
literal("handle-unavailable"),
|
|
6324
|
-
literal("not-found"),
|
|
6325
|
-
literal("forbidden"),
|
|
6326
|
-
literal("identity-recovery-required"),
|
|
6327
|
-
literal("conflict"),
|
|
6328
|
-
literal("rate-limited"),
|
|
6329
|
-
literal("group-membership-required"),
|
|
6330
|
-
literal("group-identity-stale"),
|
|
6331
|
-
literal("attachment-too-large"),
|
|
6332
|
-
literal("summary-unavailable"),
|
|
6333
|
-
literal("summary-timeout"),
|
|
6334
|
-
literal("summary-cancelled"),
|
|
6335
|
-
literal("summary-invalid-output"),
|
|
6336
|
-
literal("summary-failed"),
|
|
6337
|
-
literal("delivery-unknown"),
|
|
6338
|
-
literal("network"),
|
|
6339
|
-
literal("remote")
|
|
6340
|
-
]).readonly(),
|
|
6341
|
-
"message": string().readonly()
|
|
6342
|
-
}).readonly()
|
|
6343
|
-
}), object({
|
|
6344
|
-
"ok": literal(true).readonly(),
|
|
6345
|
-
"value": object({
|
|
6346
|
-
"requestRef": string().readonly(),
|
|
6347
|
-
"phase": union([
|
|
6348
|
-
literal("pending"),
|
|
6349
|
-
literal("verifying"),
|
|
6350
|
-
literal("sas-ready"),
|
|
6351
|
-
literal("authorized"),
|
|
6352
|
-
literal("cancelled"),
|
|
6353
|
-
literal("rejected"),
|
|
6354
|
-
literal("expired")
|
|
6355
|
-
]).readonly(),
|
|
6356
|
-
"expiresAt": string().readonly(),
|
|
6357
|
-
"sas": string().readonly().optional()
|
|
6358
|
-
}).readonly()
|
|
6359
|
-
})]);
|
|
6360
6082
|
const _awiki_dsh_plugin_awiki_summarizeConversation_parameter_0$schema = object({
|
|
6361
6083
|
"conversationId": intersection(string(), unknown()).readonly(),
|
|
6362
6084
|
"unreadCountAtOpen": number().readonly().optional()
|
|
@@ -6376,6 +6098,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6376
6098
|
literal("forbidden"),
|
|
6377
6099
|
literal("identity-recovery-required"),
|
|
6378
6100
|
literal("conflict"),
|
|
6101
|
+
literal("state-in-use"),
|
|
6379
6102
|
literal("rate-limited"),
|
|
6380
6103
|
literal("group-membership-required"),
|
|
6381
6104
|
literal("group-identity-stale"),
|
|
@@ -6411,31 +6134,38 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6411
6134
|
})).readonly()
|
|
6412
6135
|
}).readonly()
|
|
6413
6136
|
})]);
|
|
6414
|
-
const _awiki_dsh_plugin_awiki_updateConversationPreference_parameter_0$schema = union([
|
|
6415
|
-
|
|
6416
|
-
|
|
6417
|
-
"
|
|
6418
|
-
|
|
6419
|
-
|
|
6420
|
-
|
|
6421
|
-
|
|
6422
|
-
|
|
6423
|
-
|
|
6424
|
-
|
|
6425
|
-
|
|
6426
|
-
|
|
6427
|
-
|
|
6428
|
-
|
|
6429
|
-
|
|
6430
|
-
|
|
6431
|
-
|
|
6432
|
-
|
|
6433
|
-
|
|
6434
|
-
|
|
6435
|
-
|
|
6436
|
-
|
|
6437
|
-
|
|
6438
|
-
|
|
6137
|
+
const _awiki_dsh_plugin_awiki_updateConversationPreference_parameter_0$schema = union([
|
|
6138
|
+
object({
|
|
6139
|
+
"action": literal("hide").readonly(),
|
|
6140
|
+
"conversation": union([object({
|
|
6141
|
+
"kind": literal("group").readonly(),
|
|
6142
|
+
"id": intersection(string(), unknown()).readonly(),
|
|
6143
|
+
"groupDid": intersection(string(), unknown()).readonly(),
|
|
6144
|
+
"title": string().readonly(),
|
|
6145
|
+
"unreadCount": number().readonly().optional(),
|
|
6146
|
+
"lastMessageAt": number().readonly().optional(),
|
|
6147
|
+
"lastMessagePreview": string().readonly().optional()
|
|
6148
|
+
}), object({
|
|
6149
|
+
"kind": literal("direct").readonly(),
|
|
6150
|
+
"id": intersection(string(), unknown()).readonly(),
|
|
6151
|
+
"peerDid": intersection(string(), unknown()).readonly(),
|
|
6152
|
+
"peerHandle": intersection(string(), unknown()).readonly().optional(),
|
|
6153
|
+
"displayName": string().readonly().optional(),
|
|
6154
|
+
"title": string().readonly(),
|
|
6155
|
+
"unreadCount": number().readonly().optional(),
|
|
6156
|
+
"lastMessageAt": number().readonly().optional(),
|
|
6157
|
+
"lastMessagePreview": string().readonly().optional()
|
|
6158
|
+
})]).readonly()
|
|
6159
|
+
}),
|
|
6160
|
+
object({
|
|
6161
|
+
"action": literal("restore").readonly(),
|
|
6162
|
+
"conversationId": intersection(string(), unknown()).readonly()
|
|
6163
|
+
}),
|
|
6164
|
+
object({
|
|
6165
|
+
"action": literal("dismiss-group-recovery").readonly(),
|
|
6166
|
+
"signature": string().readonly()
|
|
6167
|
+
})
|
|
6168
|
+
]);
|
|
6439
6169
|
const _awiki_dsh_plugin_awiki_updateConversationPreference_result$schema = union([object({
|
|
6440
6170
|
"ok": literal(false).readonly(),
|
|
6441
6171
|
"error": object({
|
|
@@ -6451,6 +6181,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6451
6181
|
literal("forbidden"),
|
|
6452
6182
|
literal("identity-recovery-required"),
|
|
6453
6183
|
literal("conflict"),
|
|
6184
|
+
literal("state-in-use"),
|
|
6454
6185
|
literal("rate-limited"),
|
|
6455
6186
|
literal("group-membership-required"),
|
|
6456
6187
|
literal("group-identity-stale"),
|
|
@@ -6468,28 +6199,31 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6468
6199
|
}).readonly()
|
|
6469
6200
|
}), object({
|
|
6470
6201
|
"ok": literal(true).readonly(),
|
|
6471
|
-
"value": object({
|
|
6472
|
-
"
|
|
6473
|
-
"
|
|
6474
|
-
|
|
6475
|
-
|
|
6476
|
-
|
|
6477
|
-
|
|
6478
|
-
|
|
6479
|
-
|
|
6480
|
-
|
|
6481
|
-
|
|
6482
|
-
|
|
6483
|
-
|
|
6484
|
-
|
|
6485
|
-
|
|
6486
|
-
|
|
6487
|
-
|
|
6488
|
-
|
|
6489
|
-
|
|
6490
|
-
|
|
6491
|
-
|
|
6492
|
-
|
|
6202
|
+
"value": object({
|
|
6203
|
+
"hiddenConversations": array(object({
|
|
6204
|
+
"conversation": union([object({
|
|
6205
|
+
"kind": literal("group").readonly(),
|
|
6206
|
+
"id": intersection(string(), unknown()).readonly(),
|
|
6207
|
+
"groupDid": intersection(string(), unknown()).readonly(),
|
|
6208
|
+
"title": string().readonly(),
|
|
6209
|
+
"unreadCount": number().readonly().optional(),
|
|
6210
|
+
"lastMessageAt": number().readonly().optional(),
|
|
6211
|
+
"lastMessagePreview": string().readonly().optional()
|
|
6212
|
+
}), object({
|
|
6213
|
+
"kind": literal("direct").readonly(),
|
|
6214
|
+
"id": intersection(string(), unknown()).readonly(),
|
|
6215
|
+
"peerDid": intersection(string(), unknown()).readonly(),
|
|
6216
|
+
"peerHandle": intersection(string(), unknown()).readonly().optional(),
|
|
6217
|
+
"displayName": string().readonly().optional(),
|
|
6218
|
+
"title": string().readonly(),
|
|
6219
|
+
"unreadCount": number().readonly().optional(),
|
|
6220
|
+
"lastMessageAt": number().readonly().optional(),
|
|
6221
|
+
"lastMessagePreview": string().readonly().optional()
|
|
6222
|
+
})]).readonly(),
|
|
6223
|
+
"hiddenAt": number().readonly()
|
|
6224
|
+
})).readonly(),
|
|
6225
|
+
"dismissedGroupRecoverySignature": string().readonly().optional()
|
|
6226
|
+
}).readonly()
|
|
6493
6227
|
})]);
|
|
6494
6228
|
const _awiki_dsh_plugin_awiki_updateDisplayName_parameter_0$schema = object({ "displayName": string().readonly() });
|
|
6495
6229
|
const _awiki_dsh_plugin_awiki_updateDisplayName_result$schema = union([object({
|
|
@@ -6507,6 +6241,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6507
6241
|
literal("forbidden"),
|
|
6508
6242
|
literal("identity-recovery-required"),
|
|
6509
6243
|
literal("conflict"),
|
|
6244
|
+
literal("state-in-use"),
|
|
6510
6245
|
literal("rate-limited"),
|
|
6511
6246
|
literal("group-membership-required"),
|
|
6512
6247
|
literal("group-identity-stale"),
|
|
@@ -6551,6 +6286,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6551
6286
|
literal("forbidden"),
|
|
6552
6287
|
literal("identity-recovery-required"),
|
|
6553
6288
|
literal("conflict"),
|
|
6289
|
+
literal("state-in-use"),
|
|
6554
6290
|
literal("rate-limited"),
|
|
6555
6291
|
literal("group-membership-required"),
|
|
6556
6292
|
literal("group-identity-stale"),
|
|
@@ -6603,7 +6339,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6603
6339
|
},
|
|
6604
6340
|
sourceLocation: {
|
|
6605
6341
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
6606
|
-
"line":
|
|
6342
|
+
"line": 119,
|
|
6607
6343
|
"column": 9
|
|
6608
6344
|
}
|
|
6609
6345
|
},
|
|
@@ -6630,73 +6366,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6630
6366
|
},
|
|
6631
6367
|
sourceLocation: {
|
|
6632
6368
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
6633
|
-
"line":
|
|
6369
|
+
"line": 149,
|
|
6634
6370
|
"column": 3
|
|
6635
6371
|
}
|
|
6636
6372
|
},
|
|
6637
|
-
{
|
|
6638
|
-
id: "@awiki/dsh-plugin#awiki/approveDeviceJoin",
|
|
6639
|
-
service: "awiki",
|
|
6640
|
-
namespace: "awiki",
|
|
6641
|
-
method: "approveDeviceJoin",
|
|
6642
|
-
invocation: { kind: "direct" },
|
|
6643
|
-
parameters: [{
|
|
6644
|
-
name: "request",
|
|
6645
|
-
wire: "request",
|
|
6646
|
-
source: "json",
|
|
6647
|
-
codec: {
|
|
6648
|
-
mode: "strict",
|
|
6649
|
-
typeSymbol: "@awiki/dsh-plugin/types#AwikiApproveDeviceJoinRequest",
|
|
6650
|
-
schema: _awiki_dsh_plugin_awiki_approveDeviceJoin_parameter_0$schema
|
|
6651
|
-
}
|
|
6652
|
-
}],
|
|
6653
|
-
result: {
|
|
6654
|
-
mode: "strict",
|
|
6655
|
-
typeSymbol: "@awiki/dsh-plugin/types#AwikiResult",
|
|
6656
|
-
schema: _awiki_dsh_plugin_awiki_approveDeviceJoin_result$schema
|
|
6657
|
-
},
|
|
6658
|
-
sourceLocation: {
|
|
6659
|
-
"file": "packages/dsh-awiki/src/index.ts",
|
|
6660
|
-
"line": 128,
|
|
6661
|
-
"column": 9
|
|
6662
|
-
}
|
|
6663
|
-
},
|
|
6664
|
-
{
|
|
6665
|
-
id: "@awiki/dsh-plugin#awiki/beginDeviceJoin",
|
|
6666
|
-
service: "awiki",
|
|
6667
|
-
namespace: "awiki",
|
|
6668
|
-
method: "beginDeviceJoin",
|
|
6669
|
-
invocation: { kind: "direct" },
|
|
6670
|
-
parameters: [],
|
|
6671
|
-
result: {
|
|
6672
|
-
mode: "strict",
|
|
6673
|
-
typeSymbol: "@awiki/dsh-plugin/types#AwikiResult",
|
|
6674
|
-
schema: _awiki_dsh_plugin_awiki_beginDeviceJoin_result$schema
|
|
6675
|
-
},
|
|
6676
|
-
sourceLocation: {
|
|
6677
|
-
"file": "packages/dsh-awiki/src/index.ts",
|
|
6678
|
-
"line": 111,
|
|
6679
|
-
"column": 9
|
|
6680
|
-
}
|
|
6681
|
-
},
|
|
6682
|
-
{
|
|
6683
|
-
id: "@awiki/dsh-plugin#awiki/cancelDeviceJoin",
|
|
6684
|
-
service: "awiki",
|
|
6685
|
-
namespace: "awiki",
|
|
6686
|
-
method: "cancelDeviceJoin",
|
|
6687
|
-
invocation: { kind: "direct" },
|
|
6688
|
-
parameters: [],
|
|
6689
|
-
result: {
|
|
6690
|
-
mode: "strict",
|
|
6691
|
-
typeSymbol: "@awiki/dsh-plugin/types#AwikiResult",
|
|
6692
|
-
schema: _awiki_dsh_plugin_awiki_cancelDeviceJoin_result$schema
|
|
6693
|
-
},
|
|
6694
|
-
sourceLocation: {
|
|
6695
|
-
"file": "packages/dsh-awiki/src/index.ts",
|
|
6696
|
-
"line": 117,
|
|
6697
|
-
"column": 9
|
|
6698
|
-
}
|
|
6699
|
-
},
|
|
6700
6373
|
{
|
|
6701
6374
|
id: "@awiki/dsh-plugin#awiki/clearLocalData",
|
|
6702
6375
|
service: "awiki",
|
|
@@ -6720,7 +6393,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6720
6393
|
},
|
|
6721
6394
|
sourceLocation: {
|
|
6722
6395
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
6723
|
-
"line":
|
|
6396
|
+
"line": 212,
|
|
6724
6397
|
"column": 3
|
|
6725
6398
|
}
|
|
6726
6399
|
},
|
|
@@ -6747,7 +6420,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6747
6420
|
},
|
|
6748
6421
|
sourceLocation: {
|
|
6749
6422
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
6750
|
-
"line":
|
|
6423
|
+
"line": 134,
|
|
6751
6424
|
"column": 9
|
|
6752
6425
|
}
|
|
6753
6426
|
},
|
|
@@ -6774,7 +6447,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6774
6447
|
},
|
|
6775
6448
|
sourceLocation: {
|
|
6776
6449
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
6777
|
-
"line":
|
|
6450
|
+
"line": 128,
|
|
6778
6451
|
"column": 9
|
|
6779
6452
|
}
|
|
6780
6453
|
},
|
|
@@ -6801,62 +6474,71 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6801
6474
|
},
|
|
6802
6475
|
sourceLocation: {
|
|
6803
6476
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
6804
|
-
"line":
|
|
6477
|
+
"line": 189,
|
|
6805
6478
|
"column": 9
|
|
6806
6479
|
}
|
|
6807
6480
|
},
|
|
6808
6481
|
{
|
|
6809
|
-
id: "@awiki/dsh-plugin#awiki/
|
|
6482
|
+
id: "@awiki/dsh-plugin#awiki/downloadMailAttachment",
|
|
6810
6483
|
service: "awiki",
|
|
6811
6484
|
namespace: "awiki",
|
|
6812
|
-
method: "
|
|
6485
|
+
method: "downloadMailAttachment",
|
|
6813
6486
|
invocation: { kind: "direct" },
|
|
6814
|
-
parameters: [
|
|
6487
|
+
parameters: [{
|
|
6488
|
+
name: "request",
|
|
6489
|
+
wire: "request",
|
|
6490
|
+
source: "json",
|
|
6491
|
+
codec: {
|
|
6492
|
+
mode: "strict",
|
|
6493
|
+
typeSymbol: "@awiki/dsh-plugin/types#AwikiMailAttachmentDownloadRequest",
|
|
6494
|
+
schema: _awiki_dsh_plugin_awiki_downloadMailAttachment_parameter_0$schema
|
|
6495
|
+
}
|
|
6496
|
+
}],
|
|
6815
6497
|
result: {
|
|
6816
6498
|
mode: "strict",
|
|
6817
6499
|
typeSymbol: "@awiki/dsh-plugin/types#AwikiResult",
|
|
6818
|
-
schema:
|
|
6500
|
+
schema: _awiki_dsh_plugin_awiki_downloadMailAttachment_result$schema
|
|
6819
6501
|
},
|
|
6820
6502
|
sourceLocation: {
|
|
6821
6503
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
6822
|
-
"line":
|
|
6504
|
+
"line": 207,
|
|
6823
6505
|
"column": 9
|
|
6824
6506
|
}
|
|
6825
6507
|
},
|
|
6826
6508
|
{
|
|
6827
|
-
id: "@awiki/dsh-plugin#awiki/
|
|
6509
|
+
id: "@awiki/dsh-plugin#awiki/getConfig",
|
|
6828
6510
|
service: "awiki",
|
|
6829
6511
|
namespace: "awiki",
|
|
6830
|
-
method: "
|
|
6512
|
+
method: "getConfig",
|
|
6831
6513
|
invocation: { kind: "direct" },
|
|
6832
6514
|
parameters: [],
|
|
6833
6515
|
result: {
|
|
6834
6516
|
mode: "strict",
|
|
6835
6517
|
typeSymbol: "@awiki/dsh-plugin/types#AwikiResult",
|
|
6836
|
-
schema:
|
|
6518
|
+
schema: _awiki_dsh_plugin_awiki_getConfig_result$schema
|
|
6837
6519
|
},
|
|
6838
6520
|
sourceLocation: {
|
|
6839
6521
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
6840
|
-
"line":
|
|
6522
|
+
"line": 78,
|
|
6841
6523
|
"column": 3
|
|
6842
6524
|
}
|
|
6843
6525
|
},
|
|
6844
6526
|
{
|
|
6845
|
-
id: "@awiki/dsh-plugin#awiki/
|
|
6527
|
+
id: "@awiki/dsh-plugin#awiki/getConversationPreferences",
|
|
6846
6528
|
service: "awiki",
|
|
6847
6529
|
namespace: "awiki",
|
|
6848
|
-
method: "
|
|
6530
|
+
method: "getConversationPreferences",
|
|
6849
6531
|
invocation: { kind: "direct" },
|
|
6850
6532
|
parameters: [],
|
|
6851
6533
|
result: {
|
|
6852
6534
|
mode: "strict",
|
|
6853
6535
|
typeSymbol: "@awiki/dsh-plugin/types#AwikiResult",
|
|
6854
|
-
schema:
|
|
6536
|
+
schema: _awiki_dsh_plugin_awiki_getConversationPreferences_result$schema
|
|
6855
6537
|
},
|
|
6856
6538
|
sourceLocation: {
|
|
6857
6539
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
6858
|
-
"line":
|
|
6859
|
-
"column":
|
|
6540
|
+
"line": 158,
|
|
6541
|
+
"column": 3
|
|
6860
6542
|
}
|
|
6861
6543
|
},
|
|
6862
6544
|
{
|
|
@@ -6882,7 +6564,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6882
6564
|
},
|
|
6883
6565
|
sourceLocation: {
|
|
6884
6566
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
6885
|
-
"line":
|
|
6567
|
+
"line": 137,
|
|
6886
6568
|
"column": 3
|
|
6887
6569
|
}
|
|
6888
6570
|
},
|
|
@@ -6909,7 +6591,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6909
6591
|
},
|
|
6910
6592
|
sourceLocation: {
|
|
6911
6593
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
6912
|
-
"line":
|
|
6594
|
+
"line": 169,
|
|
6913
6595
|
"column": 3
|
|
6914
6596
|
}
|
|
6915
6597
|
},
|
|
@@ -6927,7 +6609,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6927
6609
|
},
|
|
6928
6610
|
sourceLocation: {
|
|
6929
6611
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
6930
|
-
"line":
|
|
6612
|
+
"line": 81,
|
|
6931
6613
|
"column": 9
|
|
6932
6614
|
}
|
|
6933
6615
|
},
|
|
@@ -6954,7 +6636,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6954
6636
|
},
|
|
6955
6637
|
sourceLocation: {
|
|
6956
6638
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
6957
|
-
"line":
|
|
6639
|
+
"line": 172,
|
|
6958
6640
|
"column": 3
|
|
6959
6641
|
}
|
|
6960
6642
|
},
|
|
@@ -6972,7 +6654,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6972
6654
|
},
|
|
6973
6655
|
sourceLocation: {
|
|
6974
6656
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
6975
|
-
"line":
|
|
6657
|
+
"line": 192,
|
|
6976
6658
|
"column": 3
|
|
6977
6659
|
}
|
|
6978
6660
|
},
|
|
@@ -6990,7 +6672,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
6990
6672
|
},
|
|
6991
6673
|
sourceLocation: {
|
|
6992
6674
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
6993
|
-
"line":
|
|
6675
|
+
"line": 107,
|
|
6994
6676
|
"column": 3
|
|
6995
6677
|
}
|
|
6996
6678
|
},
|
|
@@ -7017,7 +6699,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7017
6699
|
},
|
|
7018
6700
|
sourceLocation: {
|
|
7019
6701
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7020
|
-
"line":
|
|
6702
|
+
"line": 122,
|
|
7021
6703
|
"column": 9
|
|
7022
6704
|
}
|
|
7023
6705
|
},
|
|
@@ -7035,7 +6717,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7035
6717
|
},
|
|
7036
6718
|
sourceLocation: {
|
|
7037
6719
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7038
|
-
"line":
|
|
6720
|
+
"line": 84,
|
|
7039
6721
|
"column": 9
|
|
7040
6722
|
}
|
|
7041
6723
|
},
|
|
@@ -7062,7 +6744,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7062
6744
|
},
|
|
7063
6745
|
sourceLocation: {
|
|
7064
6746
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7065
|
-
"line":
|
|
6747
|
+
"line": 93,
|
|
7066
6748
|
"column": 9
|
|
7067
6749
|
}
|
|
7068
6750
|
},
|
|
@@ -7089,7 +6771,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7089
6771
|
},
|
|
7090
6772
|
sourceLocation: {
|
|
7091
6773
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7092
|
-
"line":
|
|
6774
|
+
"line": 140,
|
|
7093
6775
|
"column": 3
|
|
7094
6776
|
}
|
|
7095
6777
|
},
|
|
@@ -7116,7 +6798,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7116
6798
|
},
|
|
7117
6799
|
sourceLocation: {
|
|
7118
6800
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7119
|
-
"line":
|
|
6801
|
+
"line": 143,
|
|
7120
6802
|
"column": 9
|
|
7121
6803
|
}
|
|
7122
6804
|
},
|
|
@@ -7144,7 +6826,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7144
6826
|
},
|
|
7145
6827
|
sourceLocation: {
|
|
7146
6828
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7147
|
-
"line":
|
|
6829
|
+
"line": 166,
|
|
7148
6830
|
"column": 3
|
|
7149
6831
|
}
|
|
7150
6832
|
},
|
|
@@ -7171,7 +6853,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7171
6853
|
},
|
|
7172
6854
|
sourceLocation: {
|
|
7173
6855
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7174
|
-
"line":
|
|
6856
|
+
"line": 146,
|
|
7175
6857
|
"column": 3
|
|
7176
6858
|
}
|
|
7177
6859
|
},
|
|
@@ -7199,7 +6881,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7199
6881
|
},
|
|
7200
6882
|
sourceLocation: {
|
|
7201
6883
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7202
|
-
"line":
|
|
6884
|
+
"line": 195,
|
|
7203
6885
|
"column": 9
|
|
7204
6886
|
}
|
|
7205
6887
|
},
|
|
@@ -7217,7 +6899,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7217
6899
|
},
|
|
7218
6900
|
sourceLocation: {
|
|
7219
6901
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7220
|
-
"line":
|
|
6902
|
+
"line": 90,
|
|
7221
6903
|
"column": 3
|
|
7222
6904
|
}
|
|
7223
6905
|
},
|
|
@@ -7244,7 +6926,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7244
6926
|
},
|
|
7245
6927
|
sourceLocation: {
|
|
7246
6928
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7247
|
-
"line":
|
|
6929
|
+
"line": 87,
|
|
7248
6930
|
"column": 3
|
|
7249
6931
|
}
|
|
7250
6932
|
},
|
|
@@ -7271,7 +6953,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7271
6953
|
},
|
|
7272
6954
|
sourceLocation: {
|
|
7273
6955
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7274
|
-
"line":
|
|
6956
|
+
"line": 180,
|
|
7275
6957
|
"column": 3
|
|
7276
6958
|
}
|
|
7277
6959
|
},
|
|
@@ -7298,7 +6980,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7298
6980
|
},
|
|
7299
6981
|
sourceLocation: {
|
|
7300
6982
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7301
|
-
"line":
|
|
6983
|
+
"line": 201,
|
|
7302
6984
|
"column": 3
|
|
7303
6985
|
}
|
|
7304
6986
|
},
|
|
@@ -7325,7 +7007,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7325
7007
|
},
|
|
7326
7008
|
sourceLocation: {
|
|
7327
7009
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7328
|
-
"line":
|
|
7010
|
+
"line": 116,
|
|
7329
7011
|
"column": 3
|
|
7330
7012
|
}
|
|
7331
7013
|
},
|
|
@@ -7352,28 +7034,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7352
7034
|
},
|
|
7353
7035
|
sourceLocation: {
|
|
7354
7036
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7355
|
-
"line":
|
|
7037
|
+
"line": 198,
|
|
7356
7038
|
"column": 9
|
|
7357
7039
|
}
|
|
7358
7040
|
},
|
|
7359
|
-
{
|
|
7360
|
-
id: "@awiki/dsh-plugin#awiki/refreshDeviceManagement",
|
|
7361
|
-
service: "awiki",
|
|
7362
|
-
namespace: "awiki",
|
|
7363
|
-
method: "refreshDeviceManagement",
|
|
7364
|
-
invocation: { kind: "direct" },
|
|
7365
|
-
parameters: [],
|
|
7366
|
-
result: {
|
|
7367
|
-
mode: "strict",
|
|
7368
|
-
typeSymbol: "@awiki/dsh-plugin/types#AwikiResult",
|
|
7369
|
-
schema: _awiki_dsh_plugin_awiki_refreshDeviceManagement_result$schema
|
|
7370
|
-
},
|
|
7371
|
-
sourceLocation: {
|
|
7372
|
-
"file": "packages/dsh-awiki/src/index.ts",
|
|
7373
|
-
"line": 120,
|
|
7374
|
-
"column": 3
|
|
7375
|
-
}
|
|
7376
|
-
},
|
|
7377
7041
|
{
|
|
7378
7042
|
id: "@awiki/dsh-plugin#awiki/registerIdentity",
|
|
7379
7043
|
service: "awiki",
|
|
@@ -7397,34 +7061,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7397
7061
|
},
|
|
7398
7062
|
sourceLocation: {
|
|
7399
7063
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7400
|
-
"line":
|
|
7401
|
-
"column": 9
|
|
7402
|
-
}
|
|
7403
|
-
},
|
|
7404
|
-
{
|
|
7405
|
-
id: "@awiki/dsh-plugin#awiki/rejectDeviceJoin",
|
|
7406
|
-
service: "awiki",
|
|
7407
|
-
namespace: "awiki",
|
|
7408
|
-
method: "rejectDeviceJoin",
|
|
7409
|
-
invocation: { kind: "direct" },
|
|
7410
|
-
parameters: [{
|
|
7411
|
-
name: "request",
|
|
7412
|
-
wire: "request",
|
|
7413
|
-
source: "json",
|
|
7414
|
-
codec: {
|
|
7415
|
-
mode: "strict",
|
|
7416
|
-
typeSymbol: "@awiki/dsh-plugin/types#AwikiRejectDeviceJoinRequest",
|
|
7417
|
-
schema: _awiki_dsh_plugin_awiki_rejectDeviceJoin_parameter_0$schema
|
|
7418
|
-
}
|
|
7419
|
-
}],
|
|
7420
|
-
result: {
|
|
7421
|
-
mode: "strict",
|
|
7422
|
-
typeSymbol: "@awiki/dsh-plugin/types#AwikiResult",
|
|
7423
|
-
schema: _awiki_dsh_plugin_awiki_rejectDeviceJoin_result$schema
|
|
7424
|
-
},
|
|
7425
|
-
sourceLocation: {
|
|
7426
|
-
"file": "packages/dsh-awiki/src/index.ts",
|
|
7427
|
-
"line": 133,
|
|
7064
|
+
"line": 101,
|
|
7428
7065
|
"column": 9
|
|
7429
7066
|
}
|
|
7430
7067
|
},
|
|
@@ -7451,7 +7088,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7451
7088
|
},
|
|
7452
7089
|
sourceLocation: {
|
|
7453
7090
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7454
|
-
"line":
|
|
7091
|
+
"line": 152,
|
|
7455
7092
|
"column": 3
|
|
7456
7093
|
}
|
|
7457
7094
|
},
|
|
@@ -7478,42 +7115,33 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7478
7115
|
},
|
|
7479
7116
|
sourceLocation: {
|
|
7480
7117
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7481
|
-
"line":
|
|
7118
|
+
"line": 131,
|
|
7482
7119
|
"column": 3
|
|
7483
7120
|
}
|
|
7484
7121
|
},
|
|
7485
7122
|
{
|
|
7486
|
-
id: "@awiki/dsh-plugin#awiki/
|
|
7123
|
+
id: "@awiki/dsh-plugin#awiki/resumeGroupRebindRecovery",
|
|
7487
7124
|
service: "awiki",
|
|
7488
7125
|
namespace: "awiki",
|
|
7489
|
-
method: "
|
|
7126
|
+
method: "resumeGroupRebindRecovery",
|
|
7490
7127
|
invocation: { kind: "direct" },
|
|
7491
|
-
parameters: [
|
|
7492
|
-
name: "request",
|
|
7493
|
-
wire: "request",
|
|
7494
|
-
source: "json",
|
|
7495
|
-
codec: {
|
|
7496
|
-
mode: "strict",
|
|
7497
|
-
typeSymbol: "@awiki/dsh-plugin/types#AwikiRecoveryOperationRequest",
|
|
7498
|
-
schema: _awiki_dsh_plugin_awiki_resumeRecovery_parameter_0$schema
|
|
7499
|
-
}
|
|
7500
|
-
}],
|
|
7128
|
+
parameters: [],
|
|
7501
7129
|
result: {
|
|
7502
7130
|
mode: "strict",
|
|
7503
7131
|
typeSymbol: "@awiki/dsh-plugin/types#AwikiResult",
|
|
7504
|
-
schema:
|
|
7132
|
+
schema: _awiki_dsh_plugin_awiki_resumeGroupRebindRecovery_result$schema
|
|
7505
7133
|
},
|
|
7506
7134
|
sourceLocation: {
|
|
7507
7135
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7508
|
-
"line":
|
|
7136
|
+
"line": 155,
|
|
7509
7137
|
"column": 9
|
|
7510
7138
|
}
|
|
7511
7139
|
},
|
|
7512
7140
|
{
|
|
7513
|
-
id: "@awiki/dsh-plugin#awiki/
|
|
7141
|
+
id: "@awiki/dsh-plugin#awiki/resumeRecovery",
|
|
7514
7142
|
service: "awiki",
|
|
7515
7143
|
namespace: "awiki",
|
|
7516
|
-
method: "
|
|
7144
|
+
method: "resumeRecovery",
|
|
7517
7145
|
invocation: { kind: "direct" },
|
|
7518
7146
|
parameters: [{
|
|
7519
7147
|
name: "request",
|
|
@@ -7521,18 +7149,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7521
7149
|
source: "json",
|
|
7522
7150
|
codec: {
|
|
7523
7151
|
mode: "strict",
|
|
7524
|
-
typeSymbol: "@awiki/dsh-plugin/types#
|
|
7525
|
-
schema:
|
|
7152
|
+
typeSymbol: "@awiki/dsh-plugin/types#AwikiRecoveryOperationRequest",
|
|
7153
|
+
schema: _awiki_dsh_plugin_awiki_resumeRecovery_parameter_0$schema
|
|
7526
7154
|
}
|
|
7527
7155
|
}],
|
|
7528
7156
|
result: {
|
|
7529
7157
|
mode: "strict",
|
|
7530
7158
|
typeSymbol: "@awiki/dsh-plugin/types#AwikiResult",
|
|
7531
|
-
schema:
|
|
7159
|
+
schema: _awiki_dsh_plugin_awiki_resumeRecovery_result$schema
|
|
7532
7160
|
},
|
|
7533
7161
|
sourceLocation: {
|
|
7534
7162
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7535
|
-
"line":
|
|
7163
|
+
"line": 125,
|
|
7536
7164
|
"column": 9
|
|
7537
7165
|
}
|
|
7538
7166
|
},
|
|
@@ -7559,7 +7187,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7559
7187
|
},
|
|
7560
7188
|
sourceLocation: {
|
|
7561
7189
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7562
|
-
"line":
|
|
7190
|
+
"line": 186,
|
|
7563
7191
|
"column": 9
|
|
7564
7192
|
}
|
|
7565
7193
|
},
|
|
@@ -7586,7 +7214,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7586
7214
|
},
|
|
7587
7215
|
sourceLocation: {
|
|
7588
7216
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7589
|
-
"line":
|
|
7217
|
+
"line": 204,
|
|
7590
7218
|
"column": 9
|
|
7591
7219
|
}
|
|
7592
7220
|
},
|
|
@@ -7613,7 +7241,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7613
7241
|
},
|
|
7614
7242
|
sourceLocation: {
|
|
7615
7243
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7616
|
-
"line":
|
|
7244
|
+
"line": 113,
|
|
7617
7245
|
"column": 3
|
|
7618
7246
|
}
|
|
7619
7247
|
},
|
|
@@ -7640,8 +7268,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7640
7268
|
},
|
|
7641
7269
|
sourceLocation: {
|
|
7642
7270
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7643
|
-
"line":
|
|
7644
|
-
"column":
|
|
7271
|
+
"line": 98,
|
|
7272
|
+
"column": 3
|
|
7645
7273
|
}
|
|
7646
7274
|
},
|
|
7647
7275
|
{
|
|
@@ -7667,37 +7295,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7667
7295
|
},
|
|
7668
7296
|
sourceLocation: {
|
|
7669
7297
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7670
|
-
"line":
|
|
7298
|
+
"line": 183,
|
|
7671
7299
|
"column": 3
|
|
7672
7300
|
}
|
|
7673
7301
|
},
|
|
7674
|
-
{
|
|
7675
|
-
id: "@awiki/dsh-plugin#awiki/startDeviceJoinVerification",
|
|
7676
|
-
service: "awiki",
|
|
7677
|
-
namespace: "awiki",
|
|
7678
|
-
method: "startDeviceJoinVerification",
|
|
7679
|
-
invocation: { kind: "direct" },
|
|
7680
|
-
parameters: [{
|
|
7681
|
-
name: "request",
|
|
7682
|
-
wire: "request",
|
|
7683
|
-
source: "json",
|
|
7684
|
-
codec: {
|
|
7685
|
-
mode: "strict",
|
|
7686
|
-
typeSymbol: "@awiki/dsh-plugin/types#AwikiRequestRefInput",
|
|
7687
|
-
schema: _awiki_dsh_plugin_awiki_startDeviceJoinVerification_parameter_0$schema
|
|
7688
|
-
}
|
|
7689
|
-
}],
|
|
7690
|
-
result: {
|
|
7691
|
-
mode: "strict",
|
|
7692
|
-
typeSymbol: "@awiki/dsh-plugin/types#AwikiResult",
|
|
7693
|
-
schema: _awiki_dsh_plugin_awiki_startDeviceJoinVerification_result$schema
|
|
7694
|
-
},
|
|
7695
|
-
sourceLocation: {
|
|
7696
|
-
"file": "packages/dsh-awiki/src/index.ts",
|
|
7697
|
-
"line": 123,
|
|
7698
|
-
"column": 9
|
|
7699
|
-
}
|
|
7700
|
-
},
|
|
7701
7302
|
{
|
|
7702
7303
|
id: "@awiki/dsh-plugin#awiki/summarizeConversation",
|
|
7703
7304
|
service: "awiki",
|
|
@@ -7721,7 +7322,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7721
7322
|
},
|
|
7722
7323
|
sourceLocation: {
|
|
7723
7324
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7724
|
-
"line":
|
|
7325
|
+
"line": 175,
|
|
7725
7326
|
"column": 9
|
|
7726
7327
|
}
|
|
7727
7328
|
},
|
|
@@ -7748,7 +7349,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7748
7349
|
},
|
|
7749
7350
|
sourceLocation: {
|
|
7750
7351
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7751
|
-
"line":
|
|
7352
|
+
"line": 161,
|
|
7752
7353
|
"column": 3
|
|
7753
7354
|
}
|
|
7754
7355
|
},
|
|
@@ -7775,7 +7376,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7775
7376
|
},
|
|
7776
7377
|
sourceLocation: {
|
|
7777
7378
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7778
|
-
"line":
|
|
7379
|
+
"line": 104,
|
|
7779
7380
|
"column": 9
|
|
7780
7381
|
}
|
|
7781
7382
|
},
|
|
@@ -7802,7 +7403,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7802
7403
|
},
|
|
7803
7404
|
sourceLocation: {
|
|
7804
7405
|
"file": "packages/dsh-awiki/src/index.ts",
|
|
7805
|
-
"line":
|
|
7406
|
+
"line": 110,
|
|
7806
7407
|
"column": 3
|
|
7807
7408
|
}
|
|
7808
7409
|
}
|
|
@@ -7831,13 +7432,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7831
7432
|
const AWIKI_CLEAR_LOCAL_DATA_CONFIRMATION = "clear-awiki-local-data";
|
|
7832
7433
|
//#endregion
|
|
7833
7434
|
//#region \0dsh-awiki-css:AwikiIdentityPage.module.css.mjs
|
|
7834
|
-
const css$
|
|
7835
|
-
const tagId$
|
|
7836
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
7435
|
+
const css$4 = "._0dbJua_page{width:100%;height:100%;min-height:0;color:var(--dsw-alias-label-secondary);grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}._0dbJua_navigation{box-sizing:border-box;align-items:center;min-height:44px;padding:8px 16px 0;display:flex}._0dbJua_backButton{min-height:36px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:8px;align-items:center;gap:6px;padding:0 8px;font-size:12px;line-height:18px;display:inline-flex}._0dbJua_backButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._0dbJua_backButton:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}._0dbJua_backButton:disabled{cursor:default;opacity:.5}._0dbJua_viewport{min-height:0;overflow:auto}._0dbJua_content{box-sizing:border-box;align-content:center;width:min(400px,100%);min-height:100%;margin:0 auto;padding:28px 32px;display:grid}@media (height<=560px){._0dbJua_navigation{min-height:36px;padding:4px 8px 0}._0dbJua_backButton{min-height:32px}._0dbJua_content{align-content:start;padding:12px 16px}}@media (prefers-reduced-motion:reduce){._0dbJua_backButton{transition-duration:.001ms!important}}";
|
|
7436
|
+
const tagId$4 = "@awiki/dsh-plugin/AwikiIdentityPage.module.css";
|
|
7437
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
|
|
7837
7438
|
const tag = document.createElement("style");
|
|
7838
7439
|
tag.dataset.plugin = "@awiki/dsh-plugin";
|
|
7839
|
-
tag.dataset.pluginCss = tagId$
|
|
7840
|
-
tag.textContent = css$
|
|
7440
|
+
tag.dataset.pluginCss = tagId$4;
|
|
7441
|
+
tag.textContent = css$4;
|
|
7841
7442
|
document.head.appendChild(tag);
|
|
7842
7443
|
}
|
|
7843
7444
|
var _dsh_awiki_css_AwikiIdentityPage_module_css_default = {
|
|
@@ -7875,13 +7476,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7875
7476
|
}
|
|
7876
7477
|
//#endregion
|
|
7877
7478
|
//#region \0dsh-awiki-css:AwikiOverlay.module.css.mjs
|
|
7878
|
-
const css$4 = ".EtEeYG_trigger{z-index:2;border:1px solid var(--dsw-alias-border-l2);width:48px;height:48px;color:var(--dsw-alias-brand-primary);box-shadow:var(--dsw-shadow-lv2);cursor:grab;font:inherit;touch-action:none;user-select:none;background:#fff;border-radius:50%;place-items:center;padding:0;display:grid;position:fixed;overflow:visible}.EtEeYG_trigger:hover{box-shadow:var(--dsw-shadow-lv3);background:#fff}.EtEeYG_trigger:active,.EtEeYG_trigger[data-dragging]{cursor:grabbing}.EtEeYG_launcherIcon{object-fit:cover;pointer-events:none;border-radius:50%;width:100%;height:100%;display:block}.EtEeYG_unreadBadge{border:2px solid var(--dsw-alias-bg-base);background:var(--dsw-alias-state-error-primary);color:#fff;box-sizing:border-box;pointer-events:none;border-radius:10px;place-items:center;min-width:20px;height:20px;padding:0 5px;font-size:11px;font-weight:600;line-height:16px;display:grid;position:absolute;top:-5px;right:-5px}.EtEeYG_trigger:focus-visible,.EtEeYG_drawer button:focus-visible,.EtEeYG_drawer input:focus-visible,.EtEeYG_drawer textarea:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.EtEeYG_drawer{--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);z-index:1;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);width:min(720px,100vw - 80px);min-width:min(360px,100vw - 80px);height:min(720px,100vh - 16px);color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv3);border-radius:16px;flex-direction:column;transition:width .16s;display:flex;position:fixed;overflow:hidden}.EtEeYG_drawer[data-mode=mail]{width:min(1040px,100vw - 80px)}.EtEeYG_drawer[data-resizing]{user-select:none;transition:none}.EtEeYG_resizeHandle{z-index:5;touch-action:none;user-select:none;position:absolute}.EtEeYG_resizeHandle[data-resize-handle=n],.EtEeYG_resizeHandle[data-resize-handle=s]{cursor:ns-resize;height:8px;left:14px;right:14px}.EtEeYG_resizeHandle[data-resize-handle=n]{top:0}.EtEeYG_resizeHandle[data-resize-handle=s]{bottom:0}.EtEeYG_resizeHandle[data-resize-handle=e],.EtEeYG_resizeHandle[data-resize-handle=w]{cursor:ew-resize;width:8px;top:14px;bottom:14px}.EtEeYG_resizeHandle[data-resize-handle=e]{right:0}.EtEeYG_resizeHandle[data-resize-handle=w]{left:0}.EtEeYG_resizeHandle[data-resize-handle=ne],.EtEeYG_resizeHandle[data-resize-handle=se],.EtEeYG_resizeHandle[data-resize-handle=sw],.EtEeYG_resizeHandle[data-resize-handle=nw]{width:14px;height:14px}.EtEeYG_resizeHandle[data-resize-handle=ne]{cursor:nesw-resize;top:0;right:0}.EtEeYG_resizeHandle[data-resize-handle=se]{cursor:nwse-resize;bottom:0;right:0}.EtEeYG_resizeHandle[data-resize-handle=sw]{cursor:nesw-resize;bottom:0;left:0}.EtEeYG_resizeHandle[data-resize-handle=nw]{cursor:nwse-resize;top:0;left:0}.EtEeYG_drawerHeader{border-bottom:1px solid var(--dsw-alias-border-l1);cursor:grab;touch-action:none;user-select:none;flex:none;align-items:center;gap:8px;height:58px;padding:0 14px 0 18px;display:flex}.EtEeYG_drawerHeader[data-dragging]{cursor:grabbing}.EtEeYG_drawerHeader>div{flex:1;align-items:center;gap:8px;display:flex}.EtEeYG_drawerHeader h2{margin:0;font-size:16px;line-height:24px}.EtEeYG_drawerHeader button,.EtEeYG_back{cursor:pointer;width:32px;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:9px;place-items:center;padding:0;display:grid}.EtEeYG_drawerHeader button:hover,.EtEeYG_back:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.EtEeYG_centerState,.EtEeYG_threadEmpty{text-align:center;color:var(--dsw-alias-label-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;padding:32px;display:flex}.EtEeYG_centerState p{overflow-wrap:anywhere;max-width:420px;margin:0}.EtEeYG_registrationIcon{background:var(--dsw-alias-interactive-bg-active);width:48px;height:48px;color:var(--dsw-alias-brand-primary);border-radius:50%;justify-self:center;place-items:center;display:grid}.EtEeYG_fileDraft input,.EtEeYG_composeRow textarea{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);width:100%;color:var(--dsw-alias-label-primary);font:inherit;border-radius:10px}.EtEeYG_primary,.EtEeYG_more,.EtEeYG_fileDraft button{background:var(--dsw-alias-button-primary-fill);min-height:36px;color:var(--dsw-alias-label-primary-inverted);cursor:pointer;font:inherit;border:0;border-radius:10px;padding:0 14px}.EtEeYG_primary:hover,.EtEeYG_fileDraft button:hover{background:var(--dsw-alias-button-primary-hover)}.EtEeYG_primary:disabled,.EtEeYG_fileDraft button:disabled{opacity:.5;cursor:default}.EtEeYG_secondary{border:1px solid var(--dsw-alias-border-l2);min-height:36px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;background:0 0;border-radius:10px;padding:0 14px}.EtEeYG_secondary:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_composeBackdrop{background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 72%, transparent);place-items:center;padding:24px;display:grid;position:absolute;inset:58px 0 0;overflow:auto}.EtEeYG_composeCard{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);width:min(360px,100%);box-shadow:var(--dsw-shadow-lv3);border-radius:14px;gap:12px;padding:20px;display:grid}.EtEeYG_composeCard h3{margin:0;font-size:16px;line-height:24px}.EtEeYG_composeCard p{color:var(--dsw-alias-label-secondary);margin:0;font-size:13px;line-height:20px}.EtEeYG_composeCard label{color:var(--dsw-alias-label-secondary);gap:6px;font-size:13px;line-height:20px;display:grid}.EtEeYG_composeCard input,.EtEeYG_composeCard textarea{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);width:100%;color:var(--dsw-alias-label-primary);font:inherit;border-radius:10px;padding:9px 12px}.EtEeYG_composeCard input{height:40px;padding-block:0}.EtEeYG_composeCard textarea{resize:vertical;min-height:92px}.EtEeYG_composeActions{justify-content:flex-end;gap:8px;display:flex}.EtEeYG_logoutWarning{color:var(--dsw-alias-label-secondary);gap:8px;font-size:13px;line-height:20px;display:grid}.EtEeYG_logoutWarning p{margin:0}.EtEeYG_logoutConfirm{border-color:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary)}.EtEeYG_compactModal.EtEeYG_compactModal{max-height:calc(100vh - 48px)}.EtEeYG_compactModalContent{min-height:0;overflow-y:auto}.EtEeYG_linkButton{color:var(--dsw-alias-brand-primary);cursor:pointer;background:0 0;border:0}.EtEeYG_notice{color:var(--dsw-alias-state-success-primary);text-align:center}.EtEeYG_identityAccess{flex:1;min-height:0;overflow:hidden}.EtEeYG_recoveryForm{width:100%;min-width:0;color:var(--dsw-alias-label-secondary);gap:14px;display:grid}.EtEeYG_recoveryForm h3{color:var(--dsw-alias-label-primary);text-align:center;margin:0}.EtEeYG_recoveryForm>p{text-align:center;margin:0;font-size:13px;line-height:20px}.EtEeYG_recoveryForm>label:not(.EtEeYG_recoveryConfirmation){gap:6px;font-size:13px;line-height:20px;display:grid}.EtEeYG_recoveryForm>label>input:not([type=checkbox]){box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);width:100%;height:40px;color:var(--dsw-alias-label-primary);font:inherit;border-radius:8px;padding:0 12px}.EtEeYG_recoveryForm input:focus-visible,.EtEeYG_recoveryForm button:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.EtEeYG_recoveryStatusLine{border-bottom:1px solid var(--dsw-alias-border-l1);gap:3px;min-width:0;padding-bottom:10px;display:grid}.EtEeYG_recoveryStatusLine span{color:var(--dsw-alias-brand-primary);font-size:12px;font-weight:600}.EtEeYG_recoveryIdentitySummary{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;grid-template-columns:max-content minmax(0,1fr);gap:6px 14px;min-width:0;padding:12px;font-size:12px;line-height:18px;display:grid}.EtEeYG_recoveryIdentitySummary span{color:var(--dsw-alias-label-tertiary)}.EtEeYG_recoveryIdentitySummary strong{overflow-wrap:anywhere;min-width:0;color:var(--dsw-alias-label-primary)}.EtEeYG_recoveryDiagnostics{border-top:1px solid var(--dsw-alias-border-l1);min-width:0;color:var(--dsw-alias-label-tertiary);padding-top:2px;font-size:11px;line-height:17px}.EtEeYG_recoveryDiagnostics summary{cursor:pointer;width:max-content;color:var(--dsw-alias-label-secondary);user-select:none}.EtEeYG_recoveryDiagnostics summary:hover{color:var(--dsw-alias-label-primary)}.EtEeYG_recoveryDiagnostics summary:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px;border-radius:4px}.EtEeYG_recoveryDiagnostics dl{gap:6px;margin:8px 0 0;display:grid}.EtEeYG_recoveryDiagnostics dl>div{gap:2px;min-width:0;display:grid}.EtEeYG_recoveryDiagnostics dt{color:var(--dsw-alias-label-tertiary)}.EtEeYG_recoveryDiagnostics dd{min-width:0;margin:0}.EtEeYG_recoveryDiagnostics code{overflow-wrap:anywhere;color:var(--dsw-alias-label-secondary);font-size:10px;line-height:16px;display:block}.EtEeYG_recoveryImpact{border-left:3px solid var(--dsw-alias-brand-primary);background:var(--dsw-alias-bg-layer-2);gap:6px;padding:12px;display:grid}.EtEeYG_recoveryImpact p{align-items:flex-start;gap:7px;margin:0;font-size:12px;line-height:18px;display:flex}.EtEeYG_recoveryImpact svg{flex:none;margin-top:2px}.EtEeYG_recoveryImpact p[data-tone=success] svg{color:var(--dsw-alias-state-success-primary)}.EtEeYG_recoveryImpact p[data-tone=neutral] svg{color:var(--dsw-alias-label-tertiary)}.EtEeYG_recoveryHandle{overflow-wrap:anywhere;color:var(--dsw-alias-label-primary);text-align:center;margin:-8px 0 0;font-size:13px;line-height:20px}.EtEeYG_recoveryConfirmationCopy{color:var(--dsw-alias-label-secondary);text-align:left;margin:0;font-size:12px;line-height:18px}.EtEeYG_recoveryProgressPanel{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);text-align:center;border-radius:8px;justify-items:center;gap:10px;min-width:0;padding:16px;display:grid}.EtEeYG_recoveryProgressPanel>svg{color:var(--dsw-alias-brand-primary);animation:1s linear infinite EtEeYG_summary-spin}.EtEeYG_recoveryProgressPanel p{margin:0;font-size:12px;line-height:18px}.EtEeYG_recoveryProgressPanel button{justify-content:center;align-items:center;gap:6px;width:100%;display:flex}.EtEeYG_chat{flex:1;grid-template-columns:240px minmax(0,1fr);min-height:0;display:grid}.EtEeYG_roster{border-right:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);flex-direction:column;min-width:0;display:flex}.EtEeYG_identityCard{background:var(--dsw-alias-bg-layer-3);border-radius:12px;flex-direction:column;gap:2px;margin:14px;padding:12px;display:flex}.EtEeYG_identityNameRow{align-items:center;min-width:0;min-height:24px;display:flex}.EtEeYG_profileAvatar{background:var(--dsw-alias-interactive-bg-active);width:24px;height:24px;color:var(--dsw-alias-brand-primary);border-radius:50%;flex:none;place-items:center;margin-right:7px;display:grid}.EtEeYG_identityNameText{min-width:0;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:14px;line-height:22px;overflow:hidden}.EtEeYG_identityName{min-width:0;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;background:0 0;border:0;flex:1;padding:0;font-size:16px;font-weight:600;line-height:24px;overflow:hidden}.EtEeYG_identityName:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px;border-radius:4px}.EtEeYG_identityEdit{width:24px;height:24px;color:var(--dsw-alias-label-secondary);cursor:pointer;opacity:.72;background:0 0;border:0;border-radius:6px;flex:none;place-items:center;margin-left:4px;padding:0;transition:opacity .12s;display:grid}.EtEeYG_identityNameRow:hover .EtEeYG_identityEdit,.EtEeYG_identityNameRow:focus-within .EtEeYG_identityEdit{opacity:1}.EtEeYG_identityEdit:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.EtEeYG_identityEditor{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.EtEeYG_identityEditor input{border:1px solid var(--dsw-alias-brand-primary);background:var(--dsw-alias-bg-layer-1);min-width:0;height:28px;color:var(--dsw-alias-label-primary);font:inherit;border-radius:7px;outline:none;flex:1;padding:0 8px;font-size:13px}.EtEeYG_identityEditor button{width:26px;height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;place-items:center;padding:0;display:grid}.EtEeYG_identityEditor button:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.EtEeYG_identityEditor button:disabled,.EtEeYG_identityName:disabled{cursor:default;opacity:.5}.EtEeYG_identityEdit:disabled{cursor:default}.EtEeYG_identityHandle{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:16px;overflow:hidden}.EtEeYG_identityStatus{color:var(--dsw-alias-state-success-primary);margin-top:4px;font-size:12px;line-height:18px}.EtEeYG_identityError{color:var(--dsw-alias-state-error-primary);margin-top:4px;font-size:11px;line-height:16px}.EtEeYG_identityCard i{background:var(--dsw-alias-state-success-primary);border-radius:50%;width:6px;height:6px;margin-right:5px;display:inline-block}.EtEeYG_profileBio{color:var(--dsw-alias-label-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:6px 0 2px;font-size:11px;line-height:17px;display:-webkit-box;overflow:hidden}.EtEeYG_profileTags{flex-wrap:wrap;gap:4px;margin-top:5px;display:flex}.EtEeYG_profileTags>span{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);min-width:0;max-width:100%;min-height:20px;color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;border-radius:7px;align-items:center;gap:3px;padding:0 6px;font-size:10px;line-height:16px;display:inline-flex}.EtEeYG_profileTags>span>button{width:16px;height:16px;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;place-items:center;padding:0;display:grid}.EtEeYG_profileTags>span>button:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_profileEditor{gap:10px;display:grid}.EtEeYG_profileEditor label{color:var(--dsw-alias-label-secondary);gap:4px;font-size:11px;line-height:16px;display:grid;position:relative}.EtEeYG_profileEditor label>small{color:var(--dsw-alias-label-tertiary);font-size:10px;position:absolute;top:0;right:1px}.EtEeYG_profileEditor input,.EtEeYG_profileEditor textarea{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);width:100%;color:var(--dsw-alias-label-primary);font:inherit;border-radius:7px;padding:7px 8px;font-size:12px}.EtEeYG_profileEditor input{height:32px;padding-block:0}.EtEeYG_profileEditor textarea{resize:vertical}.EtEeYG_profileTagEditor{gap:4px;display:grid}.EtEeYG_profileTagEditor>div:first-of-type{grid-template-columns:minmax(0,1fr) 30px;gap:5px;display:grid}.EtEeYG_profileTagEditor>div:first-of-type button{border:1px solid var(--dsw-alias-border-l2);width:30px;height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:7px;place-items:center;padding:0;display:grid}.EtEeYG_profileEditorActions{grid-template-columns:1fr 1fr;gap:6px;margin-top:2px;display:grid}.EtEeYG_profileEditorActions button{min-width:0;padding-inline:6px;font-size:12px}.EtEeYG_modePanel{flex:1;min-height:0;display:none}.EtEeYG_modePanel[data-active]{display:flex}.EtEeYG_modeTabs{background:var(--dsw-alias-bg-layer-3);border-radius:9px;grid-template-columns:1fr 1fr;gap:4px;margin:0 14px 12px;padding:3px;display:grid}.EtEeYG_modeTabs button{min-height:30px;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:7px;justify-content:center;align-items:center;gap:5px;padding:0 8px;font-size:12px;line-height:18px;display:flex}.EtEeYG_modeTabs button:hover{color:var(--dsw-alias-label-primary)}.EtEeYG_modeTabs button[aria-selected=true]{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv1)}.EtEeYG_modeTabs small{min-width:18px;color:var(--dsw-alias-brand-primary);font-size:10px;line-height:14px}.EtEeYG_rosterHeader{justify-content:space-between;align-items:center;min-height:32px;padding:0 8px 8px 16px;display:flex}.EtEeYG_rosterTitle{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.EtEeYG_rosterActions{align-items:center;gap:2px;display:flex}.EtEeYG_rosterAction{width:32px;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:9px;place-items:center;padding:0;display:grid}.EtEeYG_rosterAction:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.EtEeYG_rosterActions .EtEeYG_rosterAction{position:relative}.EtEeYG_rosterActions .EtEeYG_rosterAction small{background:var(--dsw-alias-bg-layer-3);min-width:14px;height:14px;color:var(--dsw-alias-label-secondary);box-sizing:border-box;border-radius:7px;place-items:center;padding:0 3px;font-size:9px;line-height:12px;display:grid;position:absolute;top:1px;right:0}.EtEeYG_conversationList{flex:1;min-height:0;padding:0 8px;overflow:auto}.EtEeYG_conversationRow{width:100%;color:inherit;background:0 0;border-radius:10px;grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid}.EtEeYG_conversationRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_conversationRow[data-active]{background:var(--dsw-alias-interactive-bg-active)}.EtEeYG_conversationSelect{width:100%;min-width:0;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:10px;padding:9px;display:flex}.EtEeYG_conversationMenu{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;opacity:0;background:0 0;border:0;border-radius:7px;place-items:center;margin-right:5px;padding:0;display:grid}.EtEeYG_conversationRow:hover .EtEeYG_conversationMenu,.EtEeYG_conversationRow:focus-within .EtEeYG_conversationMenu,.EtEeYG_conversationMenu[aria-expanded=true]{opacity:1}.EtEeYG_conversationMenu:hover{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-primary)}.EtEeYG_conversationMenu:disabled{cursor:default;opacity:.45}.EtEeYG_avatar{background:var(--dsw-alias-interactive-bg-active);width:34px;height:34px;color:var(--dsw-alias-brand-primary);border-radius:50%;flex:none;place-items:center;font-size:12px;line-height:18px;display:grid;position:relative;overflow:visible}.EtEeYG_conversationUnreadBadge{border:2px solid var(--dsw-alias-bg-layer-2);background:var(--dsw-alias-state-error-primary);min-width:18px;height:18px;color:var(--dsw-alias-label-primary-inverted);box-sizing:border-box;pointer-events:none;border-radius:9px;place-items:center;padding:0 4px;font-size:10px;font-weight:600;line-height:14px;display:grid;position:absolute;top:-6px;right:-7px}.EtEeYG_conversationText{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.EtEeYG_conversationHeader{align-items:center;gap:8px;min-width:0;display:flex}.EtEeYG_conversationHeader strong{flex:1;min-width:0}.EtEeYG_conversationTime{color:var(--dsw-alias-label-tertiary);flex:none;font-size:11px;font-weight:400;line-height:16px}.EtEeYG_conversationText strong,.EtEeYG_conversationText small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.EtEeYG_conversationText strong{font-size:13px;line-height:20px}.EtEeYG_conversationText small{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.EtEeYG_more{background:var(--dsw-alias-button-elevated-fill);color:var(--dsw-alias-label-secondary);margin:8px}.EtEeYG_more:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_hiddenConversationList{max-height:min(320px,48vh);display:grid;overflow:auto}.EtEeYG_hiddenConversationRow{border-bottom:1px solid var(--dsw-alias-border-l1);grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:50px;padding:6px 2px;display:grid}.EtEeYG_hiddenConversationRow:last-child{border-bottom:0}.EtEeYG_hiddenConversationRow .EtEeYG_avatar{width:30px;height:30px}.EtEeYG_hiddenConversationRow>span:nth-child(2){min-width:0;display:grid}.EtEeYG_hiddenConversationRow strong,.EtEeYG_hiddenConversationRow small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.EtEeYG_hiddenConversationRow strong{font-size:12px;line-height:18px}.EtEeYG_hiddenConversationRow small{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:15px}.EtEeYG_hiddenConversationRow>button{border:1px solid var(--dsw-alias-border-l2);min-height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;background:0 0;border-radius:7px;padding:0 9px;font-size:11px}.EtEeYG_hiddenConversationRow>button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_hiddenConversationRow>button:disabled{cursor:default;opacity:.55}.EtEeYG_conversationPreferenceError{color:var(--dsw-alias-state-error-primary);font-size:11px;line-height:17px}.EtEeYG_thread{flex-direction:column;min-width:0;min-height:0;display:flex;position:relative}.EtEeYG_threadHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:8px;height:56px;padding:0 14px;display:flex}.EtEeYG_threadTitle{flex-direction:column;flex:1;min-width:0;display:flex}.EtEeYG_threadTitle strong,.EtEeYG_threadTitle small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.EtEeYG_threadHeader small{color:var(--dsw-alias-label-tertiary)}.EtEeYG_threadAction{width:30px;height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:8px;flex:none;place-items:center;padding:0;display:grid}.EtEeYG_threadAction:hover,.EtEeYG_threadAction[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.EtEeYG_groupAccessNotice{border-bottom:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);flex:none;grid-template-columns:20px minmax(0,1fr) auto;align-items:start;gap:8px 10px;padding:11px 14px;display:grid}.EtEeYG_groupAccessNotice[data-status=blocked],.EtEeYG_groupAccessNotice[data-status=not-member]{background:var(--dsw-alias-interactive-bg-hover-danger)}.EtEeYG_groupAccessNotice[data-compact]{grid-template-columns:20px minmax(0,1fr);padding:12px 16px}.EtEeYG_groupAccessIcon{min-height:20px;color:var(--dsw-alias-label-secondary);place-items:center;display:grid}.EtEeYG_groupAccessNotice[data-status=loading] .EtEeYG_groupAccessIcon svg,.EtEeYG_groupAccessNotice[data-status=recovering] .EtEeYG_groupAccessIcon svg{animation:1s linear infinite EtEeYG_summary-spin}.EtEeYG_groupAccessCopy{gap:2px;min-width:0;display:grid}.EtEeYG_groupAccessCopy strong{font-size:12px;line-height:18px}.EtEeYG_groupAccessCopy small{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;font-size:11px;line-height:17px}.EtEeYG_groupAccessActions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.EtEeYG_groupAccessNotice[data-compact] .EtEeYG_groupAccessActions{grid-column:2;justify-content:flex-start}.EtEeYG_groupAccessActions button{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);min-height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;border-radius:7px;justify-content:center;align-items:center;gap:5px;padding:0 8px;font-size:11px;line-height:16px;display:flex}.EtEeYG_groupAccessActions button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_groupAccessActions button:disabled{cursor:default;opacity:.55}.EtEeYG_groupDetails{z-index:4;border-left:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);width:min(360px,100%);min-width:0;box-shadow:var(--dsw-shadow-lv2);flex-direction:column;display:flex;position:absolute;top:56px;bottom:0;right:0;overflow:hidden}.EtEeYG_groupDetailsHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:12px;min-height:54px;padding:0 12px 0 16px;display:flex}.EtEeYG_groupDetailsHeader>div{flex-direction:column;flex:1;min-width:0;display:flex}.EtEeYG_groupDetailsHeader strong{font-size:14px;line-height:21px}.EtEeYG_groupDetailsHeader small{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:10px;line-height:15px;overflow:hidden}.EtEeYG_groupDetailsHeader button,.EtEeYG_groupMemberHeading button,.EtEeYG_groupMemberRemove{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:7px;flex:none;place-items:center;padding:0;display:grid}.EtEeYG_groupDetailsHeader button:hover,.EtEeYG_groupMemberHeading button:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.EtEeYG_groupDetailsLoading{color:var(--dsw-alias-label-tertiary);margin:auto;font-size:12px}.EtEeYG_groupSummary{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;gap:5px;padding:16px;display:grid}.EtEeYG_groupSummary>strong{font-size:15px;line-height:22px}.EtEeYG_groupSummary>code{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.EtEeYG_groupSummary>p{color:var(--dsw-alias-label-secondary);margin:3px 0 0;font-size:12px;line-height:18px}.EtEeYG_groupSummary dl{grid-template-columns:1fr 1fr;gap:8px;margin:8px 0 0;display:grid}.EtEeYG_groupSummary dl>div{gap:1px;display:grid}.EtEeYG_groupSummary dt{color:var(--dsw-alias-label-tertiary);font-size:10px}.EtEeYG_groupSummary dd{color:var(--dsw-alias-label-primary);margin:0;font-size:12px}.EtEeYG_groupInvite{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;gap:5px;padding:12px 16px;display:grid}.EtEeYG_groupInvite label{color:var(--dsw-alias-label-secondary);font-size:11px}.EtEeYG_groupInvite>div{grid-template-columns:minmax(0,1fr) 32px;gap:6px;display:grid}.EtEeYG_groupInvite input{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);min-width:0;height:32px;color:var(--dsw-alias-label-primary);font:inherit;border-radius:7px;padding:0 9px;font-size:12px}.EtEeYG_groupInvite button{background:var(--dsw-alias-button-primary-fill);width:32px;height:32px;color:var(--dsw-alias-label-primary-inverted);cursor:pointer;border:0;border-radius:7px;place-items:center;padding:0;display:grid}.EtEeYG_groupInvite button:disabled{cursor:default;opacity:.7}.EtEeYG_groupInvite button[data-busy] svg{animation:1s linear infinite EtEeYG_summary-spin}.EtEeYG_groupInviteStatus{overflow-wrap:anywhere;min-width:0;color:var(--dsw-alias-label-tertiary);margin:0;font-size:10px;line-height:16px}.EtEeYG_groupInviteStatus[data-state=success]{color:var(--dsw-alias-state-success-primary)}.EtEeYG_groupInviteStatus[data-state=error]{color:var(--dsw-alias-state-error-primary)}.EtEeYG_groupMemberSection{flex-direction:column;flex:1;min-height:0;display:flex}.EtEeYG_groupMemberHeading{flex:none;justify-content:space-between;align-items:center;min-height:40px;padding:0 12px 0 16px;display:flex}.EtEeYG_groupMemberHeading strong{font-size:12px;line-height:18px}.EtEeYG_groupMemberHeading button[data-busy] svg{animation:1s linear infinite EtEeYG_summary-spin}.EtEeYG_groupMemberRefreshStatus{overflow-wrap:anywhere;min-height:22px;color:var(--dsw-alias-label-tertiary);flex:none;margin:0;padding:2px 16px 4px;font-size:10px;line-height:16px}.EtEeYG_groupMemberRefreshStatus[data-state=success]{color:var(--dsw-alias-state-success-primary)}.EtEeYG_groupMemberRefreshStatus[data-state=error]{color:var(--dsw-alias-state-error-primary)}.EtEeYG_groupMemberList{min-height:0;padding:0 8px;overflow:auto}.EtEeYG_groupMemberRow{border-bottom:1px solid var(--dsw-alias-border-l1);grid-template-columns:30px minmax(0,1fr) auto 28px;align-items:center;gap:8px;min-height:48px;padding:4px 6px;display:grid}.EtEeYG_groupMemberAvatar{background:var(--dsw-alias-interactive-bg-active);width:30px;height:30px;color:var(--dsw-alias-brand-primary);border-radius:50%;place-items:center;font-size:11px;display:grid}.EtEeYG_groupMemberIdentity{flex-direction:column;min-width:0;display:flex}.EtEeYG_groupMemberIdentity strong{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;font-size:12px;line-height:18px;display:flex;overflow:hidden}.EtEeYG_groupMemberIdentity strong small{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-brand-primary);border-radius:4px;padding:0 4px;font-size:9px}.EtEeYG_groupMemberIdentity>small{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:10px;line-height:15px;overflow:hidden}.EtEeYG_groupMemberRole{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:10px}.EtEeYG_groupMemberRemove:hover{background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary)}.EtEeYG_groupDetailsFooter{border-top:1px solid var(--dsw-alias-border-l1);flex:none;justify-content:space-between;align-items:center;gap:8px;min-height:46px;padding:0 16px;display:flex}.EtEeYG_groupDetailsFooter small{color:var(--dsw-alias-label-tertiary);font-size:10px}.EtEeYG_dangerText{color:var(--dsw-alias-state-error-primary);cursor:pointer;font:inherit;background:0 0;border:0;padding:0;font-size:12px}.EtEeYG_dangerText:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.EtEeYG_groupDetailsError{background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary);flex:none;padding:8px 12px;font-size:11px;line-height:17px}.EtEeYG_summaryTrigger{min-height:30px;color:var(--dsw-alias-brand-primary);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:8px;flex:none;align-items:center;gap:5px;padding:0 8px;font-size:12px;line-height:18px;display:flex}.EtEeYG_summaryTrigger:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_summaryTrigger:disabled{cursor:default;opacity:.7}.EtEeYG_summaryTrigger[aria-expanded=true]>svg:last-child{transform:rotate(180deg)}.EtEeYG_summaryTrigger>svg:first-child{flex:none}.EtEeYG_summaryPanel{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);min-height:0;max-height:min(220px,33%);color:var(--dsw-alias-label-primary);border-radius:10px;flex:0 33%;margin:8px 10px 0;overflow:hidden}.EtEeYG_summaryPanel[data-collapsed]{flex-basis:auto;max-height:42px}.EtEeYG_summaryHeader{border-bottom:1px solid var(--dsw-alias-border-l1);align-items:center;gap:9px;min-height:38px;padding:0 8px 0 12px;display:flex}.EtEeYG_summaryHeader>span{color:var(--dsw-alias-brand-primary);align-items:center;gap:6px;display:flex}.EtEeYG_summaryHeader>span strong{color:var(--dsw-alias-label-primary);font-size:13px;line-height:20px}.EtEeYG_summaryHeader>small{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:11px;line-height:16px;overflow:hidden}.EtEeYG_summaryHeader>button{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:7px;flex:none;place-items:center;padding:0;display:grid}.EtEeYG_summaryHeader>button:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_summaryCollapsed{width:100%;min-height:40px;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:0 10px 0 12px;display:grid}.EtEeYG_summaryCollapsed:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_summaryCollapsed>span{color:var(--dsw-alias-brand-primary);align-items:center;gap:6px;font-size:12px;font-weight:600;display:flex}.EtEeYG_summaryCollapsed>small{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.EtEeYG_summaryCollapsed>em{color:var(--dsw-alias-state-warn-label);white-space:nowrap;font-size:11px;font-style:normal}.EtEeYG_summaryLoading{min-height:88px;color:var(--dsw-alias-brand-primary);justify-content:center;align-items:center;gap:10px;padding:16px;display:flex}.EtEeYG_summaryLoading>svg,.EtEeYG_summaryTrigger:disabled>svg:first-child{animation:1s linear infinite EtEeYG_summary-spin}.EtEeYG_summaryLoading>span{flex-direction:column;gap:2px;display:flex}.EtEeYG_summaryLoading strong{color:var(--dsw-alias-label-primary);font-size:13px;line-height:20px}.EtEeYG_summaryLoading small{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.EtEeYG_summaryError{min-height:58px;color:var(--dsw-alias-state-error-primary);justify-content:space-between;align-items:center;gap:12px;padding:12px;font-size:12px;line-height:18px;display:flex}.EtEeYG_summaryError>span{overflow-wrap:anywhere;min-width:0}.EtEeYG_summaryError button,.EtEeYG_summaryStale button{border:1px solid var(--dsw-alias-border-l2);min-height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;background:0 0;border-radius:7px;flex:none;align-items:center;gap:5px;padding:0 8px;font-size:11px;display:flex}.EtEeYG_summaryError button:hover,.EtEeYG_summaryStale button:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_summaryStale{background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-state-warn-label);justify-content:space-between;align-items:center;gap:10px;padding:6px 10px;font-size:11px;line-height:16px;display:flex}.EtEeYG_summaryBody{gap:10px;max-height:118px;padding:10px 12px;display:grid;overflow:auto}.EtEeYG_summarySection h4{color:var(--dsw-alias-label-primary);align-items:center;gap:6px;margin:0 0 4px;font-size:12px;line-height:18px;display:flex}.EtEeYG_summarySection h4>svg{color:var(--dsw-alias-label-secondary);flex:none}.EtEeYG_summarySection ul{color:var(--dsw-alias-label-secondary);gap:2px;margin:0;padding-left:18px;font-size:11px;line-height:17px;display:grid}.EtEeYG_summarySection li{overflow-wrap:anywhere;padding-left:1px}.EtEeYG_summarySection p{color:var(--dsw-alias-label-tertiary);margin:0;font-size:11px;line-height:17px}.EtEeYG_summarySection b{color:var(--dsw-alias-label-primary);font-weight:500}.EtEeYG_summaryActions{border-top:1px solid var(--dsw-alias-border-l1);grid-template-columns:auto 1fr auto auto;align-items:center;gap:4px;min-height:34px;padding:0 8px;display:grid}.EtEeYG_summaryActions button{min-height:26px;color:var(--dsw-alias-brand-primary);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:6px;align-items:center;gap:5px;padding:0 6px;font-size:11px;line-height:16px;display:flex}.EtEeYG_summaryActions button:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_summaryPrivacy{border-top:1px solid var(--dsw-alias-border-l1);min-height:28px;color:var(--dsw-alias-label-tertiary);align-items:center;gap:6px;padding:0 10px;font-size:10px;line-height:15px;display:flex}.EtEeYG_summaryPrivacy svg{flex:none}.EtEeYG_summaryCopyError{color:var(--dsw-alias-state-error-primary);padding:4px 10px;font-size:10px;line-height:15px}@keyframes EtEeYG_summary-spin{to{transform:rotate(360deg)}}.EtEeYG_back{display:none}.EtEeYG_historyShell{flex:1;min-height:0;position:relative}.EtEeYG_history{box-sizing:border-box;flex-direction:column;gap:12px;height:100%;min-height:0;padding:16px;display:flex;overflow:auto}.EtEeYG_historyLoading{color:var(--dsw-alias-label-tertiary);align-items:center;gap:8px;margin:auto;font-size:12px;line-height:18px;display:flex}.EtEeYG_historyLoading>svg{color:var(--dsw-alias-brand-primary);animation:1s linear infinite EtEeYG_summary-spin}.EtEeYG_latestMessages{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-button-floating-fill);min-width:30px;min-height:30px;color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv2);cursor:pointer;font:inherit;border-radius:16px;justify-content:center;align-items:center;gap:5px;padding:0 9px;font-size:11px;line-height:16px;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.EtEeYG_latestMessages:hover{background:var(--dsw-alias-button-floating-hover)}.EtEeYG_message{align-self:flex-start;max-width:min(78%,420px)}.EtEeYG_message[data-outgoing]{align-self:flex-end}.EtEeYG_messageMeta{color:var(--dsw-alias-label-tertiary);justify-content:space-between;gap:10px;margin-bottom:3px;font-size:11px;line-height:16px;display:flex}.EtEeYG_message p,.EtEeYG_attachment{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;border-radius:12px;margin:0;padding:9px 11px;line-height:20px}.EtEeYG_message[data-outgoing] p,.EtEeYG_message[data-outgoing] .EtEeYG_attachment{background:var(--dsw-alias-interactive-bg-active)}.EtEeYG_mention{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-brand-primary);border-radius:3px;padding:0 2px;font-weight:600}.EtEeYG_pendingMessage{grid-template-columns:auto minmax(0,1fr);align-self:flex-end;align-items:end;gap:7px;max-width:min(78%,420px);display:grid}.EtEeYG_pendingMessageSpinner{color:var(--dsw-alias-label-tertiary);margin-bottom:12px;animation:1s linear infinite EtEeYG_summary-spin}.EtEeYG_pendingMessageContent{opacity:.82;min-width:0}.EtEeYG_pendingMessageContent>p,.EtEeYG_pendingAttachment{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;border-radius:12px;margin:0;padding:9px 11px;line-height:20px}.EtEeYG_pendingAttachment{align-items:center;gap:9px;display:flex}.EtEeYG_pendingAttachment>svg{color:var(--dsw-alias-label-secondary);flex:none}.EtEeYG_pendingAttachment span{flex-direction:column;min-width:0;display:flex}.EtEeYG_pendingAttachment strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.EtEeYG_pendingAttachment small{color:var(--dsw-alias-label-tertiary)}.EtEeYG_pendingMessageContent>.EtEeYG_pendingCaption{color:var(--dsw-alias-label-secondary);background:0 0;border:0;margin-top:4px;padding:4px 8px;font-size:12px}.EtEeYG_attachment{cursor:pointer;font:inherit;text-align:left;align-items:center;gap:12px;display:flex}.EtEeYG_attachment span{flex-direction:column;min-width:0;display:flex}.EtEeYG_attachment strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.EtEeYG_attachment small{color:var(--dsw-alias-label-tertiary)}.EtEeYG_attachment:disabled{cursor:default}.EtEeYG_imageAttachment{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);width:280px;max-width:100%;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;text-align:left;border-radius:12px;margin:0;padding:0;display:block;overflow:hidden}.EtEeYG_imageAttachment img{background:var(--dsw-alias-bg-layer-1);object-fit:contain;width:100%;max-height:280px;display:block}.EtEeYG_imageAttachment span{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:0 10px;padding:7px 9px;display:grid}.EtEeYG_imageAttachment strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.EtEeYG_imageAttachment small{color:var(--dsw-alias-label-tertiary);grid-column:1}.EtEeYG_imageAttachment svg{grid-area:1/2/span 2}.EtEeYG_message .EtEeYG_caption{color:var(--dsw-alias-label-secondary);background:0 0;margin-top:4px;padding:4px 8px;font-size:12px}.EtEeYG_inlineError{color:var(--dsw-alias-state-error-primary);margin-top:4px;display:block}.EtEeYG_empty{color:var(--dsw-alias-label-tertiary);text-align:center;margin:auto;padding:20px}.EtEeYG_composer{border-top:1px solid var(--dsw-alias-border-l1);flex:none;gap:8px;padding:10px 14px 14px;display:grid}.EtEeYG_filePicker{border:1px solid var(--dsw-alias-border-l2);width:32px;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}.EtEeYG_filePicker:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.EtEeYG_filePicker:disabled{opacity:.45;cursor:default}.EtEeYG_fileInput{display:none}.EtEeYG_composeInput{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);border-radius:10px;gap:6px;min-width:0;padding:9px 10px 8px;display:grid;position:relative}.EtEeYG_mentionCandidates{z-index:3;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);max-height:180px;box-shadow:var(--dsw-shadow-lv2);border-radius:8px;padding:5px;position:absolute;bottom:calc(100% + 7px);left:0;right:0;overflow:auto}.EtEeYG_mentionCandidates button{width:100%;min-height:42px;color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:6px;grid-template-rows:auto auto;grid-template-columns:28px minmax(0,1fr);align-items:center;column-gap:8px;padding:4px 7px;display:grid}.EtEeYG_mentionCandidates button:hover,.EtEeYG_mentionCandidates button[aria-selected=true]{background:var(--dsw-alias-interactive-bg-active)}.EtEeYG_mentionCandidates button>span{background:var(--dsw-alias-bg-layer-3);width:28px;height:28px;color:var(--dsw-alias-brand-primary);border-radius:50%;grid-row:1/span 2;place-items:center;font-size:10px;display:grid}.EtEeYG_mentionCandidates strong,.EtEeYG_mentionCandidates small{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.EtEeYG_mentionCandidates strong{align-self:end;font-size:12px;line-height:16px}.EtEeYG_mentionCandidates small{color:var(--dsw-alias-label-tertiary);align-self:start;font-size:10px;line-height:14px}.EtEeYG_composeInput:focus-within{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.EtEeYG_composeInput textarea{resize:none;background:0 0;border:0;border-radius:0;outline:0;min-width:0;min-height:42px;padding:0}.EtEeYG_composeInput textarea:focus-visible{outline:0}.EtEeYG_composeActions{justify-content:space-between;align-items:center;min-height:32px;display:flex}.EtEeYG_filePreview{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:10px;align-items:center;gap:8px;width:min(240px,100% - 8px);min-height:36px;padding:5px 28px 5px 8px;display:flex;position:relative}.EtEeYG_filePreview[data-image]{width:72px;height:72px;min-height:0;padding:0}.EtEeYG_filePreview img{object-fit:cover;border-radius:9px;width:72px;height:72px;display:block}.EtEeYG_filePreviewIcon{color:var(--dsw-alias-label-secondary);flex:none;place-items:center;display:grid}.EtEeYG_filePreviewName{min-width:0;color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.EtEeYG_removeFile{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-button-floating-fill);width:22px;height:22px;color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv1);cursor:pointer;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:-7px;right:-7px}.EtEeYG_removeFile:hover{background:var(--dsw-alias-button-floating-hover)}.EtEeYG_send{background:var(--dsw-alias-button-primary-fill);width:32px;height:32px;color:var(--dsw-alias-label-primary-inverted);cursor:pointer;border:0;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}.EtEeYG_send:disabled{opacity:.45;cursor:default}.EtEeYG_error{background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;flex:none;padding:8px 14px;font-size:12px;line-height:18px}.EtEeYG_pending{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-inverted);box-shadow:var(--dsw-shadow-lv2);border-radius:9px;padding:7px 10px;font-size:12px;line-height:18px;position:absolute;bottom:14px;right:14px}@media (width<=620px){.EtEeYG_trigger span{display:none}.EtEeYG_trigger{justify-content:center;width:36px;padding:0}.EtEeYG_drawer{width:calc(100vw - 56px);min-width:0}.EtEeYG_chat{grid-template-columns:1fr}.EtEeYG_thread{display:none}.EtEeYG_thread[data-visible]{display:flex}.EtEeYG_roster[data-hidden]{display:none}.EtEeYG_back{display:grid}.EtEeYG_summaryPanel{max-height:min(190px,33%);margin-left:8px;margin-right:8px}.EtEeYG_summaryTrigger>span{display:none}.EtEeYG_summaryTrigger{justify-content:center;width:30px;padding:0}.EtEeYG_summaryTrigger>svg:last-child{display:none}}@media (height<=420px){.EtEeYG_drawer{border-radius:10px}.EtEeYG_drawerHeader{height:44px;padding:0 8px 0 12px}.EtEeYG_drawerHeader h2{font-size:14px;line-height:20px}.EtEeYG_drawerHeader button,.EtEeYG_back{width:28px;height:28px}.EtEeYG_centerState,.EtEeYG_threadEmpty{justify-content:flex-start;gap:8px;min-height:0;padding:12px;overflow:auto}.EtEeYG_registrationIcon{width:32px;height:32px}.EtEeYG_composeBackdrop{place-items:start center;padding:8px;inset:44px 0 0}.EtEeYG_composeCard{border-radius:10px;gap:8px;padding:12px}.EtEeYG_recoveryForm{gap:8px}.EtEeYG_identityCard{border-radius:8px;margin:6px 8px;padding:7px 9px}.EtEeYG_profileBio,.EtEeYG_profileTags,.EtEeYG_identityStatus{display:none}.EtEeYG_modeTabs{margin:0 8px 4px}.EtEeYG_modeTabs button{min-height:26px}.EtEeYG_rosterHeader{min-height:28px;padding:0 4px 2px 12px}.EtEeYG_conversationSelect{gap:7px;padding:5px 7px}.EtEeYG_avatar{width:28px;height:28px}.EtEeYG_threadHeader{gap:5px;height:44px;padding:0 8px}.EtEeYG_groupAccessNotice{grid-template-columns:18px minmax(0,1fr);gap:6px 8px;padding:8px}.EtEeYG_groupAccessActions{grid-column:2;justify-content:flex-start}.EtEeYG_groupDetails{top:44px;overflow-y:auto}.EtEeYG_groupDetailsHeader{z-index:2;background:var(--dsw-alias-bg-layer-1);min-height:44px;padding-left:12px;position:sticky;top:0}.EtEeYG_groupSummary{gap:2px;padding:8px 12px}.EtEeYG_groupSummary dl{gap:6px;margin-top:3px}.EtEeYG_groupInvite{gap:3px;padding:7px 12px}.EtEeYG_groupMemberSection{flex:none}.EtEeYG_groupMemberHeading{min-height:32px;padding-left:12px}.EtEeYG_groupMemberList{overflow:visible}.EtEeYG_groupMemberRow{min-height:40px}.EtEeYG_groupDetailsFooter{background:var(--dsw-alias-bg-layer-1);min-height:40px;padding:0 12px;position:sticky;bottom:0}.EtEeYG_history{gap:6px;padding:8px}.EtEeYG_composer{gap:4px;padding:5px 8px 7px}.EtEeYG_composeInput{gap:3px;padding:5px 7px 4px}.EtEeYG_composeInput textarea{height:28px;min-height:28px}.EtEeYG_composeActions{min-height:28px}.EtEeYG_filePicker,.EtEeYG_send{width:28px;height:28px}.EtEeYG_mentionCandidates{max-height:72px}.EtEeYG_compactModal.EtEeYG_compactModal{border-radius:12px;gap:10px;max-height:calc(100vh - 48px);padding-bottom:12px}}@media (hover:none){.EtEeYG_conversationMenu{opacity:1}}@media (prefers-reduced-motion:reduce){.EtEeYG_drawer{scroll-behavior:auto;transition:none}.EtEeYG_summaryLoading>svg,.EtEeYG_summaryTrigger:disabled>svg:first-child,.EtEeYG_historyLoading>svg,.EtEeYG_recoveryProgressPanel>svg,.EtEeYG_groupMemberHeading button[data-busy] svg,.EtEeYG_pendingMessageSpinner{animation:none}}";
|
|
7879
|
-
const tagId$
|
|
7880
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
7479
|
+
const css$3 = ".EtEeYG_trigger{z-index:2;border:1px solid var(--dsw-alias-border-l2);width:48px;height:48px;color:var(--dsw-alias-brand-primary);box-shadow:var(--dsw-shadow-lv2);cursor:grab;font:inherit;touch-action:none;user-select:none;background:#fff;border-radius:50%;place-items:center;padding:0;display:grid;position:fixed;overflow:visible}.EtEeYG_trigger:hover{box-shadow:var(--dsw-shadow-lv3);background:#fff}.EtEeYG_trigger:active,.EtEeYG_trigger[data-dragging]{cursor:grabbing}.EtEeYG_launcherIcon{object-fit:cover;pointer-events:none;border-radius:50%;width:100%;height:100%;display:block}.EtEeYG_unreadBadge{border:2px solid var(--dsw-alias-bg-base);background:var(--dsw-alias-state-error-primary);color:#fff;box-sizing:border-box;pointer-events:none;border-radius:10px;place-items:center;min-width:20px;height:20px;padding:0 5px;font-size:11px;font-weight:600;line-height:16px;display:grid;position:absolute;top:-5px;right:-5px}.EtEeYG_trigger:focus-visible,.EtEeYG_drawer button:focus-visible,.EtEeYG_drawer input:focus-visible,.EtEeYG_drawer textarea:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.EtEeYG_drawer{--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);z-index:1;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);width:min(720px,100vw - 80px);min-width:min(360px,100vw - 80px);height:min(720px,100vh - 16px);color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv3);border-radius:16px;flex-direction:column;transition:width .16s;display:flex;position:fixed;overflow:hidden}.EtEeYG_drawer[data-mode=mail]{width:min(1040px,100vw - 80px)}.EtEeYG_drawer[data-resizing]{user-select:none;transition:none}.EtEeYG_resizeHandle{z-index:5;touch-action:none;user-select:none;position:absolute}.EtEeYG_resizeHandle[data-resize-handle=n],.EtEeYG_resizeHandle[data-resize-handle=s]{cursor:ns-resize;height:8px;left:14px;right:14px}.EtEeYG_resizeHandle[data-resize-handle=n]{top:0}.EtEeYG_resizeHandle[data-resize-handle=s]{bottom:0}.EtEeYG_resizeHandle[data-resize-handle=e],.EtEeYG_resizeHandle[data-resize-handle=w]{cursor:ew-resize;width:8px;top:14px;bottom:14px}.EtEeYG_resizeHandle[data-resize-handle=e]{right:0}.EtEeYG_resizeHandle[data-resize-handle=w]{left:0}.EtEeYG_resizeHandle[data-resize-handle=ne],.EtEeYG_resizeHandle[data-resize-handle=se],.EtEeYG_resizeHandle[data-resize-handle=sw],.EtEeYG_resizeHandle[data-resize-handle=nw]{width:14px;height:14px}.EtEeYG_resizeHandle[data-resize-handle=ne]{cursor:nesw-resize;top:0;right:0}.EtEeYG_resizeHandle[data-resize-handle=se]{cursor:nwse-resize;bottom:0;right:0}.EtEeYG_resizeHandle[data-resize-handle=sw]{cursor:nesw-resize;bottom:0;left:0}.EtEeYG_resizeHandle[data-resize-handle=nw]{cursor:nwse-resize;top:0;left:0}.EtEeYG_drawerHeader{border-bottom:1px solid var(--dsw-alias-border-l1);cursor:grab;touch-action:none;user-select:none;flex:none;align-items:center;gap:8px;height:58px;padding:0 14px 0 18px;display:flex}.EtEeYG_drawerHeader[data-dragging]{cursor:grabbing}.EtEeYG_drawerHeader>div{flex:1;align-items:center;gap:8px;display:flex}.EtEeYG_drawerHeader h2{margin:0;font-size:16px;line-height:24px}.EtEeYG_drawerHeader button,.EtEeYG_back{cursor:pointer;width:32px;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:9px;place-items:center;padding:0;display:grid}.EtEeYG_drawerHeader button:hover,.EtEeYG_back:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.EtEeYG_centerState,.EtEeYG_threadEmpty{text-align:center;color:var(--dsw-alias-label-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;padding:32px;display:flex}.EtEeYG_centerState p{overflow-wrap:anywhere;max-width:420px;margin:0}.EtEeYG_registrationIcon{background:var(--dsw-alias-interactive-bg-active);width:48px;height:48px;color:var(--dsw-alias-brand-primary);border-radius:50%;justify-self:center;place-items:center;display:grid}.EtEeYG_fileDraft input,.EtEeYG_composeRow textarea{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);width:100%;color:var(--dsw-alias-label-primary);font:inherit;border-radius:10px}.EtEeYG_primary,.EtEeYG_more,.EtEeYG_fileDraft button{background:var(--dsw-alias-button-primary-fill);min-height:36px;color:var(--dsw-alias-label-primary-inverted);cursor:pointer;font:inherit;border:0;border-radius:10px;padding:0 14px}.EtEeYG_primary:hover,.EtEeYG_fileDraft button:hover{background:var(--dsw-alias-button-primary-hover)}.EtEeYG_primary:disabled,.EtEeYG_fileDraft button:disabled{opacity:.5;cursor:default}.EtEeYG_secondary{border:1px solid var(--dsw-alias-border-l2);min-height:36px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;background:0 0;border-radius:10px;padding:0 14px}.EtEeYG_secondary:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_composeBackdrop{background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 72%, transparent);place-items:center;padding:24px;display:grid;position:absolute;inset:58px 0 0;overflow:auto}.EtEeYG_composeCard{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);width:min(360px,100%);box-shadow:var(--dsw-shadow-lv3);border-radius:14px;gap:12px;padding:20px;display:grid}.EtEeYG_composeCard h3{margin:0;font-size:16px;line-height:24px}.EtEeYG_composeCard p{color:var(--dsw-alias-label-secondary);margin:0;font-size:13px;line-height:20px}.EtEeYG_composeCard label{color:var(--dsw-alias-label-secondary);gap:6px;font-size:13px;line-height:20px;display:grid}.EtEeYG_composeCard input,.EtEeYG_composeCard textarea{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);width:100%;color:var(--dsw-alias-label-primary);font:inherit;border-radius:10px;padding:9px 12px}.EtEeYG_composeCard input{height:40px;padding-block:0}.EtEeYG_composeCard textarea{resize:vertical;min-height:92px}.EtEeYG_composeActions{justify-content:flex-end;gap:8px;display:flex}.EtEeYG_logoutWarning{color:var(--dsw-alias-label-secondary);gap:8px;font-size:13px;line-height:20px;display:grid}.EtEeYG_logoutWarning p{margin:0}.EtEeYG_logoutConfirm{border-color:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary)}.EtEeYG_compactModal.EtEeYG_compactModal{max-height:calc(100vh - 48px)}.EtEeYG_compactModalContent{min-height:0;overflow-y:auto}.EtEeYG_linkButton{color:var(--dsw-alias-brand-primary);cursor:pointer;background:0 0;border:0}.EtEeYG_notice{color:var(--dsw-alias-state-success-primary);text-align:center}.EtEeYG_identityAccess{flex:1;min-height:0;overflow:hidden}.EtEeYG_recoveryForm{width:100%;min-width:0;color:var(--dsw-alias-label-secondary);gap:14px;display:grid}.EtEeYG_recoveryForm h3{color:var(--dsw-alias-label-primary);text-align:center;margin:0}.EtEeYG_recoveryForm>p{text-align:center;margin:0;font-size:13px;line-height:20px}.EtEeYG_recoveryForm>label:not(.EtEeYG_recoveryConfirmation){gap:6px;font-size:13px;line-height:20px;display:grid}.EtEeYG_recoveryForm>label>input:not([type=checkbox]){box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);width:100%;height:40px;color:var(--dsw-alias-label-primary);font:inherit;border-radius:8px;padding:0 12px}.EtEeYG_recoveryForm input:focus-visible,.EtEeYG_recoveryForm button:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.EtEeYG_recoveryStatusLine{border-bottom:1px solid var(--dsw-alias-border-l1);gap:3px;min-width:0;padding-bottom:10px;display:grid}.EtEeYG_recoveryStatusLine span{color:var(--dsw-alias-brand-primary);font-size:12px;font-weight:600}.EtEeYG_recoveryIdentitySummary{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;grid-template-columns:max-content minmax(0,1fr);gap:6px 14px;min-width:0;padding:12px;font-size:12px;line-height:18px;display:grid}.EtEeYG_recoveryIdentitySummary span{color:var(--dsw-alias-label-tertiary)}.EtEeYG_recoveryIdentitySummary strong{overflow-wrap:anywhere;min-width:0;color:var(--dsw-alias-label-primary)}.EtEeYG_recoveryDiagnostics{border-top:1px solid var(--dsw-alias-border-l1);min-width:0;color:var(--dsw-alias-label-tertiary);padding-top:2px;font-size:11px;line-height:17px}.EtEeYG_recoveryDiagnostics summary{cursor:pointer;width:max-content;color:var(--dsw-alias-label-secondary);user-select:none}.EtEeYG_recoveryDiagnostics summary:hover{color:var(--dsw-alias-label-primary)}.EtEeYG_recoveryDiagnostics summary:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px;border-radius:4px}.EtEeYG_recoveryDiagnostics dl{gap:6px;margin:8px 0 0;display:grid}.EtEeYG_recoveryDiagnostics dl>div{gap:2px;min-width:0;display:grid}.EtEeYG_recoveryDiagnostics dt{color:var(--dsw-alias-label-tertiary)}.EtEeYG_recoveryDiagnostics dd{min-width:0;margin:0}.EtEeYG_recoveryDiagnostics code{overflow-wrap:anywhere;color:var(--dsw-alias-label-secondary);font-size:10px;line-height:16px;display:block}.EtEeYG_recoveryImpact{border-left:3px solid var(--dsw-alias-brand-primary);background:var(--dsw-alias-bg-layer-2);gap:6px;padding:12px;display:grid}.EtEeYG_recoveryImpact p{align-items:flex-start;gap:7px;margin:0;font-size:12px;line-height:18px;display:flex}.EtEeYG_recoveryImpact svg{flex:none;margin-top:2px}.EtEeYG_recoveryImpact p[data-tone=success] svg{color:var(--dsw-alias-state-success-primary)}.EtEeYG_recoveryImpact p[data-tone=neutral] svg{color:var(--dsw-alias-label-tertiary)}.EtEeYG_recoveryHandle{overflow-wrap:anywhere;color:var(--dsw-alias-label-primary);text-align:center;margin:-8px 0 0;font-size:13px;line-height:20px}.EtEeYG_recoveryConfirmationCopy{color:var(--dsw-alias-label-secondary);text-align:left;margin:0;font-size:12px;line-height:18px}.EtEeYG_recoveryProgressPanel{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);text-align:center;border-radius:8px;justify-items:center;gap:10px;min-width:0;padding:16px;display:grid}.EtEeYG_recoveryProgressPanel>svg{color:var(--dsw-alias-brand-primary);animation:1s linear infinite EtEeYG_summary-spin}.EtEeYG_recoveryProgressPanel p{margin:0;font-size:12px;line-height:18px}.EtEeYG_recoveryProgressPanel button{justify-content:center;align-items:center;gap:6px;width:100%;display:flex}.EtEeYG_chat{flex:1;grid-template-columns:240px minmax(0,1fr);min-height:0;display:grid}.EtEeYG_roster{border-right:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);flex-direction:column;min-width:0;display:flex}.EtEeYG_identityCard{background:var(--dsw-alias-bg-layer-3);border-radius:12px;flex-direction:column;gap:2px;margin:14px;padding:12px;display:flex}.EtEeYG_identityNameRow{align-items:center;min-width:0;min-height:24px;display:flex}.EtEeYG_profileAvatar{background:var(--dsw-alias-interactive-bg-active);width:24px;height:24px;color:var(--dsw-alias-brand-primary);border-radius:50%;flex:none;place-items:center;margin-right:7px;display:grid}.EtEeYG_identityNameText{min-width:0;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:14px;line-height:22px;overflow:hidden}.EtEeYG_identityName{min-width:0;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;background:0 0;border:0;flex:1;padding:0;font-size:16px;font-weight:600;line-height:24px;overflow:hidden}.EtEeYG_identityName:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px;border-radius:4px}.EtEeYG_identityEdit{width:24px;height:24px;color:var(--dsw-alias-label-secondary);cursor:pointer;opacity:.72;background:0 0;border:0;border-radius:6px;flex:none;place-items:center;margin-left:4px;padding:0;transition:opacity .12s;display:grid}.EtEeYG_identityNameRow:hover .EtEeYG_identityEdit,.EtEeYG_identityNameRow:focus-within .EtEeYG_identityEdit{opacity:1}.EtEeYG_identityEdit:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.EtEeYG_identityEditor{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.EtEeYG_identityEditor input{border:1px solid var(--dsw-alias-brand-primary);background:var(--dsw-alias-bg-layer-1);min-width:0;height:28px;color:var(--dsw-alias-label-primary);font:inherit;border-radius:7px;outline:none;flex:1;padding:0 8px;font-size:13px}.EtEeYG_identityEditor button{width:26px;height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;place-items:center;padding:0;display:grid}.EtEeYG_identityEditor button:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.EtEeYG_identityEditor button:disabled,.EtEeYG_identityName:disabled{cursor:default;opacity:.5}.EtEeYG_identityEdit:disabled{cursor:default}.EtEeYG_identityHandle{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:16px;overflow:hidden}.EtEeYG_identityStatus{color:var(--dsw-alias-state-success-primary);margin-top:4px;font-size:12px;line-height:18px}.EtEeYG_identityError{color:var(--dsw-alias-state-error-primary);margin-top:4px;font-size:11px;line-height:16px}.EtEeYG_identityCard i{background:var(--dsw-alias-state-success-primary);border-radius:50%;width:6px;height:6px;margin-right:5px;display:inline-block}.EtEeYG_profileBio{color:var(--dsw-alias-label-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:6px 0 2px;font-size:11px;line-height:17px;display:-webkit-box;overflow:hidden}.EtEeYG_profileTags{flex-wrap:wrap;gap:4px;margin-top:5px;display:flex}.EtEeYG_profileTags>span{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);min-width:0;max-width:100%;min-height:20px;color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;border-radius:7px;align-items:center;gap:3px;padding:0 6px;font-size:10px;line-height:16px;display:inline-flex}.EtEeYG_profileTags>span>button{width:16px;height:16px;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;place-items:center;padding:0;display:grid}.EtEeYG_profileTags>span>button:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_profileEditor{gap:10px;display:grid}.EtEeYG_profileEditor label{color:var(--dsw-alias-label-secondary);gap:4px;font-size:11px;line-height:16px;display:grid;position:relative}.EtEeYG_profileEditor label>small{color:var(--dsw-alias-label-tertiary);font-size:10px;position:absolute;top:0;right:1px}.EtEeYG_profileEditor input,.EtEeYG_profileEditor textarea{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);width:100%;color:var(--dsw-alias-label-primary);font:inherit;border-radius:7px;padding:7px 8px;font-size:12px}.EtEeYG_profileEditor input{height:32px;padding-block:0}.EtEeYG_profileEditor textarea{resize:vertical}.EtEeYG_profileTagEditor{gap:4px;display:grid}.EtEeYG_profileTagEditor>div:first-of-type{grid-template-columns:minmax(0,1fr) 30px;gap:5px;display:grid}.EtEeYG_profileTagEditor>div:first-of-type button{border:1px solid var(--dsw-alias-border-l2);width:30px;height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:7px;place-items:center;padding:0;display:grid}.EtEeYG_profileEditorActions{grid-template-columns:1fr 1fr;gap:6px;margin-top:2px;display:grid}.EtEeYG_profileEditorActions button{min-width:0;padding-inline:6px;font-size:12px}.EtEeYG_modePanel{flex:1;min-height:0;display:none}.EtEeYG_modePanel[data-active]{display:flex}.EtEeYG_modeTabs{background:var(--dsw-alias-bg-layer-3);border-radius:9px;grid-template-columns:1fr 1fr;gap:4px;margin:0 14px 12px;padding:3px;display:grid}.EtEeYG_modeTabs button{min-height:30px;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:7px;justify-content:center;align-items:center;gap:5px;padding:0 8px;font-size:12px;line-height:18px;display:flex}.EtEeYG_modeTabs button:hover{color:var(--dsw-alias-label-primary)}.EtEeYG_modeTabs button[aria-selected=true]{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv1)}.EtEeYG_modeTabs small{min-width:18px;color:var(--dsw-alias-brand-primary);font-size:10px;line-height:14px}.EtEeYG_rosterHeader{justify-content:space-between;align-items:center;min-height:32px;padding:0 8px 8px 16px;display:flex}.EtEeYG_rosterTitle{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.EtEeYG_rosterActions{align-items:center;gap:2px;display:flex}.EtEeYG_rosterAction{width:32px;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:9px;place-items:center;padding:0;display:grid}.EtEeYG_rosterAction:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.EtEeYG_rosterActions .EtEeYG_rosterAction{position:relative}.EtEeYG_rosterActions .EtEeYG_rosterAction small{background:var(--dsw-alias-bg-layer-3);min-width:14px;height:14px;color:var(--dsw-alias-label-secondary);box-sizing:border-box;border-radius:7px;place-items:center;padding:0 3px;font-size:9px;line-height:12px;display:grid;position:absolute;top:1px;right:0}.EtEeYG_groupRecoveryNotice{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:8px;align-items:flex-start;gap:8px;margin:0 8px 8px;padding:9px 10px;display:flex}.EtEeYG_groupRecoveryNotice[data-status=blocked]{border-color:var(--dsw-alias-state-error-primary)}.EtEeYG_groupRecoveryNotice>span{flex:1;gap:2px;min-width:0;display:grid}.EtEeYG_groupRecoveryNotice strong{font-size:12px;line-height:18px}.EtEeYG_groupRecoveryNotice small{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.EtEeYG_groupRecoveryNotice button{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:7px;flex:none;place-items:center;padding:0;display:grid}.EtEeYG_groupRecoveryNotice button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.EtEeYG_groupRecoveryNotice button:disabled{cursor:default;opacity:.5}.EtEeYG_conversationList{flex:1;min-height:0;padding:0 8px;overflow:auto}.EtEeYG_conversationRow{width:100%;color:inherit;background:0 0;border-radius:10px;grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid}.EtEeYG_conversationRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_conversationRow[data-active]{background:var(--dsw-alias-interactive-bg-active)}.EtEeYG_conversationSelect{width:100%;min-width:0;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:10px;padding:9px;display:flex}.EtEeYG_conversationMenu{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;opacity:0;background:0 0;border:0;border-radius:7px;place-items:center;margin-right:5px;padding:0;display:grid}.EtEeYG_conversationRow:hover .EtEeYG_conversationMenu,.EtEeYG_conversationRow:focus-within .EtEeYG_conversationMenu,.EtEeYG_conversationMenu[aria-expanded=true]{opacity:1}.EtEeYG_conversationMenu:hover{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-primary)}.EtEeYG_conversationMenu:disabled{cursor:default;opacity:.45}.EtEeYG_avatar{background:var(--dsw-alias-interactive-bg-active);width:34px;height:34px;color:var(--dsw-alias-brand-primary);border-radius:50%;flex:none;place-items:center;font-size:12px;line-height:18px;display:grid;position:relative;overflow:visible}.EtEeYG_conversationUnreadBadge{border:2px solid var(--dsw-alias-bg-layer-2);background:var(--dsw-alias-state-error-primary);min-width:18px;height:18px;color:var(--dsw-alias-label-primary-inverted);box-sizing:border-box;pointer-events:none;border-radius:9px;place-items:center;padding:0 4px;font-size:10px;font-weight:600;line-height:14px;display:grid;position:absolute;top:-6px;right:-7px}.EtEeYG_conversationText{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.EtEeYG_conversationHeader{align-items:center;gap:8px;min-width:0;display:flex}.EtEeYG_conversationHeader strong{flex:1;min-width:0}.EtEeYG_conversationTime{color:var(--dsw-alias-label-tertiary);flex:none;font-size:11px;font-weight:400;line-height:16px}.EtEeYG_conversationText strong,.EtEeYG_conversationText small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.EtEeYG_conversationText strong{font-size:13px;line-height:20px}.EtEeYG_conversationText small{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.EtEeYG_more{background:var(--dsw-alias-button-elevated-fill);color:var(--dsw-alias-label-secondary);margin:8px}.EtEeYG_more:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_hiddenConversationList{max-height:min(320px,48vh);display:grid;overflow:auto}.EtEeYG_hiddenConversationRow{border-bottom:1px solid var(--dsw-alias-border-l1);grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:50px;padding:6px 2px;display:grid}.EtEeYG_hiddenConversationRow:last-child{border-bottom:0}.EtEeYG_hiddenConversationRow .EtEeYG_avatar{width:30px;height:30px}.EtEeYG_hiddenConversationRow>span:nth-child(2){min-width:0;display:grid}.EtEeYG_hiddenConversationRow strong,.EtEeYG_hiddenConversationRow small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.EtEeYG_hiddenConversationRow strong{font-size:12px;line-height:18px}.EtEeYG_hiddenConversationRow small{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:15px}.EtEeYG_hiddenConversationRow>button{border:1px solid var(--dsw-alias-border-l2);min-height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;background:0 0;border-radius:7px;padding:0 9px;font-size:11px}.EtEeYG_hiddenConversationRow>button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_hiddenConversationRow>button:disabled{cursor:default;opacity:.55}.EtEeYG_conversationPreferenceError{color:var(--dsw-alias-state-error-primary);font-size:11px;line-height:17px}.EtEeYG_thread{flex-direction:column;min-width:0;min-height:0;display:flex;position:relative}.EtEeYG_threadHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:8px;height:56px;padding:0 14px;display:flex}.EtEeYG_threadTitle{flex-direction:column;flex:1;min-width:0;display:flex}.EtEeYG_threadTitle strong,.EtEeYG_threadTitle small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.EtEeYG_threadHeader small{color:var(--dsw-alias-label-tertiary)}.EtEeYG_threadAction{width:30px;height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:8px;flex:none;place-items:center;padding:0;display:grid}.EtEeYG_threadAction:hover,.EtEeYG_threadAction[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.EtEeYG_groupAccessNotice{border-bottom:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);flex:none;grid-template-columns:20px minmax(0,1fr) auto;align-items:start;gap:8px 10px;padding:11px 14px;display:grid}.EtEeYG_groupAccessNotice[data-status=blocked],.EtEeYG_groupAccessNotice[data-status=not-member]{background:var(--dsw-alias-interactive-bg-hover-danger)}.EtEeYG_groupAccessNotice[data-compact]{grid-template-columns:20px minmax(0,1fr);padding:12px 16px}.EtEeYG_groupAccessIcon{min-height:20px;color:var(--dsw-alias-label-secondary);place-items:center;display:grid}.EtEeYG_groupAccessNotice[data-status=loading] .EtEeYG_groupAccessIcon svg,.EtEeYG_groupAccessNotice[data-status=recovering] .EtEeYG_groupAccessIcon svg{animation:1s linear infinite EtEeYG_summary-spin}.EtEeYG_groupAccessCopy{gap:2px;min-width:0;display:grid}.EtEeYG_groupAccessCopy strong{font-size:12px;line-height:18px}.EtEeYG_groupAccessCopy small{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;font-size:11px;line-height:17px}.EtEeYG_groupAccessActions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.EtEeYG_groupAccessNotice[data-compact] .EtEeYG_groupAccessActions{grid-column:2;justify-content:flex-start}.EtEeYG_groupAccessActions button{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);min-height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;border-radius:7px;justify-content:center;align-items:center;gap:5px;padding:0 8px;font-size:11px;line-height:16px;display:flex}.EtEeYG_groupAccessActions button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_groupAccessActions button:disabled{cursor:default;opacity:.55}.EtEeYG_groupDetails{z-index:4;border-left:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);width:min(360px,100%);min-width:0;box-shadow:var(--dsw-shadow-lv2);flex-direction:column;display:flex;position:absolute;top:56px;bottom:0;right:0;overflow:hidden}.EtEeYG_groupDetailsHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:12px;min-height:54px;padding:0 12px 0 16px;display:flex}.EtEeYG_groupDetailsHeader>div{flex-direction:column;flex:1;min-width:0;display:flex}.EtEeYG_groupDetailsHeader strong{font-size:14px;line-height:21px}.EtEeYG_groupDetailsHeader small{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:10px;line-height:15px;overflow:hidden}.EtEeYG_groupDetailsHeader button,.EtEeYG_groupMemberHeading button,.EtEeYG_groupMemberRemove{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:7px;flex:none;place-items:center;padding:0;display:grid}.EtEeYG_groupDetailsHeader button:hover,.EtEeYG_groupMemberHeading button:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.EtEeYG_groupDetailsLoading{color:var(--dsw-alias-label-tertiary);margin:auto;font-size:12px}.EtEeYG_groupSummary{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;gap:5px;padding:16px;display:grid}.EtEeYG_groupSummary>strong{font-size:15px;line-height:22px}.EtEeYG_groupSummary>code{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.EtEeYG_groupSummary>p{color:var(--dsw-alias-label-secondary);margin:3px 0 0;font-size:12px;line-height:18px}.EtEeYG_groupSummary dl{grid-template-columns:1fr 1fr;gap:8px;margin:8px 0 0;display:grid}.EtEeYG_groupSummary dl>div{gap:1px;display:grid}.EtEeYG_groupSummary dt{color:var(--dsw-alias-label-tertiary);font-size:10px}.EtEeYG_groupSummary dd{color:var(--dsw-alias-label-primary);margin:0;font-size:12px}.EtEeYG_groupInvite{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;gap:5px;padding:12px 16px;display:grid}.EtEeYG_groupInvite label{color:var(--dsw-alias-label-secondary);font-size:11px}.EtEeYG_groupInvite>div{grid-template-columns:minmax(0,1fr) 32px;gap:6px;display:grid}.EtEeYG_groupInvite input{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);min-width:0;height:32px;color:var(--dsw-alias-label-primary);font:inherit;border-radius:7px;padding:0 9px;font-size:12px}.EtEeYG_groupInvite button{background:var(--dsw-alias-button-primary-fill);width:32px;height:32px;color:var(--dsw-alias-label-primary-inverted);cursor:pointer;border:0;border-radius:7px;place-items:center;padding:0;display:grid}.EtEeYG_groupInvite button:disabled{cursor:default;opacity:.7}.EtEeYG_groupInvite button[data-busy] svg{animation:1s linear infinite EtEeYG_summary-spin}.EtEeYG_groupInviteStatus{overflow-wrap:anywhere;min-width:0;color:var(--dsw-alias-label-tertiary);margin:0;font-size:10px;line-height:16px}.EtEeYG_groupInviteStatus[data-state=success]{color:var(--dsw-alias-state-success-primary)}.EtEeYG_groupInviteStatus[data-state=error]{color:var(--dsw-alias-state-error-primary)}.EtEeYG_groupMemberSection{flex-direction:column;flex:1;min-height:0;display:flex}.EtEeYG_groupMemberHeading{flex:none;justify-content:space-between;align-items:center;min-height:40px;padding:0 12px 0 16px;display:flex}.EtEeYG_groupMemberHeading strong{font-size:12px;line-height:18px}.EtEeYG_groupMemberHeading button[data-busy] svg{animation:1s linear infinite EtEeYG_summary-spin}.EtEeYG_groupMemberRefreshStatus{overflow-wrap:anywhere;min-height:22px;color:var(--dsw-alias-label-tertiary);flex:none;margin:0;padding:2px 16px 4px;font-size:10px;line-height:16px}.EtEeYG_groupMemberRefreshStatus[data-state=success]{color:var(--dsw-alias-state-success-primary)}.EtEeYG_groupMemberRefreshStatus[data-state=error]{color:var(--dsw-alias-state-error-primary)}.EtEeYG_groupMemberList{min-height:0;padding:0 8px;overflow:auto}.EtEeYG_groupMemberRow{border-bottom:1px solid var(--dsw-alias-border-l1);grid-template-columns:30px minmax(0,1fr) auto 28px;align-items:center;gap:8px;min-height:48px;padding:4px 6px;display:grid}.EtEeYG_groupMemberAvatar{background:var(--dsw-alias-interactive-bg-active);width:30px;height:30px;color:var(--dsw-alias-brand-primary);border-radius:50%;place-items:center;font-size:11px;display:grid}.EtEeYG_groupMemberIdentity{flex-direction:column;min-width:0;display:flex}.EtEeYG_groupMemberIdentity strong{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;font-size:12px;line-height:18px;display:flex;overflow:hidden}.EtEeYG_groupMemberIdentity strong small{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-brand-primary);border-radius:4px;padding:0 4px;font-size:9px}.EtEeYG_groupMemberIdentity>small{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:10px;line-height:15px;overflow:hidden}.EtEeYG_groupMemberRole{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:10px}.EtEeYG_groupMemberRemove:hover{background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary)}.EtEeYG_groupDetailsFooter{border-top:1px solid var(--dsw-alias-border-l1);flex:none;justify-content:space-between;align-items:center;gap:8px;min-height:46px;padding:0 16px;display:flex}.EtEeYG_groupDetailsFooter small{color:var(--dsw-alias-label-tertiary);font-size:10px}.EtEeYG_dangerText{color:var(--dsw-alias-state-error-primary);cursor:pointer;font:inherit;background:0 0;border:0;padding:0;font-size:12px}.EtEeYG_dangerText:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.EtEeYG_groupDetailsError{background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary);flex:none;padding:8px 12px;font-size:11px;line-height:17px}.EtEeYG_summaryTrigger{min-height:30px;color:var(--dsw-alias-brand-primary);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:8px;flex:none;align-items:center;gap:5px;padding:0 8px;font-size:12px;line-height:18px;display:flex}.EtEeYG_summaryTrigger:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_summaryTrigger:disabled{cursor:default;opacity:.7}.EtEeYG_summaryTrigger[aria-expanded=true]>svg:last-child{transform:rotate(180deg)}.EtEeYG_summaryTrigger>svg:first-child{flex:none}.EtEeYG_summaryPanel{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);min-height:0;max-height:min(220px,33%);color:var(--dsw-alias-label-primary);border-radius:10px;flex:0 33%;margin:8px 10px 0;overflow:hidden}.EtEeYG_summaryPanel[data-collapsed]{flex-basis:auto;max-height:42px}.EtEeYG_summaryHeader{border-bottom:1px solid var(--dsw-alias-border-l1);align-items:center;gap:9px;min-height:38px;padding:0 8px 0 12px;display:flex}.EtEeYG_summaryHeader>span{color:var(--dsw-alias-brand-primary);align-items:center;gap:6px;display:flex}.EtEeYG_summaryHeader>span strong{color:var(--dsw-alias-label-primary);font-size:13px;line-height:20px}.EtEeYG_summaryHeader>small{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:11px;line-height:16px;overflow:hidden}.EtEeYG_summaryHeader>button{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:7px;flex:none;place-items:center;padding:0;display:grid}.EtEeYG_summaryHeader>button:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_summaryCollapsed{width:100%;min-height:40px;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:0 10px 0 12px;display:grid}.EtEeYG_summaryCollapsed:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_summaryCollapsed>span{color:var(--dsw-alias-brand-primary);align-items:center;gap:6px;font-size:12px;font-weight:600;display:flex}.EtEeYG_summaryCollapsed>small{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.EtEeYG_summaryCollapsed>em{color:var(--dsw-alias-state-warn-label);white-space:nowrap;font-size:11px;font-style:normal}.EtEeYG_summaryLoading{min-height:88px;color:var(--dsw-alias-brand-primary);justify-content:center;align-items:center;gap:10px;padding:16px;display:flex}.EtEeYG_summaryLoading>svg,.EtEeYG_summaryTrigger:disabled>svg:first-child{animation:1s linear infinite EtEeYG_summary-spin}.EtEeYG_summaryLoading>span{flex-direction:column;gap:2px;display:flex}.EtEeYG_summaryLoading strong{color:var(--dsw-alias-label-primary);font-size:13px;line-height:20px}.EtEeYG_summaryLoading small{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.EtEeYG_summaryError{min-height:58px;color:var(--dsw-alias-state-error-primary);justify-content:space-between;align-items:center;gap:12px;padding:12px;font-size:12px;line-height:18px;display:flex}.EtEeYG_summaryError>span{overflow-wrap:anywhere;min-width:0}.EtEeYG_summaryError button,.EtEeYG_summaryStale button{border:1px solid var(--dsw-alias-border-l2);min-height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;background:0 0;border-radius:7px;flex:none;align-items:center;gap:5px;padding:0 8px;font-size:11px;display:flex}.EtEeYG_summaryError button:hover,.EtEeYG_summaryStale button:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_summaryStale{background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-state-warn-label);justify-content:space-between;align-items:center;gap:10px;padding:6px 10px;font-size:11px;line-height:16px;display:flex}.EtEeYG_summaryBody{gap:10px;max-height:118px;padding:10px 12px;display:grid;overflow:auto}.EtEeYG_summarySection h4{color:var(--dsw-alias-label-primary);align-items:center;gap:6px;margin:0 0 4px;font-size:12px;line-height:18px;display:flex}.EtEeYG_summarySection h4>svg{color:var(--dsw-alias-label-secondary);flex:none}.EtEeYG_summarySection ul{color:var(--dsw-alias-label-secondary);gap:2px;margin:0;padding-left:18px;font-size:11px;line-height:17px;display:grid}.EtEeYG_summarySection li{overflow-wrap:anywhere;padding-left:1px}.EtEeYG_summarySection p{color:var(--dsw-alias-label-tertiary);margin:0;font-size:11px;line-height:17px}.EtEeYG_summarySection b{color:var(--dsw-alias-label-primary);font-weight:500}.EtEeYG_summaryActions{border-top:1px solid var(--dsw-alias-border-l1);grid-template-columns:auto 1fr auto auto;align-items:center;gap:4px;min-height:34px;padding:0 8px;display:grid}.EtEeYG_summaryActions button{min-height:26px;color:var(--dsw-alias-brand-primary);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:6px;align-items:center;gap:5px;padding:0 6px;font-size:11px;line-height:16px;display:flex}.EtEeYG_summaryActions button:hover{background:var(--dsw-alias-interactive-bg-hover)}.EtEeYG_summaryPrivacy{border-top:1px solid var(--dsw-alias-border-l1);min-height:28px;color:var(--dsw-alias-label-tertiary);align-items:center;gap:6px;padding:0 10px;font-size:10px;line-height:15px;display:flex}.EtEeYG_summaryPrivacy svg{flex:none}.EtEeYG_summaryCopyError{color:var(--dsw-alias-state-error-primary);padding:4px 10px;font-size:10px;line-height:15px}@keyframes EtEeYG_summary-spin{to{transform:rotate(360deg)}}.EtEeYG_back{display:none}.EtEeYG_historyShell{flex:1;min-height:0;position:relative}.EtEeYG_history{box-sizing:border-box;flex-direction:column;gap:12px;height:100%;min-height:0;padding:16px;display:flex;overflow:auto}.EtEeYG_historyLoading{color:var(--dsw-alias-label-tertiary);align-items:center;gap:8px;margin:auto;font-size:12px;line-height:18px;display:flex}.EtEeYG_historyLoading>svg{color:var(--dsw-alias-brand-primary);animation:1s linear infinite EtEeYG_summary-spin}.EtEeYG_latestMessages{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-button-floating-fill);min-width:30px;min-height:30px;color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv2);cursor:pointer;font:inherit;border-radius:16px;justify-content:center;align-items:center;gap:5px;padding:0 9px;font-size:11px;line-height:16px;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.EtEeYG_latestMessages:hover{background:var(--dsw-alias-button-floating-hover)}.EtEeYG_message{align-self:flex-start;max-width:min(78%,420px)}.EtEeYG_message[data-outgoing]{align-self:flex-end}.EtEeYG_messageMeta{color:var(--dsw-alias-label-tertiary);justify-content:space-between;gap:10px;margin-bottom:3px;font-size:11px;line-height:16px;display:flex}.EtEeYG_message p,.EtEeYG_attachment{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;border-radius:12px;margin:0;padding:9px 11px;line-height:20px}.EtEeYG_message[data-outgoing] p,.EtEeYG_message[data-outgoing] .EtEeYG_attachment{background:var(--dsw-alias-interactive-bg-active)}.EtEeYG_mention{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-brand-primary);border-radius:3px;padding:0 2px;font-weight:600}.EtEeYG_pendingMessage{grid-template-columns:auto minmax(0,1fr);align-self:flex-end;align-items:end;gap:7px;max-width:min(78%,420px);display:grid}.EtEeYG_pendingMessageSpinner{color:var(--dsw-alias-label-tertiary);margin-bottom:12px;animation:1s linear infinite EtEeYG_summary-spin}.EtEeYG_pendingMessageContent{opacity:.82;min-width:0}.EtEeYG_pendingMessageContent>p,.EtEeYG_pendingAttachment{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;border-radius:12px;margin:0;padding:9px 11px;line-height:20px}.EtEeYG_pendingAttachment{align-items:center;gap:9px;display:flex}.EtEeYG_pendingAttachment>svg{color:var(--dsw-alias-label-secondary);flex:none}.EtEeYG_pendingAttachment span{flex-direction:column;min-width:0;display:flex}.EtEeYG_pendingAttachment strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.EtEeYG_pendingAttachment small{color:var(--dsw-alias-label-tertiary)}.EtEeYG_pendingMessageContent>.EtEeYG_pendingCaption{color:var(--dsw-alias-label-secondary);background:0 0;border:0;margin-top:4px;padding:4px 8px;font-size:12px}.EtEeYG_attachment{cursor:pointer;font:inherit;text-align:left;align-items:center;gap:12px;display:flex}.EtEeYG_attachment span{flex-direction:column;min-width:0;display:flex}.EtEeYG_attachment strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.EtEeYG_attachment small{color:var(--dsw-alias-label-tertiary)}.EtEeYG_attachment:disabled{cursor:default}.EtEeYG_imageAttachment{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);width:280px;max-width:100%;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;text-align:left;border-radius:12px;margin:0;padding:0;display:block;overflow:hidden}.EtEeYG_imageAttachment img{background:var(--dsw-alias-bg-layer-1);object-fit:contain;width:100%;max-height:280px;display:block}.EtEeYG_imageAttachment span{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:0 10px;padding:7px 9px;display:grid}.EtEeYG_imageAttachment strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.EtEeYG_imageAttachment small{color:var(--dsw-alias-label-tertiary);grid-column:1}.EtEeYG_imageAttachment svg{grid-area:1/2/span 2}.EtEeYG_message .EtEeYG_caption{color:var(--dsw-alias-label-secondary);background:0 0;margin-top:4px;padding:4px 8px;font-size:12px}.EtEeYG_inlineError{color:var(--dsw-alias-state-error-primary);margin-top:4px;display:block}.EtEeYG_empty{color:var(--dsw-alias-label-tertiary);text-align:center;margin:auto;padding:20px}.EtEeYG_composer{border-top:1px solid var(--dsw-alias-border-l1);flex:none;gap:8px;padding:10px 14px 14px;display:grid}.EtEeYG_filePicker{border:1px solid var(--dsw-alias-border-l2);width:32px;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}.EtEeYG_filePicker:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.EtEeYG_filePicker:disabled{opacity:.45;cursor:default}.EtEeYG_fileInput{display:none}.EtEeYG_composeInput{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);border-radius:10px;gap:6px;min-width:0;padding:9px 10px 8px;display:grid;position:relative}.EtEeYG_mentionCandidates{z-index:3;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);max-height:180px;box-shadow:var(--dsw-shadow-lv2);border-radius:8px;padding:5px;position:absolute;bottom:calc(100% + 7px);left:0;right:0;overflow:auto}.EtEeYG_mentionCandidates button{width:100%;min-height:42px;color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:6px;grid-template-rows:auto auto;grid-template-columns:28px minmax(0,1fr);align-items:center;column-gap:8px;padding:4px 7px;display:grid}.EtEeYG_mentionCandidates button:hover,.EtEeYG_mentionCandidates button[aria-selected=true]{background:var(--dsw-alias-interactive-bg-active)}.EtEeYG_mentionCandidates button>span{background:var(--dsw-alias-bg-layer-3);width:28px;height:28px;color:var(--dsw-alias-brand-primary);border-radius:50%;grid-row:1/span 2;place-items:center;font-size:10px;display:grid}.EtEeYG_mentionCandidates strong,.EtEeYG_mentionCandidates small{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.EtEeYG_mentionCandidates strong{align-self:end;font-size:12px;line-height:16px}.EtEeYG_mentionCandidates small{color:var(--dsw-alias-label-tertiary);align-self:start;font-size:10px;line-height:14px}.EtEeYG_composeInput:focus-within{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.EtEeYG_composeInput textarea{resize:none;background:0 0;border:0;border-radius:0;outline:0;min-width:0;min-height:42px;padding:0}.EtEeYG_composeInput textarea:focus-visible{outline:0}.EtEeYG_composeActions{justify-content:space-between;align-items:center;min-height:32px;display:flex}.EtEeYG_filePreview{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:10px;align-items:center;gap:8px;width:min(240px,100% - 8px);min-height:36px;padding:5px 28px 5px 8px;display:flex;position:relative}.EtEeYG_filePreview[data-image]{width:72px;height:72px;min-height:0;padding:0}.EtEeYG_filePreview img{object-fit:cover;border-radius:9px;width:72px;height:72px;display:block}.EtEeYG_filePreviewIcon{color:var(--dsw-alias-label-secondary);flex:none;place-items:center;display:grid}.EtEeYG_filePreviewName{min-width:0;color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.EtEeYG_removeFile{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-button-floating-fill);width:22px;height:22px;color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv1);cursor:pointer;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:-7px;right:-7px}.EtEeYG_removeFile:hover{background:var(--dsw-alias-button-floating-hover)}.EtEeYG_send{background:var(--dsw-alias-button-primary-fill);width:32px;height:32px;color:var(--dsw-alias-label-primary-inverted);cursor:pointer;border:0;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}.EtEeYG_send:disabled{opacity:.45;cursor:default}.EtEeYG_error{background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;flex:none;padding:8px 14px;font-size:12px;line-height:18px}.EtEeYG_pending{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-inverted);box-shadow:var(--dsw-shadow-lv2);border-radius:9px;padding:7px 10px;font-size:12px;line-height:18px;position:absolute;bottom:14px;right:14px}@media (width<=620px){.EtEeYG_trigger span{display:none}.EtEeYG_trigger{justify-content:center;width:36px;padding:0}.EtEeYG_drawer{width:calc(100vw - 56px);min-width:0}.EtEeYG_chat{grid-template-columns:1fr}.EtEeYG_thread{display:none}.EtEeYG_thread[data-visible]{display:flex}.EtEeYG_roster[data-hidden]{display:none}.EtEeYG_back{display:grid}.EtEeYG_summaryPanel{max-height:min(190px,33%);margin-left:8px;margin-right:8px}.EtEeYG_summaryTrigger>span{display:none}.EtEeYG_summaryTrigger{justify-content:center;width:30px;padding:0}.EtEeYG_summaryTrigger>svg:last-child{display:none}}@media (height<=420px){.EtEeYG_drawer{border-radius:10px}.EtEeYG_drawerHeader{height:44px;padding:0 8px 0 12px}.EtEeYG_drawerHeader h2{font-size:14px;line-height:20px}.EtEeYG_drawerHeader button,.EtEeYG_back{width:28px;height:28px}.EtEeYG_centerState,.EtEeYG_threadEmpty{justify-content:flex-start;gap:8px;min-height:0;padding:12px;overflow:auto}.EtEeYG_registrationIcon{width:32px;height:32px}.EtEeYG_composeBackdrop{place-items:start center;padding:8px;inset:44px 0 0}.EtEeYG_composeCard{border-radius:10px;gap:8px;padding:12px}.EtEeYG_recoveryForm{gap:8px}.EtEeYG_identityCard{border-radius:8px;margin:6px 8px;padding:7px 9px}.EtEeYG_profileBio,.EtEeYG_profileTags,.EtEeYG_identityStatus{display:none}.EtEeYG_modeTabs{margin:0 8px 4px}.EtEeYG_modeTabs button{min-height:26px}.EtEeYG_rosterHeader{min-height:28px;padding:0 4px 2px 12px}.EtEeYG_conversationSelect{gap:7px;padding:5px 7px}.EtEeYG_avatar{width:28px;height:28px}.EtEeYG_threadHeader{gap:5px;height:44px;padding:0 8px}.EtEeYG_groupAccessNotice{grid-template-columns:18px minmax(0,1fr);gap:6px 8px;padding:8px}.EtEeYG_groupAccessActions{grid-column:2;justify-content:flex-start}.EtEeYG_groupDetails{top:44px;overflow-y:auto}.EtEeYG_groupDetailsHeader{z-index:2;background:var(--dsw-alias-bg-layer-1);min-height:44px;padding-left:12px;position:sticky;top:0}.EtEeYG_groupSummary{gap:2px;padding:8px 12px}.EtEeYG_groupSummary dl{gap:6px;margin-top:3px}.EtEeYG_groupInvite{gap:3px;padding:7px 12px}.EtEeYG_groupMemberSection{flex:none}.EtEeYG_groupMemberHeading{min-height:32px;padding-left:12px}.EtEeYG_groupMemberList{overflow:visible}.EtEeYG_groupMemberRow{min-height:40px}.EtEeYG_groupDetailsFooter{background:var(--dsw-alias-bg-layer-1);min-height:40px;padding:0 12px;position:sticky;bottom:0}.EtEeYG_history{gap:6px;padding:8px}.EtEeYG_composer{gap:4px;padding:5px 8px 7px}.EtEeYG_composeInput{gap:3px;padding:5px 7px 4px}.EtEeYG_composeInput textarea{height:28px;min-height:28px}.EtEeYG_composeActions{min-height:28px}.EtEeYG_filePicker,.EtEeYG_send{width:28px;height:28px}.EtEeYG_mentionCandidates{max-height:72px}.EtEeYG_compactModal.EtEeYG_compactModal{border-radius:12px;gap:10px;max-height:calc(100vh - 48px);padding-bottom:12px}}@media (hover:none){.EtEeYG_conversationMenu{opacity:1}}@media (prefers-reduced-motion:reduce){.EtEeYG_drawer{scroll-behavior:auto;transition:none}.EtEeYG_summaryLoading>svg,.EtEeYG_summaryTrigger:disabled>svg:first-child,.EtEeYG_historyLoading>svg,.EtEeYG_recoveryProgressPanel>svg,.EtEeYG_groupMemberHeading button[data-busy] svg,.EtEeYG_pendingMessageSpinner{animation:none}}";
|
|
7480
|
+
const tagId$3 = "@awiki/dsh-plugin/AwikiOverlay.module.css";
|
|
7481
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
|
|
7881
7482
|
const tag = document.createElement("style");
|
|
7882
7483
|
tag.dataset.plugin = "@awiki/dsh-plugin";
|
|
7883
|
-
tag.dataset.pluginCss = tagId$
|
|
7884
|
-
tag.textContent = css$
|
|
7484
|
+
tag.dataset.pluginCss = tagId$3;
|
|
7485
|
+
tag.textContent = css$3;
|
|
7885
7486
|
document.head.appendChild(tag);
|
|
7886
7487
|
}
|
|
7887
7488
|
var _dsh_awiki_css_AwikiOverlay_module_css_default = {
|
|
@@ -7939,6 +7540,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7939
7540
|
"groupMemberRole": "EtEeYG_groupMemberRole",
|
|
7940
7541
|
"groupMemberRow": "EtEeYG_groupMemberRow",
|
|
7941
7542
|
"groupMemberSection": "EtEeYG_groupMemberSection",
|
|
7543
|
+
"groupRecoveryNotice": "EtEeYG_groupRecoveryNotice",
|
|
7942
7544
|
"groupSummary": "EtEeYG_groupSummary",
|
|
7943
7545
|
"hiddenConversationList": "EtEeYG_hiddenConversationList",
|
|
7944
7546
|
"hiddenConversationRow": "EtEeYG_hiddenConversationRow",
|
|
@@ -8287,16 +7889,36 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8287
7889
|
className: _dsh_awiki_css_AwikiOverlay_module_css_default.recoveryHandle,
|
|
8288
7890
|
children: progress.fullHandle
|
|
8289
7891
|
}),
|
|
8290
|
-
(0, react_jsx_runtime.
|
|
7892
|
+
(0, react_jsx_runtime.jsxs)("div", {
|
|
8291
7893
|
className: _dsh_awiki_css_AwikiOverlay_module_css_default.recoveryImpact,
|
|
8292
|
-
children:
|
|
8293
|
-
|
|
8294
|
-
|
|
8295
|
-
|
|
8296
|
-
|
|
8297
|
-
|
|
8298
|
-
|
|
8299
|
-
|
|
7894
|
+
children: [
|
|
7895
|
+
(0, react_jsx_runtime.jsxs)("p", {
|
|
7896
|
+
"data-tone": progress.localOrdinaryDataWillMigrate ? "success" : "neutral",
|
|
7897
|
+
children: [
|
|
7898
|
+
progress.localOrdinaryDataWillMigrate ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutline16, { size: 14 }) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutline16, { size: 14 }),
|
|
7899
|
+
"普通本地会话数据",
|
|
7900
|
+
progress.localOrdinaryDataWillMigrate ? "将迁移到恢复后的身份" : "不会迁移"
|
|
7901
|
+
]
|
|
7902
|
+
}),
|
|
7903
|
+
progress.unsupportedE2eeGroupCount > 0 && (0, react_jsx_runtime.jsxs)("p", {
|
|
7904
|
+
"data-tone": "neutral",
|
|
7905
|
+
children: [
|
|
7906
|
+
(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutline16, { size: 14 }),
|
|
7907
|
+
"有 ",
|
|
7908
|
+
progress.unsupportedE2eeGroupCount,
|
|
7909
|
+
" 个加密群聊无法自动迁移。"
|
|
7910
|
+
]
|
|
7911
|
+
}),
|
|
7912
|
+
progress.unsupportedDidOnlyGroupCount > 0 && (0, react_jsx_runtime.jsxs)("p", {
|
|
7913
|
+
"data-tone": "neutral",
|
|
7914
|
+
children: [
|
|
7915
|
+
(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutline16, { size: 14 }),
|
|
7916
|
+
"有 ",
|
|
7917
|
+
progress.unsupportedDidOnlyGroupCount,
|
|
7918
|
+
" 个仅 DID 群聊需要手动处理。"
|
|
7919
|
+
]
|
|
7920
|
+
})
|
|
7921
|
+
]
|
|
8300
7922
|
}),
|
|
8301
7923
|
preCommit ? (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)("p", {
|
|
8302
7924
|
className: _dsh_awiki_css_AwikiOverlay_module_css_default.recoveryConfirmationCopy,
|
|
@@ -8341,13 +7963,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8341
7963
|
}
|
|
8342
7964
|
//#endregion
|
|
8343
7965
|
//#region \0dsh-awiki-css:AwikiIdentityAccess.module.css.mjs
|
|
8344
|
-
const css$
|
|
8345
|
-
const tagId$
|
|
8346
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
7966
|
+
const css$2 = ".r_slHG_accessFlow{width:100%;min-width:0;color:var(--dsw-alias-label-secondary);gap:14px;display:grid}.r_slHG_identityIcon,.r_slHG_progressIcon{width:48px;height:48px;color:var(--dsw-alias-brand-primary);background:var(--dsw-alias-interactive-bg-active);border-radius:50%;place-items:center;margin:0 auto;display:grid}.r_slHG_progressIcon svg{animation:1s linear infinite r_slHG_identity-spin}@keyframes r_slHG_identity-spin{to{transform:rotate(360deg)}}.r_slHG_headingGroup{text-align:center;gap:6px;display:grid}.r_slHG_headingGroup h3,.r_slHG_headingGroup p,.r_slHG_existingNotice p,.r_slHG_dangerPanel p{margin:0}.r_slHG_headingGroup h3{color:var(--dsw-alias-label-primary);font-size:18px;line-height:26px}.r_slHG_headingGroup p,.r_slHG_existingNotice p,.r_slHG_dangerPanel p{font-size:13px;line-height:20px}.r_slHG_headingGroup strong{color:var(--dsw-alias-label-primary);overflow-wrap:anywhere}.r_slHG_identitySummary{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;grid-template-columns:max-content minmax(0,1fr);gap:6px 14px;padding:12px 14px;font-size:12px;line-height:18px;display:grid}.r_slHG_identitySummary span{color:var(--dsw-alias-label-tertiary)}.r_slHG_identitySummary strong{overflow-wrap:anywhere;min-width:0;color:var(--dsw-alias-label-primary)}.r_slHG_field{color:var(--dsw-alias-label-secondary);text-align:left;gap:6px;font-size:13px;line-height:20px;display:grid}.r_slHG_field input{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);width:100%;height:40px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);font:inherit;border-radius:8px;padding:0 12px}.r_slHG_field input:focus-visible,.r_slHG_primary:focus-visible,.r_slHG_secondary:focus-visible,.r_slHG_linkButton:focus-visible,.r_slHG_dangerLink:focus-visible,.r_slHG_dangerButton:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.r_slHG_primary,.r_slHG_secondary,.r_slHG_dangerButton{cursor:pointer;min-height:40px;font:inherit;border-radius:8px;padding:0 14px}.r_slHG_primary{color:var(--dsw-alias-label-primary-inverted);background:var(--dsw-alias-button-primary-fill);border:0}.r_slHG_primary:hover{background:var(--dsw-alias-button-primary-hover)}.r_slHG_secondary{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);background:0 0}.r_slHG_secondary:hover{background:var(--dsw-alias-interactive-bg-hover)}.r_slHG_primary:disabled,.r_slHG_secondary:disabled,.r_slHG_linkButton:disabled,.r_slHG_dangerLink:disabled,.r_slHG_dangerButton:disabled{cursor:default;opacity:.5}.r_slHG_linkButton,.r_slHG_dangerLink{cursor:pointer;min-height:32px;font:inherit;background:0 0;border:0;padding:0;font-size:12px}.r_slHG_linkButton{color:var(--dsw-alias-brand-primary)}.r_slHG_dangerLink{color:var(--dsw-alias-state-error-primary)}.r_slHG_actionStack{gap:8px;display:grid}.r_slHG_existingNotice,.r_slHG_dangerPanel{border-left:3px solid var(--dsw-alias-brand-primary);background:var(--dsw-alias-bg-layer-2);gap:10px;padding:12px 14px;display:grid}.r_slHG_existingNotice strong{color:var(--dsw-alias-label-primary)}.r_slHG_dangerPanel{border-left-color:var(--dsw-alias-state-error-primary)}.r_slHG_dangerPanel strong{color:var(--dsw-alias-label-primary);font-size:13px;line-height:20px}.r_slHG_confirmation{color:var(--dsw-alias-label-secondary);align-items:flex-start;gap:8px;font-size:12px;line-height:18px;display:flex}.r_slHG_confirmation input{width:16px;height:16px;accent-color:var(--dsw-alias-state-error-primary);flex:none;margin:1px 0 0}.r_slHG_dangerButton{border:1px solid var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary);background:0 0}.r_slHG_dangerButton:hover{background:var(--dsw-alias-interactive-bg-hover-danger)}.r_slHG_recoveryHelp{border-top:1px solid var(--dsw-alias-border-l1);gap:10px;padding-top:14px;display:grid}.r_slHG_recoveryHelp p{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:18px}.r_slHG_notice,.r_slHG_error{overflow-wrap:anywhere;font-size:12px;line-height:18px}.r_slHG_notice{color:var(--dsw-alias-label-secondary)}.r_slHG_error{color:var(--dsw-alias-state-error-primary)}@media (height<=560px){.r_slHG_accessFlow{gap:8px}.r_slHG_identityIcon,.r_slHG_progressIcon{width:32px;height:32px}}@media (prefers-reduced-motion:reduce){.r_slHG_primary,.r_slHG_secondary,.r_slHG_linkButton,.r_slHG_dangerLink,.r_slHG_dangerButton{transition-duration:.001ms!important}.r_slHG_progressIcon svg{animation-duration:.001ms!important}}";
|
|
7967
|
+
const tagId$2 = "@awiki/dsh-plugin/AwikiIdentityAccess.module.css";
|
|
7968
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
|
|
8347
7969
|
const tag = document.createElement("style");
|
|
8348
7970
|
tag.dataset.plugin = "@awiki/dsh-plugin";
|
|
8349
|
-
tag.dataset.pluginCss = tagId$
|
|
8350
|
-
tag.textContent = css$
|
|
7971
|
+
tag.dataset.pluginCss = tagId$2;
|
|
7972
|
+
tag.textContent = css$2;
|
|
8351
7973
|
document.head.appendChild(tag);
|
|
8352
7974
|
}
|
|
8353
7975
|
var _dsh_awiki_css_AwikiIdentityAccess_module_css_default = {
|
|
@@ -8369,7 +7991,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8369
7991
|
"primary": "r_slHG_primary",
|
|
8370
7992
|
"progressIcon": "r_slHG_progressIcon",
|
|
8371
7993
|
"recoveryHelp": "r_slHG_recoveryHelp",
|
|
8372
|
-
"sas": "r_slHG_sas",
|
|
8373
7994
|
"secondary": "r_slHG_secondary"
|
|
8374
7995
|
};
|
|
8375
7996
|
//#endregion
|
|
@@ -8408,8 +8029,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8408
8029
|
const [signedOutAlternative, setSignedOutAlternative] = (0, react.useState)("none");
|
|
8409
8030
|
const [replaceConfirmed, setReplaceConfirmed] = (0, react.useState)(false);
|
|
8410
8031
|
const [loginFailed, setLoginFailed] = (0, react.useState)(false);
|
|
8411
|
-
const [joinContext, setJoinContext] = (0, react.useState)(null);
|
|
8412
|
-
const [joinProgress, setJoinProgress] = (0, react.useState)(null);
|
|
8413
8032
|
(0, react.useEffect)(() => {
|
|
8414
8033
|
if (retryDeadline === null) return;
|
|
8415
8034
|
const update = () => {
|
|
@@ -8454,7 +8073,36 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8454
8073
|
setRetrySeconds(cooldownSeconds);
|
|
8455
8074
|
setNotice(`注册验证码已发送;${cooldownSeconds} 秒后可重新获取。`);
|
|
8456
8075
|
};
|
|
8457
|
-
const requestIdentityOtp =
|
|
8076
|
+
const requestIdentityOtp = async () => {
|
|
8077
|
+
setError(null);
|
|
8078
|
+
setNotice(null);
|
|
8079
|
+
const requestedHandle = handle.trim();
|
|
8080
|
+
const requestedPhone = phone.trim();
|
|
8081
|
+
const inspection = await props.inspectIdentityAccess({ handle: requestedHandle });
|
|
8082
|
+
if (!inspection.ok) {
|
|
8083
|
+
setError(inspection.error);
|
|
8084
|
+
return;
|
|
8085
|
+
}
|
|
8086
|
+
if (inspection.value.status === "existing") {
|
|
8087
|
+
const factorContext = {
|
|
8088
|
+
fullHandle: inspection.value.fullHandle,
|
|
8089
|
+
phone: requestedPhone
|
|
8090
|
+
};
|
|
8091
|
+
setRecoveryFactorContext(factorContext);
|
|
8092
|
+
const recovery = await props.sendRecoveryOtp(factorContext);
|
|
8093
|
+
if (!recovery.ok) {
|
|
8094
|
+
setRecoveryFactorContext(null);
|
|
8095
|
+
setError(recovery.error);
|
|
8096
|
+
return;
|
|
8097
|
+
}
|
|
8098
|
+
setRecoveryFactorContext({
|
|
8099
|
+
fullHandle: recovery.value.fullHandle,
|
|
8100
|
+
phone: requestedPhone
|
|
8101
|
+
});
|
|
8102
|
+
return;
|
|
8103
|
+
}
|
|
8104
|
+
await requestRegistrationOtp();
|
|
8105
|
+
};
|
|
8458
8106
|
const completeRegistration = async () => {
|
|
8459
8107
|
if (!registrationOtpSent) return;
|
|
8460
8108
|
setError(null);
|
|
@@ -8467,77 +8115,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8467
8115
|
setError(result.error);
|
|
8468
8116
|
return;
|
|
8469
8117
|
}
|
|
8470
|
-
if (result.value.status === "join-required") {
|
|
8471
|
-
setOtp("");
|
|
8472
|
-
setJoinContext({
|
|
8473
|
-
fullHandle: result.value.fullHandle,
|
|
8474
|
-
phone: phone.trim()
|
|
8475
|
-
});
|
|
8476
|
-
return;
|
|
8477
|
-
}
|
|
8478
8118
|
setPhone("");
|
|
8479
8119
|
setHandle("");
|
|
8480
8120
|
resetIdentityEntry();
|
|
8481
8121
|
};
|
|
8482
|
-
const beginJoin = async () => {
|
|
8483
|
-
setError(null);
|
|
8484
|
-
const result = await props.beginDeviceJoin();
|
|
8485
|
-
if (!result.ok) return setError(result.error);
|
|
8486
|
-
setJoinProgress(result.value);
|
|
8487
|
-
};
|
|
8488
|
-
const cancelJoin = async () => {
|
|
8489
|
-
setError(null);
|
|
8490
|
-
const result = await props.cancelDeviceJoin();
|
|
8491
|
-
if (!result.ok) return setError(result.error);
|
|
8492
|
-
setJoinContext(null);
|
|
8493
|
-
setJoinProgress(null);
|
|
8494
|
-
resetIdentityEntry();
|
|
8495
|
-
};
|
|
8496
|
-
const chooseRecovery = async () => {
|
|
8497
|
-
if (joinContext === null || !props.handleRecoveryPhoneEnabled) return;
|
|
8498
|
-
setError(null);
|
|
8499
|
-
const discarded = await props.cancelDeviceJoin();
|
|
8500
|
-
if (!discarded.ok) return setError(discarded.error);
|
|
8501
|
-
const recovery = await props.sendRecoveryOtp({
|
|
8502
|
-
fullHandle: joinContext.fullHandle,
|
|
8503
|
-
phone: joinContext.phone
|
|
8504
|
-
});
|
|
8505
|
-
if (!recovery.ok) return setError(recovery.error);
|
|
8506
|
-
setRecoveryFactorContext({
|
|
8507
|
-
fullHandle: recovery.value.fullHandle,
|
|
8508
|
-
phone: joinContext.phone
|
|
8509
|
-
});
|
|
8510
|
-
setJoinContext(null);
|
|
8511
|
-
};
|
|
8512
|
-
(0, react.useEffect)(() => {
|
|
8513
|
-
if (props.sessionStatus !== "unregistered" || joinContext !== null || joinProgress !== null || typeof props.getDeviceJoinStatus !== "function") return;
|
|
8514
|
-
let active = true;
|
|
8515
|
-
props.getDeviceJoinStatus().then((result) => {
|
|
8516
|
-
if (!active) return;
|
|
8517
|
-
if (!result.ok) setError(result.error);
|
|
8518
|
-
else if (result.value !== null) setJoinProgress(result.value);
|
|
8519
|
-
});
|
|
8520
|
-
return () => {
|
|
8521
|
-
active = false;
|
|
8522
|
-
};
|
|
8523
|
-
}, [props.sessionStatus]);
|
|
8524
|
-
(0, react.useEffect)(() => {
|
|
8525
|
-
if (joinProgress === null || [
|
|
8526
|
-
"authorized",
|
|
8527
|
-
"cancelled",
|
|
8528
|
-
"rejected",
|
|
8529
|
-
"expired"
|
|
8530
|
-
].includes(joinProgress.phase)) return;
|
|
8531
|
-
const timer = setInterval(() => {
|
|
8532
|
-
props.getDeviceJoinStatus().then((result) => {
|
|
8533
|
-
if (!result.ok) setError(result.error);
|
|
8534
|
-
else if (result.value !== null) setJoinProgress(result.value);
|
|
8535
|
-
});
|
|
8536
|
-
}, 2e3);
|
|
8537
|
-
return () => {
|
|
8538
|
-
clearInterval(timer);
|
|
8539
|
-
};
|
|
8540
|
-
}, [joinProgress?.phase]);
|
|
8541
8122
|
const login = async () => {
|
|
8542
8123
|
setError(null);
|
|
8543
8124
|
setLoginFailed(false);
|
|
@@ -8583,94 +8164,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8583
8164
|
requestTitle: "需要重新恢复身份",
|
|
8584
8165
|
requestDescription: "这个 Handle 已在另一台设备完成了更新恢复,当前设备的旧凭证因此失效。验证绑定手机号后即可继续使用本机数据。"
|
|
8585
8166
|
});
|
|
8586
|
-
if (props.sessionStatus === "unregistered" && joinProgress !== null) {
|
|
8587
|
-
const terminal = [
|
|
8588
|
-
"cancelled",
|
|
8589
|
-
"rejected",
|
|
8590
|
-
"expired"
|
|
8591
|
-
].includes(joinProgress.phase);
|
|
8592
|
-
return (0, react_jsx_runtime.jsx)(AwikiIdentityPage, { children: (0, react_jsx_runtime.jsxs)("div", {
|
|
8593
|
-
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.accessFlow,
|
|
8594
|
-
children: [
|
|
8595
|
-
(0, react_jsx_runtime.jsx)("div", {
|
|
8596
|
-
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.identityIcon,
|
|
8597
|
-
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconUserOutline16, { size: 24 })
|
|
8598
|
-
}),
|
|
8599
|
-
(0, react_jsx_runtime.jsxs)("div", {
|
|
8600
|
-
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.headingGroup,
|
|
8601
|
-
children: [(0, react_jsx_runtime.jsx)("h3", { children: joinProgress.phase === "sas-ready" ? "核对安全码" : terminal ? "设备加入已结束" : "正在加入设备" }), (0, react_jsx_runtime.jsx)("p", { children: joinProgress.phase === "sas-ready" ? "请在已有管理设备上核对下面的 6 位安全码;只有两端一致时才批准。" : joinProgress.phase === "rejected" ? "管理设备拒绝了这次加入。" : joinProgress.phase === "expired" ? "这次设备加入已过期,请重新验证手机号。" : joinProgress.phase === "cancelled" ? "这次设备加入已取消。" : "请在已有 AWiki Me 或 CLI 管理设备上处理加入请求。" })]
|
|
8602
|
-
}),
|
|
8603
|
-
joinProgress.phase === "sas-ready" && (0, react_jsx_runtime.jsx)("strong", {
|
|
8604
|
-
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.sas,
|
|
8605
|
-
children: joinProgress.sas
|
|
8606
|
-
}),
|
|
8607
|
-
!terminal && (0, react_jsx_runtime.jsxs)("small", {
|
|
8608
|
-
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.notice,
|
|
8609
|
-
role: "status",
|
|
8610
|
-
children: ["有效期至 ", joinProgress.expiresAt]
|
|
8611
|
-
}),
|
|
8612
|
-
(0, react_jsx_runtime.jsx)("button", {
|
|
8613
|
-
type: "button",
|
|
8614
|
-
className: terminal ? _dsh_awiki_css_AwikiIdentityAccess_module_css_default.primary : _dsh_awiki_css_AwikiIdentityAccess_module_css_default.secondary,
|
|
8615
|
-
disabled: props.pending,
|
|
8616
|
-
onClick: () => {
|
|
8617
|
-
cancelJoin();
|
|
8618
|
-
},
|
|
8619
|
-
children: terminal ? "返回身份入口" : "取消加入"
|
|
8620
|
-
}),
|
|
8621
|
-
error !== null && (0, react_jsx_runtime.jsx)("small", {
|
|
8622
|
-
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.error,
|
|
8623
|
-
role: "alert",
|
|
8624
|
-
children: error
|
|
8625
|
-
})
|
|
8626
|
-
]
|
|
8627
|
-
}) });
|
|
8628
|
-
}
|
|
8629
|
-
if (props.sessionStatus === "unregistered" && joinContext !== null) return (0, react_jsx_runtime.jsx)(AwikiIdentityPage, { children: (0, react_jsx_runtime.jsxs)("div", {
|
|
8630
|
-
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.accessFlow,
|
|
8631
|
-
children: [
|
|
8632
|
-
(0, react_jsx_runtime.jsx)("div", {
|
|
8633
|
-
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.identityIcon,
|
|
8634
|
-
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconUserOutline16, { size: 24 })
|
|
8635
|
-
}),
|
|
8636
|
-
(0, react_jsx_runtime.jsxs)("div", {
|
|
8637
|
-
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.headingGroup,
|
|
8638
|
-
children: [(0, react_jsx_runtime.jsx)("h3", { children: "这个 Handle 已存在" }), (0, react_jsx_runtime.jsx)("p", { children: "推荐把当前 DSH 作为新设备加入,原身份和其他设备会继续有效。" })]
|
|
8639
|
-
}),
|
|
8640
|
-
(0, react_jsx_runtime.jsx)("button", {
|
|
8641
|
-
type: "button",
|
|
8642
|
-
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.primary,
|
|
8643
|
-
disabled: props.pending,
|
|
8644
|
-
onClick: () => {
|
|
8645
|
-
beginJoin();
|
|
8646
|
-
},
|
|
8647
|
-
children: "加入新设备(推荐)"
|
|
8648
|
-
}),
|
|
8649
|
-
props.handleRecoveryPhoneEnabled && (0, react_jsx_runtime.jsx)("button", {
|
|
8650
|
-
type: "button",
|
|
8651
|
-
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.dangerLink,
|
|
8652
|
-
disabled: props.pending,
|
|
8653
|
-
onClick: () => {
|
|
8654
|
-
chooseRecovery();
|
|
8655
|
-
},
|
|
8656
|
-
children: "恢复 Handle(会替换 DID)"
|
|
8657
|
-
}),
|
|
8658
|
-
(0, react_jsx_runtime.jsx)("button", {
|
|
8659
|
-
type: "button",
|
|
8660
|
-
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.secondary,
|
|
8661
|
-
disabled: props.pending,
|
|
8662
|
-
onClick: () => {
|
|
8663
|
-
cancelJoin();
|
|
8664
|
-
},
|
|
8665
|
-
children: "取消"
|
|
8666
|
-
}),
|
|
8667
|
-
error !== null && (0, react_jsx_runtime.jsx)("small", {
|
|
8668
|
-
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.error,
|
|
8669
|
-
role: "alert",
|
|
8670
|
-
children: error
|
|
8671
|
-
})
|
|
8672
|
-
]
|
|
8673
|
-
}) });
|
|
8674
8167
|
if (props.sessionStatus === "signed-out") {
|
|
8675
8168
|
if (signedOutAlternative === "recover") return (0, react_jsx_runtime.jsx)(Recovery, {
|
|
8676
8169
|
...props,
|
|
@@ -8799,7 +8292,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8799
8292
|
}),
|
|
8800
8293
|
(0, react_jsx_runtime.jsxs)("div", {
|
|
8801
8294
|
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.headingGroup,
|
|
8802
|
-
children: [(0, react_jsx_runtime.jsx)("h3", { children: registrationOtpSent ? "
|
|
8295
|
+
children: [(0, react_jsx_runtime.jsx)("h3", { children: registrationOtpSent ? "创建新身份" : "进入 AWiki" }), (0, react_jsx_runtime.jsx)("p", { children: registrationOtpSent ? "这个 Handle 尚未注册。输入刚收到的验证码以创建身份。" : "输入 Handle 和手机号。已有 Handle 会恢复身份,新 Handle 会创建身份。" })]
|
|
8296
|
+
}),
|
|
8297
|
+
props.legacySharedStateDetected === true && props.profileName != null && (0, react_jsx_runtime.jsxs)("div", {
|
|
8298
|
+
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.existingNotice,
|
|
8299
|
+
role: "status",
|
|
8300
|
+
children: [(0, react_jsx_runtime.jsx)("strong", { children: "已为当前 Profile 隔离 AWiki 数据" }), (0, react_jsx_runtime.jsxs)("p", { children: [
|
|
8301
|
+
"检测到旧版共享数据。为避免多个 DSH Profile 同时占用数据库,当前 Profile「",
|
|
8302
|
+
props.profileName,
|
|
8303
|
+
"」使用独立数据目录;旧数据未删除或复制。请用原 Handle 和手机号恢复到此设备。"
|
|
8304
|
+
] })]
|
|
8803
8305
|
}),
|
|
8804
8306
|
(0, react_jsx_runtime.jsxs)("label", {
|
|
8805
8307
|
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.field,
|
|
@@ -8842,7 +8344,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8842
8344
|
type: "submit",
|
|
8843
8345
|
className: _dsh_awiki_css_AwikiIdentityAccess_module_css_default.primary,
|
|
8844
8346
|
disabled: props.pending || handle.trim() === "" || phone.trim() === "" || registrationOtpSent && otp.trim() === "",
|
|
8845
|
-
children: registrationOtpSent ? "
|
|
8347
|
+
children: registrationOtpSent ? "创建身份" : "获取验证码"
|
|
8846
8348
|
}),
|
|
8847
8349
|
registrationOtpSent && (0, react_jsx_runtime.jsx)("button", {
|
|
8848
8350
|
type: "button",
|
|
@@ -9118,6 +8620,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9118
8620
|
groupAccess: null,
|
|
9119
8621
|
groupMembers: Object.freeze([]),
|
|
9120
8622
|
groupMembersHasMore: false,
|
|
8623
|
+
groupRecovery: null,
|
|
9121
8624
|
messages: Object.freeze([]),
|
|
9122
8625
|
historyHasMore: false,
|
|
9123
8626
|
localPending: false,
|
|
@@ -9125,7 +8628,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9125
8628
|
pending: null,
|
|
9126
8629
|
error: null,
|
|
9127
8630
|
attachmentMaxBytes: 0,
|
|
9128
|
-
|
|
8631
|
+
profileName: null,
|
|
8632
|
+
legacySharedStateDetected: false,
|
|
9129
8633
|
summaries: Object.freeze({}),
|
|
9130
8634
|
recoveryOperationId: null,
|
|
9131
8635
|
recoveryProgress: null
|
|
@@ -9181,9 +8685,48 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9181
8685
|
default: return `${failure.code}:${failure.message}`;
|
|
9182
8686
|
}
|
|
9183
8687
|
}
|
|
8688
|
+
function groupRecoveryFailureMessage(failure) {
|
|
8689
|
+
return failure.code === "network" ? "无法连接 AWiki 服务,暂时不能恢复旧群聊身份。" : "暂时不能检查旧群聊身份,请稍后重试。";
|
|
8690
|
+
}
|
|
9184
8691
|
function conversationPreferenceFailureMessage(_failure) {
|
|
9185
8692
|
return "无法保存本机会话设置,请稍后重试。";
|
|
9186
8693
|
}
|
|
8694
|
+
function recoveryFingerprint(parts) {
|
|
8695
|
+
let hash = 2166136261;
|
|
8696
|
+
for (const part of parts) {
|
|
8697
|
+
for (let index = 0; index < part.length; index += 1) {
|
|
8698
|
+
hash ^= part.charCodeAt(index);
|
|
8699
|
+
hash = Math.imul(hash, 16777619);
|
|
8700
|
+
}
|
|
8701
|
+
hash ^= 0;
|
|
8702
|
+
hash = Math.imul(hash, 16777619);
|
|
8703
|
+
}
|
|
8704
|
+
return (hash >>> 0).toString(16).padStart(8, "0");
|
|
8705
|
+
}
|
|
8706
|
+
function groupRecoveryProjection(summary, hiddenGroupDids) {
|
|
8707
|
+
const hiddenItems = summary.items.filter((item) => hiddenGroupDids.has(item.groupDid));
|
|
8708
|
+
const hiddenPending = hiddenItems.filter((item) => item.status === "pending").length;
|
|
8709
|
+
const hiddenBlocked = hiddenItems.filter((item) => item.status === "blocked").length;
|
|
8710
|
+
const pending = Math.max(0, summary.pending - hiddenPending);
|
|
8711
|
+
const blocked = Math.max(0, summary.blocked - hiddenBlocked);
|
|
8712
|
+
const signature = `v1:${pending}:${blocked}:${recoveryFingerprint(summary.items.filter((item) => !hiddenGroupDids.has(item.groupDid)).map((item) => `${item.status}:${item.groupDid}`).sort())}`;
|
|
8713
|
+
if (blocked > 0) return {
|
|
8714
|
+
view: {
|
|
8715
|
+
status: "blocked",
|
|
8716
|
+
pending,
|
|
8717
|
+
blocked
|
|
8718
|
+
},
|
|
8719
|
+
signature
|
|
8720
|
+
};
|
|
8721
|
+
return {
|
|
8722
|
+
view: pending > 0 ? {
|
|
8723
|
+
status: "pending",
|
|
8724
|
+
pending,
|
|
8725
|
+
blocked: 0
|
|
8726
|
+
} : null,
|
|
8727
|
+
signature
|
|
8728
|
+
};
|
|
8729
|
+
}
|
|
9187
8730
|
function groupReadFailureReason(failure) {
|
|
9188
8731
|
switch (failure.code) {
|
|
9189
8732
|
case "group-identity-stale": return "recovering";
|
|
@@ -9361,18 +8904,23 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9361
8904
|
];
|
|
9362
8905
|
/** Runtime-only decoded-byte budget that prevents repeat Host calls while browsing. */
|
|
9363
8906
|
const BROWSER_IMAGE_ATTACHMENT_CACHE_MAX_BYTES = 33554432;
|
|
9364
|
-
const
|
|
9365
|
-
function
|
|
8907
|
+
const RECOVERY_OPERATION_STORAGE_PREFIX = "awiki.handle-recovery.operation.v2:";
|
|
8908
|
+
function recoveryOperationStorageKey(tenantDomain) {
|
|
8909
|
+
return `${RECOVERY_OPERATION_STORAGE_PREFIX}${encodeURIComponent(tenantDomain)}`;
|
|
8910
|
+
}
|
|
8911
|
+
function storedRecoveryOperation(tenantDomain) {
|
|
9366
8912
|
try {
|
|
9367
|
-
return globalThis.localStorage?.getItem(
|
|
8913
|
+
return globalThis.localStorage?.getItem(recoveryOperationStorageKey(tenantDomain)) ?? null;
|
|
9368
8914
|
} catch {
|
|
9369
8915
|
return null;
|
|
9370
8916
|
}
|
|
9371
8917
|
}
|
|
9372
|
-
function storeRecoveryOperation(operationId) {
|
|
8918
|
+
function storeRecoveryOperation(tenantDomain, operationId) {
|
|
8919
|
+
if (tenantDomain === void 0) return;
|
|
9373
8920
|
try {
|
|
9374
|
-
|
|
9375
|
-
|
|
8921
|
+
const key = recoveryOperationStorageKey(tenantDomain);
|
|
8922
|
+
if (operationId === null) globalThis.localStorage?.removeItem(key);
|
|
8923
|
+
else globalThis.localStorage?.setItem(key, operationId);
|
|
9376
8924
|
} catch {}
|
|
9377
8925
|
}
|
|
9378
8926
|
/** Wait between group-history readiness probes without retaining controller state. */
|
|
@@ -9442,12 +8990,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9442
8990
|
directProfiles = /* @__PURE__ */ new Map();
|
|
9443
8991
|
/** Last trustworthy group title for the active identity, keyed by canonical Group DID. */
|
|
9444
8992
|
groupTitles = /* @__PURE__ */ new Map();
|
|
8993
|
+
/** Current secret-free Core journal state, keyed by canonical Group DID. */
|
|
8994
|
+
groupRecoveryItems = /* @__PURE__ */ new Map();
|
|
9445
8995
|
/** Identity-scoped product overlays. Core conversations and history remain untouched. */
|
|
9446
8996
|
hiddenConversationPreferences = /* @__PURE__ */ new Map();
|
|
8997
|
+
dismissedGroupRecoverySignature;
|
|
8998
|
+
lastGroupRecoverySignature;
|
|
8999
|
+
lastGroupRecoverySummary;
|
|
9447
9000
|
/** Verified image payloads retained outside observable state for instant remounts. */
|
|
9448
9001
|
imageAttachments = /* @__PURE__ */ new Map();
|
|
9449
9002
|
imageAttachmentCacheBytes = 0;
|
|
9450
9003
|
presentationCacheOwnerDid = null;
|
|
9004
|
+
groupRecoveryOperation;
|
|
9451
9005
|
/**
|
|
9452
9006
|
* @param remote - generated Host Remote namespace.
|
|
9453
9007
|
* @param persistentImageCache - browser-origin verified preview cache.
|
|
@@ -9500,10 +9054,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9500
9054
|
identity: session.value.status === "active" ? session.value.identity : null,
|
|
9501
9055
|
error: null,
|
|
9502
9056
|
attachmentMaxBytes: config.value.attachmentMaxBytes,
|
|
9503
|
-
|
|
9504
|
-
|
|
9057
|
+
profileName: config.value.profileName ?? null,
|
|
9058
|
+
legacySharedStateDetected: config.value.legacySharedStateDetected ?? false,
|
|
9059
|
+
recoveryOperationId: storedRecoveryOperation(config.value.tenantDomain)
|
|
9505
9060
|
});
|
|
9506
|
-
const operationId = storedRecoveryOperation();
|
|
9061
|
+
const operationId = storedRecoveryOperation(config.value.tenantDomain);
|
|
9507
9062
|
if (operationId !== null) {
|
|
9508
9063
|
const recovery = await call(() => this.remote.getRecoveryStatus({ operationId }));
|
|
9509
9064
|
if (this.current(generation) && recovery.ok) {
|
|
@@ -9513,7 +9068,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9513
9068
|
recoveryProgress: recovery.value
|
|
9514
9069
|
});
|
|
9515
9070
|
if (recovery.value.phase === "applied") {
|
|
9516
|
-
storeRecoveryOperation(null);
|
|
9071
|
+
storeRecoveryOperation(config.value.tenantDomain, null);
|
|
9517
9072
|
this.publish({
|
|
9518
9073
|
...this.view,
|
|
9519
9074
|
recoveryOperationId: null,
|
|
@@ -9545,7 +9100,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9545
9100
|
if (!loaded.ok) return loaded;
|
|
9546
9101
|
const generation = this.generation;
|
|
9547
9102
|
if (this.view.identity !== null) {
|
|
9548
|
-
const listed = await this.
|
|
9103
|
+
const listed = await this.refreshConversationsAndRecoverGroups(generation);
|
|
9549
9104
|
if (!listed.ok) return listed;
|
|
9550
9105
|
}
|
|
9551
9106
|
if (this.current(generation)) this.timer = setInterval(() => {
|
|
@@ -9573,8 +9128,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9573
9128
|
...INITIAL_VIEW,
|
|
9574
9129
|
status: "ready",
|
|
9575
9130
|
sessionStatus: "signed-out",
|
|
9576
|
-
attachmentMaxBytes: this.config?.attachmentMaxBytes ?? 0
|
|
9577
|
-
handleRecoveryPhoneEnabled: this.config?.handleRecoveryPhoneEnabled ?? false
|
|
9131
|
+
attachmentMaxBytes: this.config?.attachmentMaxBytes ?? 0
|
|
9578
9132
|
});
|
|
9579
9133
|
return result;
|
|
9580
9134
|
}
|
|
@@ -9628,49 +9182,15 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9628
9182
|
const result = await this.withPending("注册身份", () => call(() => this.remote.registerIdentity(request), registrationFailureMessage));
|
|
9629
9183
|
if (!result.ok) return result;
|
|
9630
9184
|
if (!this.current(generation)) return result;
|
|
9631
|
-
|
|
9632
|
-
|
|
9633
|
-
this.
|
|
9634
|
-
|
|
9635
|
-
|
|
9636
|
-
|
|
9637
|
-
error: null
|
|
9638
|
-
});
|
|
9639
|
-
await this.refreshConversations(generation);
|
|
9640
|
-
}
|
|
9641
|
-
return result;
|
|
9642
|
-
}
|
|
9643
|
-
beginDeviceJoin() {
|
|
9644
|
-
return this.withPending("开始加入设备", () => call(() => this.remote.beginDeviceJoin()));
|
|
9645
|
-
}
|
|
9646
|
-
async getDeviceJoinStatus() {
|
|
9647
|
-
const result = await call(() => this.remote.getDeviceJoinStatus());
|
|
9648
|
-
if (result.ok && result.value?.completed) await this.loadSession();
|
|
9649
|
-
return result;
|
|
9650
|
-
}
|
|
9651
|
-
cancelDeviceJoin() {
|
|
9652
|
-
return this.withPending("取消加入设备", async () => {
|
|
9653
|
-
const result = await call(() => this.remote.cancelDeviceJoin());
|
|
9654
|
-
return result.ok ? {
|
|
9655
|
-
ok: true,
|
|
9656
|
-
value: void 0
|
|
9657
|
-
} : result;
|
|
9185
|
+
this.activatePresentationCache(result.value);
|
|
9186
|
+
this.publish({
|
|
9187
|
+
...this.view,
|
|
9188
|
+
sessionStatus: "active",
|
|
9189
|
+
identity: result.value,
|
|
9190
|
+
error: null
|
|
9658
9191
|
});
|
|
9659
|
-
|
|
9660
|
-
|
|
9661
|
-
return call(() => this.remote.refreshDeviceManagement());
|
|
9662
|
-
}
|
|
9663
|
-
startDeviceJoinVerification(request) {
|
|
9664
|
-
return this.withPending("开始设备验证", () => call(() => this.remote.startDeviceJoinVerification(request)));
|
|
9665
|
-
}
|
|
9666
|
-
approveDeviceJoin(request) {
|
|
9667
|
-
return this.withPending("批准设备", () => call(() => this.remote.approveDeviceJoin(request)));
|
|
9668
|
-
}
|
|
9669
|
-
rejectDeviceJoin(request) {
|
|
9670
|
-
return this.withPending("拒绝设备", () => call(() => this.remote.rejectDeviceJoin(request)));
|
|
9671
|
-
}
|
|
9672
|
-
revokeDevice(request) {
|
|
9673
|
-
return this.withPending("撤销设备", () => call(() => this.remote.revokeDevice(request)));
|
|
9192
|
+
await this.refreshConversationsAndRecoverGroups(generation);
|
|
9193
|
+
return result;
|
|
9674
9194
|
}
|
|
9675
9195
|
/**
|
|
9676
9196
|
* Update the deployment identity's public display name.
|
|
@@ -9723,7 +9243,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9723
9243
|
async sendRecoveryOtp(request) {
|
|
9724
9244
|
const result = await this.withPending("发送恢复验证码", () => call(() => this.remote.sendRecoveryOtp(request), registrationOtpFailureMessage), { publishFailure: false });
|
|
9725
9245
|
if (!result.ok) return result;
|
|
9726
|
-
storeRecoveryOperation(result.value.operationId);
|
|
9246
|
+
storeRecoveryOperation(this.config?.tenantDomain, result.value.operationId);
|
|
9727
9247
|
this.publish({
|
|
9728
9248
|
...this.view,
|
|
9729
9249
|
recoveryOperationId: result.value.operationId,
|
|
@@ -9758,7 +9278,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9758
9278
|
recoveryProgress: result.value
|
|
9759
9279
|
});
|
|
9760
9280
|
if (result.value.phase === "applied") {
|
|
9761
|
-
storeRecoveryOperation(null);
|
|
9281
|
+
storeRecoveryOperation(this.config?.tenantDomain, null);
|
|
9762
9282
|
this.publish({
|
|
9763
9283
|
...this.view,
|
|
9764
9284
|
recoveryOperationId: null,
|
|
@@ -9779,7 +9299,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9779
9299
|
recoveryProgress: result.value
|
|
9780
9300
|
});
|
|
9781
9301
|
if (result.value.phase === "applied") {
|
|
9782
|
-
storeRecoveryOperation(null);
|
|
9302
|
+
storeRecoveryOperation(this.config?.tenantDomain, null);
|
|
9783
9303
|
this.publish({
|
|
9784
9304
|
...this.view,
|
|
9785
9305
|
recoveryOperationId: null,
|
|
@@ -9806,7 +9326,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9806
9326
|
recoveryProgress: result.value
|
|
9807
9327
|
});
|
|
9808
9328
|
if (result.value.phase === "applied") {
|
|
9809
|
-
storeRecoveryOperation(null);
|
|
9329
|
+
storeRecoveryOperation(this.config?.tenantDomain, null);
|
|
9810
9330
|
this.publish({
|
|
9811
9331
|
...this.view,
|
|
9812
9332
|
recoveryOperationId: null,
|
|
@@ -9827,7 +9347,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9827
9347
|
if (phase !== void 0 && phase !== "awaiting_factor" && phase !== "ready_to_commit") return this.fail("当前恢复状态不能取消");
|
|
9828
9348
|
const result = await this.withPending("取消身份恢复", () => call(() => this.remote.discardRecovery({ operationId })), { publishFailure: false });
|
|
9829
9349
|
if (!result.ok) return result;
|
|
9830
|
-
storeRecoveryOperation(null);
|
|
9350
|
+
storeRecoveryOperation(this.config?.tenantDomain, null);
|
|
9831
9351
|
this.publish({
|
|
9832
9352
|
...this.view,
|
|
9833
9353
|
recoveryOperationId: null,
|
|
@@ -9838,6 +9358,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9838
9358
|
value: void 0
|
|
9839
9359
|
};
|
|
9840
9360
|
}
|
|
9361
|
+
/** Return cached browser-safe runtime policy, or load it once on demand. */
|
|
9362
|
+
async getConfig() {
|
|
9363
|
+
if (this.config !== null) return {
|
|
9364
|
+
ok: true,
|
|
9365
|
+
value: this.config
|
|
9366
|
+
};
|
|
9367
|
+
const result = await call(() => this.remote.getConfig(), mailFailureMessage);
|
|
9368
|
+
if (result.ok) this.config = result.value;
|
|
9369
|
+
return result;
|
|
9370
|
+
}
|
|
9841
9371
|
/** Read the active deployment identity's public mailbox state. */
|
|
9842
9372
|
getMailAccount() {
|
|
9843
9373
|
return call(() => this.remote.getMailAccount(), mailFailureMessage);
|
|
@@ -9858,6 +9388,20 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9858
9388
|
sendMail(request) {
|
|
9859
9389
|
return call(() => this.remote.sendMail(request), mailFailureMessage);
|
|
9860
9390
|
}
|
|
9391
|
+
/** Download one explicitly selected mail attachment without retaining its bytes. */
|
|
9392
|
+
async downloadMailAttachment(request) {
|
|
9393
|
+
if (this.disposed) return {
|
|
9394
|
+
ok: false,
|
|
9395
|
+
error: "AWiki 插件已卸载"
|
|
9396
|
+
};
|
|
9397
|
+
const generation = this.generation;
|
|
9398
|
+
const result = await call(() => this.remote.downloadMailAttachment(request), mailFailureMessage);
|
|
9399
|
+
if (!this.current(generation)) return {
|
|
9400
|
+
ok: false,
|
|
9401
|
+
error: "AWiki 已关闭"
|
|
9402
|
+
};
|
|
9403
|
+
return result;
|
|
9404
|
+
}
|
|
9861
9405
|
/**
|
|
9862
9406
|
* Load another page of the conversation roster.
|
|
9863
9407
|
* @returns successful pagination or one display-safe failure.
|
|
@@ -9880,6 +9424,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9880
9424
|
...this.view,
|
|
9881
9425
|
conversations: appendUnique(this.view.conversations, conversations.visible, (value) => value.id),
|
|
9882
9426
|
hiddenConversations: conversations.hidden,
|
|
9427
|
+
groupRecovery: this.currentGroupRecoveryView(),
|
|
9883
9428
|
conversationsHasMore: result.value.hasMore && result.value.nextCursor !== void 0
|
|
9884
9429
|
});
|
|
9885
9430
|
return {
|
|
@@ -9887,6 +9432,41 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9887
9432
|
value: void 0
|
|
9888
9433
|
};
|
|
9889
9434
|
}
|
|
9435
|
+
/** Synchronize account projections, then retry Core's durable group-rebind journal. */
|
|
9436
|
+
async retryGroupRebindRecovery() {
|
|
9437
|
+
const generation = this.generation;
|
|
9438
|
+
return this.withPending("恢复群聊身份", async () => {
|
|
9439
|
+
const listed = await this.refreshConversations(generation, true);
|
|
9440
|
+
if (!listed.ok) return {
|
|
9441
|
+
ok: false,
|
|
9442
|
+
error: listed.error
|
|
9443
|
+
};
|
|
9444
|
+
return this.resumeGroupRebindRecovery(generation);
|
|
9445
|
+
});
|
|
9446
|
+
}
|
|
9447
|
+
/** Dismiss only the current recovery-summary revision; Core recovery remains untouched. */
|
|
9448
|
+
async dismissGroupRecoveryNotice() {
|
|
9449
|
+
const signature = this.lastGroupRecoverySignature;
|
|
9450
|
+
if (signature === void 0 || this.view.groupRecovery === null) return {
|
|
9451
|
+
ok: true,
|
|
9452
|
+
value: void 0
|
|
9453
|
+
};
|
|
9454
|
+
const result = await call(() => this.remote.updateConversationPreference({
|
|
9455
|
+
action: "dismiss-group-recovery",
|
|
9456
|
+
signature
|
|
9457
|
+
}), conversationPreferenceFailureMessage);
|
|
9458
|
+
if (!result.ok) return this.fail(result.error);
|
|
9459
|
+
this.applyConversationPreferences(result.value);
|
|
9460
|
+
this.publish({
|
|
9461
|
+
...this.view,
|
|
9462
|
+
groupRecovery: null,
|
|
9463
|
+
error: null
|
|
9464
|
+
});
|
|
9465
|
+
return {
|
|
9466
|
+
ok: true,
|
|
9467
|
+
value: void 0
|
|
9468
|
+
};
|
|
9469
|
+
}
|
|
9890
9470
|
/** Hide one recent row locally without leaving a group or deleting history. */
|
|
9891
9471
|
async hideConversation(conversationId) {
|
|
9892
9472
|
const conversation = this.view.conversations.find((item) => item.id === conversationId);
|
|
@@ -9923,6 +9503,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9923
9503
|
localPending: false,
|
|
9924
9504
|
refreshing: false
|
|
9925
9505
|
} : {},
|
|
9506
|
+
groupRecovery: this.currentGroupRecoveryView(),
|
|
9926
9507
|
error: null
|
|
9927
9508
|
});
|
|
9928
9509
|
return {
|
|
@@ -9953,6 +9534,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9953
9534
|
...this.view,
|
|
9954
9535
|
conversations: appendUnique([conversation], this.view.conversations, (item) => item.id),
|
|
9955
9536
|
hiddenConversations: this.hiddenConversationsView(),
|
|
9537
|
+
groupRecovery: this.currentGroupRecoveryView(),
|
|
9956
9538
|
error: null
|
|
9957
9539
|
});
|
|
9958
9540
|
return {
|
|
@@ -10100,6 +9682,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10100
9682
|
error: null
|
|
10101
9683
|
});
|
|
10102
9684
|
const result = await (async () => {
|
|
9685
|
+
if (this.view.groupAccess?.status !== "available" && this.view.groupAccess?.status !== "loading") await this.resumeGroupRebindRecovery(this.generation);
|
|
10103
9686
|
const refreshed = await this.loadGroupState(conversation, true, true);
|
|
10104
9687
|
return refreshed.ok ? {
|
|
10105
9688
|
ok: true,
|
|
@@ -10654,13 +10237,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10654
10237
|
if (!result.ok) return result;
|
|
10655
10238
|
await this.persistentImageCache.clear().catch(() => void 0);
|
|
10656
10239
|
this.close();
|
|
10240
|
+
const tenantDomain = this.config?.tenantDomain;
|
|
10657
10241
|
this.config = null;
|
|
10658
10242
|
this.conversationsCursor = void 0;
|
|
10659
10243
|
this.historyCursor = void 0;
|
|
10660
10244
|
this.unreadAtOpen.clear();
|
|
10661
10245
|
this.summaryBaselines.clear();
|
|
10662
10246
|
this.clearPresentationCache();
|
|
10663
|
-
storeRecoveryOperation(null);
|
|
10247
|
+
storeRecoveryOperation(tenantDomain, null);
|
|
10664
10248
|
this.publish({
|
|
10665
10249
|
...INITIAL_VIEW,
|
|
10666
10250
|
status: "ready"
|
|
@@ -10688,10 +10272,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10688
10272
|
conversation: { ...hidden.conversation },
|
|
10689
10273
|
hiddenAt: hidden.hiddenAt
|
|
10690
10274
|
});
|
|
10275
|
+
this.dismissedGroupRecoverySignature = preferences.dismissedGroupRecoverySignature;
|
|
10691
10276
|
}
|
|
10692
10277
|
hiddenConversationsView() {
|
|
10693
10278
|
return [...this.hiddenConversationPreferences.values()].sort((left, right) => right.hiddenAt - left.hiddenAt).map((item) => item.conversation);
|
|
10694
10279
|
}
|
|
10280
|
+
currentGroupRecoveryView() {
|
|
10281
|
+
const summary = this.lastGroupRecoverySummary;
|
|
10282
|
+
if (summary === void 0) return this.view.groupRecovery;
|
|
10283
|
+
const projection = groupRecoveryProjection(summary, new Set([...this.hiddenConversationPreferences.values()].map((item) => item.conversation).filter((conversation) => conversation.kind === "group").map((conversation) => conversation.groupDid)));
|
|
10284
|
+
this.lastGroupRecoverySignature = projection.signature;
|
|
10285
|
+
return projection.signature === this.dismissedGroupRecoverySignature ? null : projection.view;
|
|
10286
|
+
}
|
|
10695
10287
|
async reconcileConversationPage(incoming, generation) {
|
|
10696
10288
|
const current = [...this.view.conversations, ...this.view.hiddenConversations];
|
|
10697
10289
|
const conversations = incoming.map((item) => this.cacheConversation(item, current.find((candidate) => candidate.id === item.id)));
|
|
@@ -10742,6 +10334,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10742
10334
|
...this.view,
|
|
10743
10335
|
conversations: firstPage ? refreshed.visible : appendUnique(refreshed.visible, this.view.conversations, (value) => value.id),
|
|
10744
10336
|
hiddenConversations: refreshed.hidden,
|
|
10337
|
+
groupRecovery: this.currentGroupRecoveryView(),
|
|
10745
10338
|
conversationsHasMore: firstPage ? result.value.hasMore && result.value.nextCursor !== void 0 : this.view.conversationsHasMore,
|
|
10746
10339
|
error: background ? this.view.error : null
|
|
10747
10340
|
});
|
|
@@ -10774,6 +10367,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10774
10367
|
this.groupMembersCursor = void 0;
|
|
10775
10368
|
this.unreadAtOpen.clear();
|
|
10776
10369
|
this.summaryBaselines.clear();
|
|
10370
|
+
this.groupRecoveryItems.clear();
|
|
10371
|
+
this.lastGroupRecoverySignature = void 0;
|
|
10372
|
+
this.lastGroupRecoverySummary = void 0;
|
|
10777
10373
|
this.clearImageAttachments();
|
|
10778
10374
|
this.publish({
|
|
10779
10375
|
...this.view,
|
|
@@ -10787,6 +10383,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10787
10383
|
groupAccess: null,
|
|
10788
10384
|
groupMembers: Object.freeze([]),
|
|
10789
10385
|
groupMembersHasMore: false,
|
|
10386
|
+
groupRecovery: null,
|
|
10790
10387
|
messages: Object.freeze([]),
|
|
10791
10388
|
historyHasMore: false,
|
|
10792
10389
|
localPending: false,
|
|
@@ -10796,6 +10393,45 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10796
10393
|
summaries: Object.freeze({})
|
|
10797
10394
|
});
|
|
10798
10395
|
}
|
|
10396
|
+
/** Hydrate account-projected groups before asking Core to resume their durable rebind jobs. */
|
|
10397
|
+
async refreshConversationsAndRecoverGroups(generation, background = false) {
|
|
10398
|
+
const listed = await this.refreshConversations(generation, background);
|
|
10399
|
+
if (!listed.ok || !this.current(generation)) return listed;
|
|
10400
|
+
await this.resumeGroupRebindRecovery(generation);
|
|
10401
|
+
return listed;
|
|
10402
|
+
}
|
|
10403
|
+
resumeGroupRebindRecovery(generation) {
|
|
10404
|
+
const active = this.groupRecoveryOperation;
|
|
10405
|
+
if (active !== void 0 && active.generation === generation) return active.operation;
|
|
10406
|
+
let operation;
|
|
10407
|
+
operation = call(() => this.remote.resumeGroupRebindRecovery(), groupRecoveryFailureMessage).then((result) => {
|
|
10408
|
+
if (!this.current(generation)) return result;
|
|
10409
|
+
if (result.ok) {
|
|
10410
|
+
this.lastGroupRecoverySummary = result.value;
|
|
10411
|
+
this.groupRecoveryItems.clear();
|
|
10412
|
+
for (const item of result.value.items) this.groupRecoveryItems.set(item.groupDid, item.status);
|
|
10413
|
+
} else {
|
|
10414
|
+
this.lastGroupRecoverySummary = void 0;
|
|
10415
|
+
this.lastGroupRecoverySignature = "unavailable";
|
|
10416
|
+
}
|
|
10417
|
+
this.publish({
|
|
10418
|
+
...this.view,
|
|
10419
|
+
groupRecovery: result.ok ? this.currentGroupRecoveryView() : this.dismissedGroupRecoverySignature === "unavailable" ? null : {
|
|
10420
|
+
status: "unavailable",
|
|
10421
|
+
pending: 0,
|
|
10422
|
+
blocked: 0
|
|
10423
|
+
}
|
|
10424
|
+
});
|
|
10425
|
+
return result;
|
|
10426
|
+
}).finally(() => {
|
|
10427
|
+
if (this.groupRecoveryOperation?.operation === operation) this.groupRecoveryOperation = void 0;
|
|
10428
|
+
});
|
|
10429
|
+
this.groupRecoveryOperation = {
|
|
10430
|
+
generation,
|
|
10431
|
+
operation
|
|
10432
|
+
};
|
|
10433
|
+
return operation;
|
|
10434
|
+
}
|
|
10799
10435
|
async loadHistory(older) {
|
|
10800
10436
|
const conversationId = this.view.selectedConversationId;
|
|
10801
10437
|
if (conversationId === null) return this.fail("请先选择会话");
|
|
@@ -10837,7 +10473,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10837
10473
|
if (this.polling || !this.current(generation) || this.view.identity === null) return;
|
|
10838
10474
|
this.polling = true;
|
|
10839
10475
|
try {
|
|
10840
|
-
|
|
10476
|
+
const knownGroups = new Set(this.view.conversations.filter((conversation) => conversation.kind === "group").map((conversation) => conversation.groupDid));
|
|
10477
|
+
if ((await this.refreshConversations(generation, true)).ok && this.view.conversations.some((conversation) => conversation.kind === "group" && !knownGroups.has(conversation.groupDid))) await this.resumeGroupRebindRecovery(generation);
|
|
10841
10478
|
const selected = this.view.selectedConversationId;
|
|
10842
10479
|
if (selected === null || !this.current(generation)) return;
|
|
10843
10480
|
if (this.selectedConversation()?.kind === "group" && this.view.groupAccess?.status !== "available") return;
|
|
@@ -10931,7 +10568,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10931
10568
|
return selected === null ? void 0 : this.view.conversations.find((value) => value.id === selected);
|
|
10932
10569
|
}
|
|
10933
10570
|
publishGroupAccessFailure(conversation, reason) {
|
|
10934
|
-
const
|
|
10571
|
+
const journal = this.groupRecoveryItems.get(conversation.groupDid);
|
|
10572
|
+
const status = reason === "not-member" ? journal === "blocked" ? "blocked" : journal === "pending" ? "recovering" : "not-member" : reason;
|
|
10935
10573
|
this.publish({
|
|
10936
10574
|
...this.view,
|
|
10937
10575
|
groupAccess: {
|
|
@@ -10947,7 +10585,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10947
10585
|
if (ownerDid === this.presentationCacheOwnerDid) return;
|
|
10948
10586
|
this.directProfiles.clear();
|
|
10949
10587
|
this.groupTitles.clear();
|
|
10588
|
+
this.groupRecoveryItems.clear();
|
|
10950
10589
|
this.hiddenConversationPreferences.clear();
|
|
10590
|
+
this.dismissedGroupRecoverySignature = void 0;
|
|
10591
|
+
this.lastGroupRecoverySignature = void 0;
|
|
10592
|
+
this.lastGroupRecoverySummary = void 0;
|
|
10951
10593
|
this.clearImageAttachments();
|
|
10952
10594
|
this.presentationCacheOwnerDid = ownerDid;
|
|
10953
10595
|
}
|
|
@@ -10955,7 +10597,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10955
10597
|
clearPresentationCache() {
|
|
10956
10598
|
this.directProfiles.clear();
|
|
10957
10599
|
this.groupTitles.clear();
|
|
10600
|
+
this.groupRecoveryItems.clear();
|
|
10958
10601
|
this.hiddenConversationPreferences.clear();
|
|
10602
|
+
this.dismissedGroupRecoverySignature = void 0;
|
|
10603
|
+
this.lastGroupRecoverySignature = void 0;
|
|
10604
|
+
this.lastGroupRecoverySummary = void 0;
|
|
10959
10605
|
this.clearImageAttachments();
|
|
10960
10606
|
this.presentationCacheOwnerDid = null;
|
|
10961
10607
|
}
|
|
@@ -11314,36 +10960,190 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11314
10960
|
const owner = mailListCacheOwner(ownerDid);
|
|
11315
10961
|
if (owner === void 0) return "inbox";
|
|
11316
10962
|
try {
|
|
11317
|
-
return storage.getItem(`${FOLDER_PREFIX}${encodeURIComponent(owner)}`) === "sent" ? "sent" : "inbox";
|
|
10963
|
+
return storage.getItem(`${FOLDER_PREFIX}${encodeURIComponent(owner)}`) === "sent" ? "sent" : "inbox";
|
|
10964
|
+
} catch {
|
|
10965
|
+
return "inbox";
|
|
10966
|
+
}
|
|
10967
|
+
}
|
|
10968
|
+
/** Remember the current folder without storing any message content. */
|
|
10969
|
+
function writeMailFolderCache(storage, ownerDid, folder) {
|
|
10970
|
+
const owner = mailListCacheOwner(ownerDid);
|
|
10971
|
+
if (owner === void 0) return;
|
|
10972
|
+
try {
|
|
10973
|
+
storage.setItem(`${FOLDER_PREFIX}${encodeURIComponent(owner)}`, folder);
|
|
10974
|
+
} catch {}
|
|
10975
|
+
}
|
|
10976
|
+
//#endregion
|
|
10977
|
+
//#region lib/types/base64.js
|
|
10978
|
+
/** Linear-time standard Base64 syntax validation for bounded binary payloads. */
|
|
10979
|
+
function base64Character(code) {
|
|
10980
|
+
return code >= 65 && code <= 90 || code >= 97 && code <= 122 || code >= 48 && code <= 57 || code === 43 || code === 47;
|
|
10981
|
+
}
|
|
10982
|
+
/** Reject misplaced padding and non-Base64 bytes without recursive regexp matching. */
|
|
10983
|
+
function standardBase64Syntax(value) {
|
|
10984
|
+
if (value.length % 4 !== 0) return false;
|
|
10985
|
+
let dataEnd = value.length;
|
|
10986
|
+
if (dataEnd > 0 && value.charCodeAt(dataEnd - 1) === 61) dataEnd -= 1;
|
|
10987
|
+
if (dataEnd > 0 && value.charCodeAt(dataEnd - 1) === 61) dataEnd -= 1;
|
|
10988
|
+
for (let index = 0; index < dataEnd; index += 1) if (!base64Character(value.charCodeAt(index))) return false;
|
|
10989
|
+
for (let index = dataEnd; index < value.length; index += 1) if (value.charCodeAt(index) !== 61) return false;
|
|
10990
|
+
return true;
|
|
10991
|
+
}
|
|
10992
|
+
//#endregion
|
|
10993
|
+
//#region lib/types/client/mail-attachment.js
|
|
10994
|
+
/** Browser-only mail attachment selection, encoding, integrity, and download helpers. */
|
|
10995
|
+
function invalid(message) {
|
|
10996
|
+
throw new TypeError(message);
|
|
10997
|
+
}
|
|
10998
|
+
function fileName(value) {
|
|
10999
|
+
if (value.length === 0 || value.trim() !== value || value.replace(/[. ]+$/u, "") !== value || value === "." || value === ".." || new TextEncoder().encode(value).byteLength > 255 || /[\\/\p{C}]/u.test(value)) invalid("附件文件名无效。");
|
|
11000
|
+
return value;
|
|
11001
|
+
}
|
|
11002
|
+
function contentType(value) {
|
|
11003
|
+
if (value === "") return "application/octet-stream";
|
|
11004
|
+
if (!/^[A-Za-z0-9!#$&^_.+-]+\/[A-Za-z0-9!#$&^_.+-]+$/u.test(value)) invalid("附件 MIME 类型无效。");
|
|
11005
|
+
return value;
|
|
11006
|
+
}
|
|
11007
|
+
function assertLimits(limits) {
|
|
11008
|
+
if (!Number.isSafeInteger(limits.maxCount) || limits.maxCount < 0 || !Number.isSafeInteger(limits.maxBytes) || limits.maxBytes < 1 || !Number.isSafeInteger(limits.totalMaxBytes) || limits.totalMaxBytes < limits.maxBytes) invalid("邮件附件限制暂不可用。");
|
|
11009
|
+
}
|
|
11010
|
+
function base64(bytes) {
|
|
11011
|
+
let binary = "";
|
|
11012
|
+
const chunkSize = 32768;
|
|
11013
|
+
for (let offset = 0; offset < bytes.length; offset += chunkSize) binary += String.fromCharCode(...bytes.subarray(offset, offset + chunkSize));
|
|
11014
|
+
return btoa(binary);
|
|
11015
|
+
}
|
|
11016
|
+
/** Append browser File references after enforcing the exact Host-owned limits. */
|
|
11017
|
+
function selectMailAttachments(current, selected, limits, createId) {
|
|
11018
|
+
assertLimits(limits);
|
|
11019
|
+
const additions = Array.from(selected, (file) => ({
|
|
11020
|
+
id: createId(),
|
|
11021
|
+
file,
|
|
11022
|
+
fileName: fileName(file.name),
|
|
11023
|
+
contentType: contentType(file.type),
|
|
11024
|
+
sizeBytes: file.size,
|
|
11025
|
+
lastModified: file.lastModified
|
|
11026
|
+
}));
|
|
11027
|
+
const combined = [...current, ...additions];
|
|
11028
|
+
if (combined.length > limits.maxCount) invalid(`邮件最多选择 ${limits.maxCount} 个附件。`);
|
|
11029
|
+
for (const attachment of combined) {
|
|
11030
|
+
if (!Number.isSafeInteger(attachment.sizeBytes) || attachment.sizeBytes < 0) invalid("附件大小无效。");
|
|
11031
|
+
if (attachment.sizeBytes > limits.maxBytes) invalid(`单个附件不能超过 ${limits.maxBytes} bytes。`);
|
|
11032
|
+
}
|
|
11033
|
+
const total = combined.reduce((sum, attachment) => sum + attachment.sizeBytes, 0);
|
|
11034
|
+
if (!Number.isSafeInteger(total) || total > limits.totalMaxBytes) invalid(`附件总大小不能超过 ${limits.totalMaxBytes} bytes。`);
|
|
11035
|
+
return combined;
|
|
11036
|
+
}
|
|
11037
|
+
/** Re-read the same approved File objects and return JSON-safe Remote attachments. */
|
|
11038
|
+
async function encodeMailAttachments(attachments, limits) {
|
|
11039
|
+
selectMailAttachments([], attachments.map((value) => value.file), limits, () => "validation-only");
|
|
11040
|
+
const encoded = [];
|
|
11041
|
+
for (const attachment of attachments) {
|
|
11042
|
+
if (attachment.file.name !== attachment.fileName || contentType(attachment.file.type) !== attachment.contentType || attachment.file.size !== attachment.sizeBytes || attachment.file.lastModified !== attachment.lastModified) invalid(`附件 ${attachment.fileName} 已发生变化,请重新选择。`);
|
|
11043
|
+
let buffer;
|
|
11044
|
+
try {
|
|
11045
|
+
buffer = await attachment.file.arrayBuffer();
|
|
11046
|
+
} catch {
|
|
11047
|
+
invalid(`无法读取附件 ${attachment.fileName},请重新选择。`);
|
|
11048
|
+
}
|
|
11049
|
+
const bytes = new Uint8Array(buffer);
|
|
11050
|
+
if (bytes.byteLength !== attachment.sizeBytes) invalid(`附件 ${attachment.fileName} 的大小已发生变化,请重新选择。`);
|
|
11051
|
+
encoded.push({
|
|
11052
|
+
fileName: attachment.fileName,
|
|
11053
|
+
contentType: attachment.contentType,
|
|
11054
|
+
sizeBytes: bytes.byteLength,
|
|
11055
|
+
bytesBase64: base64(bytes)
|
|
11056
|
+
});
|
|
11057
|
+
}
|
|
11058
|
+
return encoded;
|
|
11059
|
+
}
|
|
11060
|
+
/** Return canonical download metadata only when the service supplied every required field. */
|
|
11061
|
+
function downloadableMailAttachment(value, maxBytes) {
|
|
11062
|
+
if (!Number.isSafeInteger(value.index) || value.index < 0 || value.index > 4294967295) return void 0;
|
|
11063
|
+
if (value.fileName === void 0 || value.contentType === void 0 || value.sizeBytes === void 0) return void 0;
|
|
11064
|
+
if (!/^(?:0|[1-9][0-9]*)$/u.test(value.sizeBytes)) return void 0;
|
|
11065
|
+
const sizeBytes = Number(value.sizeBytes);
|
|
11066
|
+
if (!Number.isSafeInteger(sizeBytes) || sizeBytes < 0 || sizeBytes > maxBytes) return void 0;
|
|
11067
|
+
try {
|
|
11068
|
+
return {
|
|
11069
|
+
index: value.index,
|
|
11070
|
+
fileName: fileName(value.fileName),
|
|
11071
|
+
contentType: contentType(value.contentType),
|
|
11072
|
+
sizeBytes
|
|
11073
|
+
};
|
|
11074
|
+
} catch {
|
|
11075
|
+
return;
|
|
11076
|
+
}
|
|
11077
|
+
}
|
|
11078
|
+
/** Validate exact metadata, canonical Base64, byte length, and SHA-256 before download. */
|
|
11079
|
+
async function prepareMailAttachmentDownload(value, expected, maxBytes) {
|
|
11080
|
+
if (fileName(value.fileName) !== expected.fileName || contentType(value.contentType) !== expected.contentType || value.sizeBytes !== expected.sizeBytes || value.sizeBytes > maxBytes) invalid("下载附件与邮件元数据不一致。");
|
|
11081
|
+
if (!/^[a-f0-9]{64}$/u.test(value.sha256)) invalid("下载附件完整性信息无效。");
|
|
11082
|
+
const expectedEncodedLength = Math.ceil(value.sizeBytes / 3) * 4;
|
|
11083
|
+
if (value.bytesBase64.length !== expectedEncodedLength || value.bytesBase64.length % 4 !== 0 || !standardBase64Syntax(value.bytesBase64)) invalid("下载附件编码无效。");
|
|
11084
|
+
let binary;
|
|
11085
|
+
try {
|
|
11086
|
+
binary = atob(value.bytesBase64);
|
|
11318
11087
|
} catch {
|
|
11319
|
-
|
|
11088
|
+
invalid("下载附件编码无效。");
|
|
11320
11089
|
}
|
|
11090
|
+
const bytes = Uint8Array.from(binary, (character) => character.charCodeAt(0));
|
|
11091
|
+
if (bytes.byteLength !== value.sizeBytes || base64(bytes) !== value.bytesBase64) invalid("下载附件大小或编码不一致。");
|
|
11092
|
+
const digest = new Uint8Array(await crypto.subtle.digest("SHA-256", bytes));
|
|
11093
|
+
if (Array.from(digest, (byte) => byte.toString(16).padStart(2, "0")).join("") !== value.sha256) invalid("下载附件完整性校验失败。");
|
|
11094
|
+
return {
|
|
11095
|
+
fileName: expected.fileName,
|
|
11096
|
+
contentType: expected.contentType,
|
|
11097
|
+
bytes
|
|
11098
|
+
};
|
|
11321
11099
|
}
|
|
11322
|
-
/**
|
|
11323
|
-
function
|
|
11324
|
-
const
|
|
11325
|
-
|
|
11100
|
+
/** Trigger one download and always revoke the temporary object URL immediately. */
|
|
11101
|
+
function savePreparedMailAttachment(value) {
|
|
11102
|
+
const url = URL.createObjectURL(new Blob([value.bytes], { type: value.contentType }));
|
|
11103
|
+
const anchor = document.createElement("a");
|
|
11326
11104
|
try {
|
|
11327
|
-
|
|
11328
|
-
|
|
11105
|
+
anchor.href = url;
|
|
11106
|
+
anchor.download = value.fileName;
|
|
11107
|
+
anchor.hidden = true;
|
|
11108
|
+
document.body.append(anchor);
|
|
11109
|
+
anchor.click();
|
|
11110
|
+
} finally {
|
|
11111
|
+
anchor.remove();
|
|
11112
|
+
URL.revokeObjectURL(url);
|
|
11113
|
+
}
|
|
11114
|
+
}
|
|
11115
|
+
/** Execute the exact Browser UI download path: Remote, integrity check, Blob, and save click. */
|
|
11116
|
+
async function downloadAndSaveMailAttachment(download, request, expected, maxBytes, active = () => true) {
|
|
11117
|
+
const result = await download(request);
|
|
11118
|
+
if (!active()) return false;
|
|
11119
|
+
if (!result.ok) invalid(result.error);
|
|
11120
|
+
const prepared = await prepareMailAttachmentDownload(result.value, expected, maxBytes);
|
|
11121
|
+
if (!active()) return false;
|
|
11122
|
+
savePreparedMailAttachment(prepared);
|
|
11123
|
+
return true;
|
|
11329
11124
|
}
|
|
11330
11125
|
//#endregion
|
|
11331
11126
|
//#region \0dsh-awiki-css:AwikiMail.module.css.mjs
|
|
11332
|
-
const css$2 = ".eMUW5a_mail{background:var(--dsw-alias-bg-layer-1);flex:1;grid-template-columns:240px 320px minmax(420px,1fr);min-height:0;display:grid;position:relative}.eMUW5a_sidebar,.eMUW5a_mailList,.eMUW5a_mailDetail{min-width:0;min-height:0}.eMUW5a_sidebar{border-right:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);flex-direction:column;display:flex}.eMUW5a_accountCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:10px;gap:3px;margin:0 14px 12px;padding:10px 12px;display:grid}.eMUW5a_accountCard small,.eMUW5a_accountCard span{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:16px;overflow:hidden}.eMUW5a_accountCard strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.eMUW5a_accountCard .eMUW5a_accountStatus{color:var(--dsw-alias-state-success-primary)}.eMUW5a_folderNav{gap:4px;padding:0 10px;display:grid}.eMUW5a_folderNav button{min-height:38px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;border-radius:9px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;padding:0 10px;display:grid}.eMUW5a_folderNav button:hover{background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_folderNav button[data-active]{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-primary)}.eMUW5a_folderNav small{min-width:20px;color:var(--dsw-alias-brand-primary);text-align:right}.eMUW5a_folderRow{color:var(--dsw-alias-label-secondary);border-radius:9px;grid-template-columns:minmax(0,1fr) 38px;display:grid}.eMUW5a_folderRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_folderRow[data-active]{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-primary)}.eMUW5a_folderRow>button{color:inherit;background:0 0;border-radius:0}.eMUW5a_folderRow>button:hover{background:0 0}.eMUW5a_folderRow>.eMUW5a_composeIconButton{border-radius:8px;grid-template-columns:1fr;place-items:center;gap:0;width:38px;padding:0}.eMUW5a_folderRow>.eMUW5a_composeIconButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_mailList{border-right:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);flex-direction:column;display:flex;position:relative}.eMUW5a_listHeader,.eMUW5a_detailHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:9px;min-height:56px;padding:0 12px;display:flex}.eMUW5a_listHeader>div,.eMUW5a_detailHeader>div{flex-direction:column;flex:1;min-width:0;display:flex}.eMUW5a_listHeader strong,.eMUW5a_detailHeader strong,.eMUW5a_listHeader small,.eMUW5a_detailHeader small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.eMUW5a_listHeader strong,.eMUW5a_detailHeader strong{font-size:13px;line-height:20px}.eMUW5a_listHeader small,.eMUW5a_detailHeader small{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.eMUW5a_listHeader>button,.eMUW5a_detailBack{width:30px;height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:8px;flex:none;place-items:center;padding:0;display:grid}.eMUW5a_listHeader>button:hover,.eMUW5a_detailBack:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.eMUW5a_listHeader>button:disabled{opacity:.5;cursor:default}.eMUW5a_detailBack{display:none}.eMUW5a_listHeader svg,.eMUW5a_loadingState svg{animation:none}.eMUW5a_listHeader button:disabled svg,.eMUW5a_loadingState svg{animation:1s linear infinite eMUW5a_mail-spin}@keyframes eMUW5a_mail-spin{to{transform:rotate(360deg)}}.eMUW5a_rows{flex:1;min-height:0;padding:6px;overflow:auto}.eMUW5a_mailRow{width:100%;min-height:82px;color:inherit;cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;border-radius:10px;grid-template-columns:7px minmax(0,1fr) auto;gap:7px;padding:10px 9px;display:grid;position:relative}.eMUW5a_mailRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_mailRow[data-active]{background:var(--dsw-alias-interactive-bg-active)}.eMUW5a_unreadDot{background:0 0;border-radius:50%;align-self:start;width:6px;height:6px;margin-top:7px}.eMUW5a_mailRow[data-unread] .eMUW5a_unreadDot{background:var(--dsw-alias-brand-primary)}.eMUW5a_rowContent{flex-direction:column;gap:2px;min-width:0;display:flex}.eMUW5a_rowTop{align-items:center;gap:8px;display:flex}.eMUW5a_rowTop strong{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;line-height:18px;overflow:hidden}.eMUW5a_mailRow[data-unread] .eMUW5a_rowTop strong,.eMUW5a_mailRow[data-unread] .eMUW5a_rowSubject{font-weight:600}.eMUW5a_rowTop time{color:var(--dsw-alias-label-tertiary);flex:none;font-size:10px;line-height:15px}.eMUW5a_rowSubject,.eMUW5a_rowPreview{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.eMUW5a_rowSubject{color:var(--dsw-alias-label-primary);font-size:12px;line-height:18px}.eMUW5a_rowPreview{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.eMUW5a_rowAttachment{color:var(--dsw-alias-label-tertiary);align-self:end;align-items:center;gap:2px;display:flex}.eMUW5a_rowAttachment small{font-size:10px}.eMUW5a_inlineError,.eMUW5a_detailError{background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary);justify-content:space-between;align-items:center;gap:8px;padding:8px 12px;font-size:11px;line-height:16px;display:flex}.eMUW5a_inlineError button{color:inherit;cursor:pointer;background:0 0;border:0;flex:none;text-decoration:underline}.eMUW5a_loadingState,.eMUW5a_emptyState,.eMUW5a_detailEmpty{color:var(--dsw-alias-label-tertiary);justify-content:center;align-items:center;gap:8px;font-size:12px;display:flex}.eMUW5a_loadingState{pointer-events:none;position:absolute;inset:56px 0 0}.eMUW5a_emptyState{flex-direction:column;min-height:180px}.eMUW5a_emptyState p,.eMUW5a_detailEmpty p{margin:0}.eMUW5a_loadMore{background:var(--dsw-alias-button-elevated-fill);min-height:34px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;border:0;border-radius:9px;margin:7px}.eMUW5a_loadMore:hover{background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_mailDetail{background:var(--dsw-alias-bg-layer-1);flex-direction:column;display:flex;position:relative}.eMUW5a_detailEmpty{flex-direction:column;flex:1}.eMUW5a_detailEmpty button{background:var(--dsw-alias-button-primary-fill);min-height:34px;color:var(--dsw-alias-label-primary-inverted);cursor:pointer;border:0;border-radius:9px;padding:0 14px}.eMUW5a_markReadButton{border:1px solid var(--dsw-alias-border-l2);min-height:30px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;background:0 0;border-radius:8px;flex:none;padding:0 9px;font-size:11px}.eMUW5a_markReadButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_markReadButton:disabled{opacity:.5;cursor:default}.eMUW5a_messageBody{flex:1;min-height:0;padding:22px 24px;overflow:auto}.eMUW5a_messageMeta{border-bottom:1px solid var(--dsw-alias-border-l1);padding-bottom:18px}.eMUW5a_messageMeta h3{overflow-wrap:anywhere;margin:0 0 5px;font-size:18px;line-height:27px}.eMUW5a_messageMeta>time{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.eMUW5a_messageMeta dl{gap:3px;margin:14px 0 0;display:grid}.eMUW5a_messageMeta dl>div{grid-template-columns:48px minmax(0,1fr);gap:8px;font-size:11px;line-height:17px;display:grid}.eMUW5a_messageMeta dt{color:var(--dsw-alias-label-tertiary)}.eMUW5a_messageMeta dd{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin:0}.eMUW5a_untrustedNotice{background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-tertiary);border-radius:8px;align-items:center;gap:7px;margin:16px 0;padding:8px 10px;font-size:11px;line-height:16px;display:flex}.eMUW5a_plainBody{min-height:120px;color:var(--dsw-alias-label-primary);white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:22px}.eMUW5a_truncatedNotice{color:var(--dsw-alias-state-warn-label);margin:14px 0 0;font-size:11px}.eMUW5a_attachments{border-top:1px solid var(--dsw-alias-border-l1);gap:8px;margin-top:22px;padding-top:16px;display:grid}.eMUW5a_attachments h4{margin:0;font-size:12px;line-height:18px}.eMUW5a_attachments>div{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:9px;align-items:center;gap:9px;padding:9px 10px;display:flex}.eMUW5a_attachments>div>span{flex-direction:column;min-width:0;display:flex}.eMUW5a_attachments strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:16px;overflow:hidden}.eMUW5a_attachments small{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:15px}.eMUW5a_notice{z-index:6;box-sizing:border-box;background:var(--dsw-alias-button-primary-fill);max-width:min(360px,100% - 32px);color:var(--dsw-alias-label-primary-inverted);box-shadow:var(--dsw-shadow-lv2);overflow-wrap:anywhere;pointer-events:none;text-align:center;border-radius:9px;padding:10px 14px;font-size:12px;line-height:18px;animation:2.4s both eMUW5a_mail-notice;position:absolute;top:16px;left:50%;transform:translate(-50%)}@keyframes eMUW5a_mail-notice{0%{opacity:0;transform:translate(-50%,-6px)}8%,88%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-4px)}}.eMUW5a_composer{flex-direction:column;flex:1;min-height:0;display:flex}.eMUW5a_composeFields{flex-direction:column;flex:1;gap:11px;min-height:0;padding:18px 20px;display:flex;overflow:auto}.eMUW5a_composeFields label{color:var(--dsw-alias-label-secondary);grid-template-rows:max-content max-content;gap:5px;font-size:11px;line-height:16px;display:grid}.eMUW5a_composeFields input,.eMUW5a_composeFields textarea{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);width:100%;color:var(--dsw-alias-label-primary);font:inherit;resize:vertical;border-radius:9px;padding:8px 10px}.eMUW5a_composeFields input{height:38px}.eMUW5a_composeFields .eMUW5a_bodyField{flex:1;grid-template-rows:max-content minmax(160px,1fr);min-height:160px}.eMUW5a_bodyField textarea{resize:none;min-height:160px}.eMUW5a_composeError{color:var(--dsw-alias-state-error-primary);margin:0;font-size:11px;line-height:16px}.eMUW5a_composeFooter{border-top:1px solid var(--dsw-alias-border-l1);flex:none;justify-content:flex-end;gap:8px;padding:10px 14px;display:flex}.eMUW5a_cancelButton,.eMUW5a_sendButton{cursor:pointer;min-height:34px;font:inherit;border-radius:9px;justify-content:center;align-items:center;gap:6px;padding:0 13px;display:flex}.eMUW5a_cancelButton{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);background:0 0}.eMUW5a_sendButton{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-inverted);border:0}.eMUW5a_cancelButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_sendButton:hover{background:var(--dsw-alias-button-primary-hover)}.eMUW5a_confirmSummary{color:var(--dsw-alias-label-secondary);gap:6px;display:grid}.eMUW5a_confirmSummary p,.eMUW5a_discardText{overflow-wrap:anywhere;margin:0}@media (width<=1119px){.eMUW5a_mail{grid-template-columns:220px minmax(0,1fr)}.eMUW5a_mailList,.eMUW5a_mailDetail{grid-area:1/2}.eMUW5a_mailDetail,.eMUW5a_mail[data-detail-active] .eMUW5a_mailList{display:none}.eMUW5a_mail[data-detail-active] .eMUW5a_mailDetail{display:flex}.eMUW5a_detailBack{display:grid}}@media (width<=719px){.eMUW5a_mail{grid-template-columns:1fr}.eMUW5a_sidebar,.eMUW5a_mailList,.eMUW5a_mailDetail{grid-area:1/1}.eMUW5a_mailList,.eMUW5a_mailDetail,.eMUW5a_mail[data-pane=list] .eMUW5a_sidebar,.eMUW5a_mail[data-pane=detail] .eMUW5a_sidebar{display:none}.eMUW5a_mail[data-pane=list] .eMUW5a_mailList,.eMUW5a_mail[data-pane=detail] .eMUW5a_mailDetail{display:flex}.eMUW5a_messageBody{padding:18px}}@media (prefers-reduced-motion:reduce){.eMUW5a_listHeader button:disabled svg,.eMUW5a_loadingState svg,.eMUW5a_notice{animation:none}}";
|
|
11333
|
-
const tagId$
|
|
11334
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
11127
|
+
const css$1 = ".eMUW5a_mail{background:var(--dsw-alias-bg-layer-1);flex:1;grid-template-columns:240px 320px minmax(420px,1fr);min-height:0;display:grid;position:relative}.eMUW5a_sidebar,.eMUW5a_mailList,.eMUW5a_mailDetail{min-width:0;min-height:0}.eMUW5a_sidebar{border-right:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);flex-direction:column;display:flex}.eMUW5a_accountCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:10px;gap:3px;margin:0 14px 12px;padding:10px 12px;display:grid}.eMUW5a_accountCard small,.eMUW5a_accountCard span{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:16px;overflow:hidden}.eMUW5a_accountCard strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.eMUW5a_accountCard .eMUW5a_accountStatus{color:var(--dsw-alias-state-success-primary)}.eMUW5a_folderNav{gap:4px;padding:0 10px;display:grid}.eMUW5a_folderNav button{min-height:38px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;border-radius:9px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;padding:0 10px;display:grid}.eMUW5a_folderNav button:hover{background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_folderNav button[data-active]{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-primary)}.eMUW5a_folderNav small{min-width:20px;color:var(--dsw-alias-brand-primary);text-align:right}.eMUW5a_folderRow{color:var(--dsw-alias-label-secondary);border-radius:9px;grid-template-columns:minmax(0,1fr) 38px;display:grid}.eMUW5a_folderRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_folderRow[data-active]{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-primary)}.eMUW5a_folderRow>button{color:inherit;background:0 0;border-radius:0}.eMUW5a_folderRow>button:hover{background:0 0}.eMUW5a_folderRow>.eMUW5a_composeIconButton{border-radius:8px;grid-template-columns:1fr;place-items:center;gap:0;width:38px;padding:0}.eMUW5a_folderRow>.eMUW5a_composeIconButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_mailList{border-right:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);flex-direction:column;display:flex;position:relative}.eMUW5a_listHeader,.eMUW5a_detailHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:9px;min-height:56px;padding:0 12px;display:flex}.eMUW5a_listHeader>div,.eMUW5a_detailHeader>div{flex-direction:column;flex:1;min-width:0;display:flex}.eMUW5a_listHeader strong,.eMUW5a_detailHeader strong,.eMUW5a_listHeader small,.eMUW5a_detailHeader small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.eMUW5a_listHeader strong,.eMUW5a_detailHeader strong{font-size:13px;line-height:20px}.eMUW5a_listHeader small,.eMUW5a_detailHeader small{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.eMUW5a_listHeader>button,.eMUW5a_detailBack{width:30px;height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:8px;flex:none;place-items:center;padding:0;display:grid}.eMUW5a_listHeader>button:hover,.eMUW5a_detailBack:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.eMUW5a_listHeader>button:disabled{opacity:.5;cursor:default}.eMUW5a_detailBack{display:none}.eMUW5a_listHeader svg,.eMUW5a_loadingState svg{animation:none}.eMUW5a_listHeader button:disabled svg,.eMUW5a_loadingState svg{animation:1s linear infinite eMUW5a_mail-spin}.eMUW5a_listHeader>.eMUW5a_listBack{display:none}@keyframes eMUW5a_mail-spin{to{transform:rotate(360deg)}}.eMUW5a_rows{flex:1;min-height:0;padding:6px;overflow:auto}.eMUW5a_mailRow{width:100%;min-height:82px;color:inherit;cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;border-radius:10px;grid-template-columns:7px minmax(0,1fr) auto;gap:7px;padding:10px 9px;display:grid;position:relative}.eMUW5a_mailRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_mailRow[data-active]{background:var(--dsw-alias-interactive-bg-active)}.eMUW5a_unreadDot{background:0 0;border-radius:50%;align-self:start;width:6px;height:6px;margin-top:7px}.eMUW5a_mailRow[data-unread] .eMUW5a_unreadDot{background:var(--dsw-alias-brand-primary)}.eMUW5a_rowContent{flex-direction:column;gap:2px;min-width:0;display:flex}.eMUW5a_rowTop{align-items:center;gap:8px;display:flex}.eMUW5a_rowTop strong{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;line-height:18px;overflow:hidden}.eMUW5a_mailRow[data-unread] .eMUW5a_rowTop strong,.eMUW5a_mailRow[data-unread] .eMUW5a_rowSubject{font-weight:600}.eMUW5a_rowTop time{color:var(--dsw-alias-label-tertiary);flex:none;font-size:10px;line-height:15px}.eMUW5a_rowSubject,.eMUW5a_rowPreview{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.eMUW5a_rowSubject{color:var(--dsw-alias-label-primary);font-size:12px;line-height:18px}.eMUW5a_rowPreview{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.eMUW5a_rowAttachment{color:var(--dsw-alias-label-tertiary);align-self:end;align-items:center;gap:2px;display:flex}.eMUW5a_rowAttachment small{font-size:10px}.eMUW5a_inlineError,.eMUW5a_detailError{background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary);justify-content:space-between;align-items:center;gap:8px;padding:8px 12px;font-size:11px;line-height:16px;display:flex}.eMUW5a_inlineError button{color:inherit;cursor:pointer;background:0 0;border:0;flex:none;text-decoration:underline}.eMUW5a_loadingState,.eMUW5a_emptyState,.eMUW5a_detailEmpty{color:var(--dsw-alias-label-tertiary);justify-content:center;align-items:center;gap:8px;font-size:12px;display:flex}.eMUW5a_loadingState{pointer-events:none;position:absolute;inset:56px 0 0}.eMUW5a_emptyState{flex-direction:column;min-height:180px}.eMUW5a_emptyState p,.eMUW5a_detailEmpty p{margin:0}.eMUW5a_loadMore{background:var(--dsw-alias-button-elevated-fill);min-height:34px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;border:0;border-radius:9px;margin:7px}.eMUW5a_loadMore:hover{background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_mailDetail{background:var(--dsw-alias-bg-layer-1);flex-direction:column;display:flex;position:relative}.eMUW5a_detailEmpty{flex-direction:column;flex:1}.eMUW5a_detailEmpty button{background:var(--dsw-alias-button-primary-fill);min-height:34px;color:var(--dsw-alias-label-primary-inverted);cursor:pointer;border:0;border-radius:9px;padding:0 14px}.eMUW5a_markReadButton{border:1px solid var(--dsw-alias-border-l2);min-height:30px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;background:0 0;border-radius:8px;flex:none;padding:0 9px;font-size:11px}.eMUW5a_markReadButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_markReadButton:disabled{opacity:.5;cursor:default}.eMUW5a_messageBody{flex:1;min-height:0;padding:22px 24px;overflow:auto}.eMUW5a_messageMeta{border-bottom:1px solid var(--dsw-alias-border-l1);padding-bottom:18px}.eMUW5a_messageMeta h3{overflow-wrap:anywhere;margin:0 0 5px;font-size:18px;line-height:27px}.eMUW5a_messageMeta>time{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.eMUW5a_messageMeta dl{gap:3px;margin:14px 0 0;display:grid}.eMUW5a_messageMeta dl>div{grid-template-columns:48px minmax(0,1fr);gap:8px;font-size:11px;line-height:17px;display:grid}.eMUW5a_messageMeta dt{color:var(--dsw-alias-label-tertiary)}.eMUW5a_messageMeta dd{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin:0}.eMUW5a_untrustedNotice{background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-tertiary);border-radius:8px;align-items:center;gap:7px;margin:16px 0;padding:8px 10px;font-size:11px;line-height:16px;display:flex}.eMUW5a_plainBody{min-height:120px;color:var(--dsw-alias-label-primary);white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:22px}.eMUW5a_truncatedNotice{color:var(--dsw-alias-state-warn-label);margin:14px 0 0;font-size:11px}.eMUW5a_attachments{border-top:1px solid var(--dsw-alias-border-l1);gap:8px;min-width:0;margin-top:22px;padding-top:16px;display:grid}.eMUW5a_attachments h4{margin:0;font-size:12px;line-height:18px}.eMUW5a_attachments>div{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:9px;align-items:center;gap:9px;min-width:0;max-width:100%;padding:9px 10px;display:flex}.eMUW5a_attachments>div>span{flex-direction:column;flex:1;min-width:0;display:flex}.eMUW5a_attachments strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:16px;overflow:hidden}.eMUW5a_attachments small{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:15px}.eMUW5a_attachments button,.eMUW5a_selectedAttachments button{border:1px solid var(--dsw-alias-border-l2);min-height:30px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;background:0 0;border-radius:8px;flex:none;padding:0 10px;font-size:11px}.eMUW5a_attachments button:hover,.eMUW5a_selectedAttachments button:hover{background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_attachments button:disabled,.eMUW5a_selectedAttachments button:disabled{opacity:.5;cursor:default}.eMUW5a_attachments .eMUW5a_attachmentDownloadError{color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere}.eMUW5a_notice{z-index:6;box-sizing:border-box;background:var(--dsw-alias-button-primary-fill);max-width:min(360px,100% - 32px);color:var(--dsw-alias-label-primary-inverted);box-shadow:var(--dsw-shadow-lv2);overflow-wrap:anywhere;pointer-events:none;text-align:center;border-radius:9px;padding:10px 14px;font-size:12px;line-height:18px;animation:2.4s both eMUW5a_mail-notice;position:absolute;top:16px;left:50%;transform:translate(-50%)}@keyframes eMUW5a_mail-notice{0%{opacity:0;transform:translate(-50%,-6px)}8%,88%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-4px)}}.eMUW5a_composer{flex-direction:column;flex:1;min-height:0;display:flex}.eMUW5a_composeFields{flex-direction:column;flex:1;gap:11px;min-height:0;padding:18px 20px;display:flex;overflow:auto}.eMUW5a_composeFields label{color:var(--dsw-alias-label-secondary);grid-template-rows:max-content max-content;gap:5px;font-size:11px;line-height:16px;display:grid}.eMUW5a_composeFields input,.eMUW5a_composeFields textarea{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);width:100%;color:var(--dsw-alias-label-primary);font:inherit;resize:vertical;border-radius:9px;padding:8px 10px}.eMUW5a_composeFields input{height:38px}.eMUW5a_composeFields .eMUW5a_bodyField{flex:1;grid-template-rows:max-content minmax(160px,1fr);min-height:160px}.eMUW5a_bodyField textarea{resize:none;min-height:160px}.eMUW5a_composeAttachments{gap:9px;display:grid}.eMUW5a_attachmentPickerRow{align-items:center;gap:10px;display:flex}.eMUW5a_attachmentPickerRow>small{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:15px}.eMUW5a_attachmentPicker{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);appearance:none;background:var(--dsw-alias-bg-layer-1);height:30px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;white-space:nowrap;border-radius:7px;flex:none;justify-content:center;align-items:center;gap:5px;padding:0 10px;font-size:11px;font-weight:500;line-height:16px;display:inline-flex}.eMUW5a_attachmentPicker:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_attachmentPicker:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.eMUW5a_attachmentPicker:disabled{opacity:.5;cursor:default}.eMUW5a_attachmentInput{display:none}.eMUW5a_selectedAttachments{gap:7px;display:grid}.eMUW5a_selectedAttachments>div{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:9px;align-items:center;gap:9px;padding:8px 9px;display:flex}.eMUW5a_selectedAttachments>div>span{flex-direction:column;flex:1;min-width:0;display:flex}.eMUW5a_selectedAttachments strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:16px;overflow:hidden}.eMUW5a_selectedAttachments small{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:15px}.eMUW5a_selectedAttachments>p{color:var(--dsw-alias-label-tertiary);margin:0;font-size:10px;line-height:15px}.eMUW5a_composeError{color:var(--dsw-alias-state-error-primary);margin:0;font-size:11px;line-height:16px}.eMUW5a_composeFooter{border-top:1px solid var(--dsw-alias-border-l1);flex:none;justify-content:flex-end;gap:8px;padding:10px 14px;display:flex}.eMUW5a_cancelButton,.eMUW5a_sendButton{cursor:pointer;min-height:34px;font:inherit;border-radius:9px;justify-content:center;align-items:center;gap:6px;padding:0 13px;display:flex}.eMUW5a_cancelButton{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);background:0 0}.eMUW5a_sendButton{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-inverted);border:0}.eMUW5a_cancelButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.eMUW5a_sendButton:hover{background:var(--dsw-alias-button-primary-hover)}.eMUW5a_confirmSummary{color:var(--dsw-alias-label-secondary);gap:6px;display:grid}.eMUW5a_confirmSummary p,.eMUW5a_discardText{overflow-wrap:anywhere;margin:0}@media (width<=1119px){.eMUW5a_mail{grid-template-columns:220px minmax(0,1fr)}.eMUW5a_mailList,.eMUW5a_mailDetail{grid-area:1/2}.eMUW5a_mailDetail,.eMUW5a_mail[data-detail-active] .eMUW5a_mailList{display:none}.eMUW5a_mail[data-detail-active] .eMUW5a_mailDetail{display:flex}.eMUW5a_detailBack{display:grid}}@media (width<=719px){.eMUW5a_mail{grid-template-columns:1fr}.eMUW5a_sidebar,.eMUW5a_mailList,.eMUW5a_mailDetail{grid-area:1/1}.eMUW5a_mailList,.eMUW5a_mailDetail,.eMUW5a_mail[data-pane=list] .eMUW5a_sidebar,.eMUW5a_mail[data-pane=detail] .eMUW5a_sidebar{display:none}.eMUW5a_mail[data-pane=list] .eMUW5a_mailList,.eMUW5a_mail[data-pane=detail] .eMUW5a_mailDetail{display:flex}.eMUW5a_listHeader>.eMUW5a_listBack{display:grid}.eMUW5a_messageBody{padding:18px}}@media (prefers-reduced-motion:reduce){.eMUW5a_listHeader button:disabled svg,.eMUW5a_loadingState svg,.eMUW5a_notice{animation:none}}";
|
|
11128
|
+
const tagId$1 = "@awiki/dsh-plugin/AwikiMail.module.css";
|
|
11129
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
11335
11130
|
const tag = document.createElement("style");
|
|
11336
11131
|
tag.dataset.plugin = "@awiki/dsh-plugin";
|
|
11337
|
-
tag.dataset.pluginCss = tagId$
|
|
11338
|
-
tag.textContent = css$
|
|
11132
|
+
tag.dataset.pluginCss = tagId$1;
|
|
11133
|
+
tag.textContent = css$1;
|
|
11339
11134
|
document.head.appendChild(tag);
|
|
11340
11135
|
}
|
|
11341
11136
|
var _dsh_awiki_css_AwikiMail_module_css_default = {
|
|
11342
11137
|
"accountCard": "eMUW5a_accountCard",
|
|
11343
11138
|
"accountStatus": "eMUW5a_accountStatus",
|
|
11139
|
+
"attachmentDownloadError": "eMUW5a_attachmentDownloadError",
|
|
11140
|
+
"attachmentInput": "eMUW5a_attachmentInput",
|
|
11141
|
+
"attachmentPicker": "eMUW5a_attachmentPicker",
|
|
11142
|
+
"attachmentPickerRow": "eMUW5a_attachmentPickerRow",
|
|
11344
11143
|
"attachments": "eMUW5a_attachments",
|
|
11345
11144
|
"bodyField": "eMUW5a_bodyField",
|
|
11346
11145
|
"cancelButton": "eMUW5a_cancelButton",
|
|
11146
|
+
"composeAttachments": "eMUW5a_composeAttachments",
|
|
11347
11147
|
"composeError": "eMUW5a_composeError",
|
|
11348
11148
|
"composeFields": "eMUW5a_composeFields",
|
|
11349
11149
|
"composeFooter": "eMUW5a_composeFooter",
|
|
@@ -11359,6 +11159,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11359
11159
|
"folderNav": "eMUW5a_folderNav",
|
|
11360
11160
|
"folderRow": "eMUW5a_folderRow",
|
|
11361
11161
|
"inlineError": "eMUW5a_inlineError",
|
|
11162
|
+
"listBack": "eMUW5a_listBack",
|
|
11362
11163
|
"listHeader": "eMUW5a_listHeader",
|
|
11363
11164
|
"loadingState": "eMUW5a_loadingState",
|
|
11364
11165
|
"loadMore": "eMUW5a_loadMore",
|
|
@@ -11379,6 +11180,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11379
11180
|
"rows": "eMUW5a_rows",
|
|
11380
11181
|
"rowSubject": "eMUW5a_rowSubject",
|
|
11381
11182
|
"rowTop": "eMUW5a_rowTop",
|
|
11183
|
+
"selectedAttachments": "eMUW5a_selectedAttachments",
|
|
11382
11184
|
"sendButton": "eMUW5a_sendButton",
|
|
11383
11185
|
"sidebar": "eMUW5a_sidebar",
|
|
11384
11186
|
"truncatedNotice": "eMUW5a_truncatedNotice",
|
|
@@ -11424,6 +11226,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11424
11226
|
function utf8Bytes(value) {
|
|
11425
11227
|
return new TextEncoder().encode(value).byteLength;
|
|
11426
11228
|
}
|
|
11229
|
+
function displayBytes(value) {
|
|
11230
|
+
if (value < 1024) return `${value} bytes`;
|
|
11231
|
+
if (value < 1048576) return `${(value / 1024).toFixed(value < 10240 ? 1 : 0)} KiB`;
|
|
11232
|
+
return `${(value / 1048576).toFixed(value < 10485760 ? 1 : 0)} MiB`;
|
|
11233
|
+
}
|
|
11427
11234
|
function browserLocalStorage() {
|
|
11428
11235
|
try {
|
|
11429
11236
|
return window.localStorage;
|
|
@@ -11560,6 +11367,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11560
11367
|
const [cc, setCc] = (0, react.useState)("");
|
|
11561
11368
|
const [subject, setSubject] = (0, react.useState)("");
|
|
11562
11369
|
const [bodyText, setBodyText] = (0, react.useState)("");
|
|
11370
|
+
const [attachmentLimits, setAttachmentLimits] = (0, react.useState)(null);
|
|
11371
|
+
const [attachments, setAttachments] = (0, react.useState)([]);
|
|
11372
|
+
const [attachmentError, setAttachmentError] = (0, react.useState)(null);
|
|
11373
|
+
const [downloadStates, setDownloadStates] = (0, react.useState)({});
|
|
11563
11374
|
const [composeError, setComposeError] = (0, react.useState)(null);
|
|
11564
11375
|
const [confirmOpen, setConfirmOpen] = (0, react.useState)(false);
|
|
11565
11376
|
const [discardOpen, setDiscardOpen] = (0, react.useState)(false);
|
|
@@ -11570,6 +11381,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11570
11381
|
const loadGeneration = (0, react.useRef)(0);
|
|
11571
11382
|
const detailGeneration = (0, react.useRef)(0);
|
|
11572
11383
|
const noticeRevision = (0, react.useRef)(0);
|
|
11384
|
+
const attachmentRevision = (0, react.useRef)(0);
|
|
11385
|
+
const fileInput = (0, react.useRef)(null);
|
|
11573
11386
|
const visibleUnreadCount = (0, react.useMemo)(() => items.reduce((total, item) => total + (item.unread ? 1 : 0), 0), [items]);
|
|
11574
11387
|
(0, react.useEffect)(() => {
|
|
11575
11388
|
props.onUnreadCountChange(inboxUnreadCount);
|
|
@@ -11618,6 +11431,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11618
11431
|
setListError(null);
|
|
11619
11432
|
setNotice(null);
|
|
11620
11433
|
const cacheVisible = hydrateListCache(requestedFolder);
|
|
11434
|
+
const configRequest = props.getConfig();
|
|
11621
11435
|
const accountRequest = props.getMailAccount();
|
|
11622
11436
|
const inboxRequest = props.listMailInbox({
|
|
11623
11437
|
folder: requestedFolder,
|
|
@@ -11625,6 +11439,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11625
11439
|
limit: 20,
|
|
11626
11440
|
offset: 0
|
|
11627
11441
|
});
|
|
11442
|
+
const configResult = await configRequest;
|
|
11443
|
+
if (generation !== loadGeneration.current) return;
|
|
11444
|
+
setAttachmentLimits(configResult.ok ? {
|
|
11445
|
+
maxCount: configResult.value.mailAttachmentMaxCount,
|
|
11446
|
+
maxBytes: configResult.value.mailAttachmentMaxBytes,
|
|
11447
|
+
totalMaxBytes: configResult.value.mailAttachmentTotalMaxBytes
|
|
11448
|
+
} : null);
|
|
11628
11449
|
const accountResult = await accountRequest;
|
|
11629
11450
|
if (generation !== loadGeneration.current) return;
|
|
11630
11451
|
if (accountResult.ok) setAccount(accountResult.value);
|
|
@@ -11670,6 +11491,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11670
11491
|
setSelectedId(null);
|
|
11671
11492
|
setMessage(null);
|
|
11672
11493
|
setDetailError(null);
|
|
11494
|
+
setDownloadStates({});
|
|
11673
11495
|
if (!hydrateListCache(nextFolder)) applyListPage(nextFolder, {
|
|
11674
11496
|
items: [],
|
|
11675
11497
|
hasMore: false
|
|
@@ -11682,6 +11504,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11682
11504
|
setCompose(false);
|
|
11683
11505
|
setSelectedId(summary.id);
|
|
11684
11506
|
setMessage(null);
|
|
11507
|
+
setDownloadStates({});
|
|
11685
11508
|
setDetailLoading(true);
|
|
11686
11509
|
setDetailError(null);
|
|
11687
11510
|
setNotice(null);
|
|
@@ -11761,6 +11584,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11761
11584
|
showNotice(result.value.updated > 0 ? "已标为已读。" : "该邮件已经是已读状态。");
|
|
11762
11585
|
};
|
|
11763
11586
|
const requestSend = () => {
|
|
11587
|
+
if (attachmentError !== null) {
|
|
11588
|
+
setComposeError(attachmentError);
|
|
11589
|
+
return;
|
|
11590
|
+
}
|
|
11591
|
+
if (attachments.length > 0 && attachmentLimits === null) {
|
|
11592
|
+
setComposeError("邮件附件限制暂不可用,请稍后刷新邮箱再试。");
|
|
11593
|
+
return;
|
|
11594
|
+
}
|
|
11764
11595
|
const validated = validateDraft$1(to, cc, subject, bodyText);
|
|
11765
11596
|
if (!validated.ok) {
|
|
11766
11597
|
setComposeError(validated.error);
|
|
@@ -11774,6 +11605,32 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11774
11605
|
setCc("");
|
|
11775
11606
|
setSubject("");
|
|
11776
11607
|
setBodyText("");
|
|
11608
|
+
setAttachments([]);
|
|
11609
|
+
setAttachmentError(null);
|
|
11610
|
+
if (fileInput.current !== null) fileInput.current.value = "";
|
|
11611
|
+
setComposeError(null);
|
|
11612
|
+
};
|
|
11613
|
+
const chooseAttachments = (files) => {
|
|
11614
|
+
if (files === null || files.length === 0) return;
|
|
11615
|
+
if (attachmentLimits === null) {
|
|
11616
|
+
setAttachmentError("邮件附件限制暂不可用,请稍后刷新邮箱再试。");
|
|
11617
|
+
return;
|
|
11618
|
+
}
|
|
11619
|
+
try {
|
|
11620
|
+
const next = selectMailAttachments(attachments, files, attachmentLimits, () => {
|
|
11621
|
+
attachmentRevision.current += 1;
|
|
11622
|
+
return `mail-attachment-${attachmentRevision.current}`;
|
|
11623
|
+
});
|
|
11624
|
+
setAttachments(next);
|
|
11625
|
+
setAttachmentError(null);
|
|
11626
|
+
setComposeError(null);
|
|
11627
|
+
} catch (error) {
|
|
11628
|
+
setAttachmentError(error instanceof TypeError ? error.message : "无法选择这些附件。");
|
|
11629
|
+
}
|
|
11630
|
+
};
|
|
11631
|
+
const removeAttachment = (id) => {
|
|
11632
|
+
setAttachments((current) => current.filter((attachment) => attachment.id !== id));
|
|
11633
|
+
setAttachmentError(null);
|
|
11777
11634
|
setComposeError(null);
|
|
11778
11635
|
};
|
|
11779
11636
|
const confirmSend = async () => {
|
|
@@ -11783,12 +11640,27 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11783
11640
|
setComposeError(validated.error);
|
|
11784
11641
|
return;
|
|
11785
11642
|
}
|
|
11643
|
+
if (attachmentError !== null || attachments.length > 0 && attachmentLimits === null) {
|
|
11644
|
+
setConfirmOpen(false);
|
|
11645
|
+
setComposeError(attachmentError ?? "邮件附件限制暂不可用,请稍后刷新邮箱再试。");
|
|
11646
|
+
return;
|
|
11647
|
+
}
|
|
11786
11648
|
setSending(true);
|
|
11649
|
+
let encodedAttachments = [];
|
|
11650
|
+
try {
|
|
11651
|
+
if (attachments.length > 0) encodedAttachments = await encodeMailAttachments(attachments, attachmentLimits);
|
|
11652
|
+
} catch (error) {
|
|
11653
|
+
setSending(false);
|
|
11654
|
+
setConfirmOpen(false);
|
|
11655
|
+
setComposeError(error instanceof TypeError ? error.message : "无法读取附件,请重新选择后再试。");
|
|
11656
|
+
return;
|
|
11657
|
+
}
|
|
11787
11658
|
const request = {
|
|
11788
11659
|
to: validated.value.to,
|
|
11789
11660
|
cc: validated.value.cc,
|
|
11790
11661
|
subject: validated.value.subject,
|
|
11791
|
-
bodyText: validated.value.bodyText
|
|
11662
|
+
bodyText: validated.value.bodyText,
|
|
11663
|
+
...encodedAttachments.length === 0 ? {} : { attachments: encodedAttachments }
|
|
11792
11664
|
};
|
|
11793
11665
|
const result = await props.sendMail(request);
|
|
11794
11666
|
setSending(false);
|
|
@@ -11801,7 +11673,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11801
11673
|
setComposeError("邮件服务没有接受本次发送,请检查内容后重试。");
|
|
11802
11674
|
return;
|
|
11803
11675
|
}
|
|
11804
|
-
const
|
|
11676
|
+
const acceptedWithWarning = result.value.warnings.length > 0;
|
|
11805
11677
|
clearDraft();
|
|
11806
11678
|
setFolder("sent");
|
|
11807
11679
|
const storage = browserLocalStorage();
|
|
@@ -11814,9 +11686,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11814
11686
|
setCompose(false);
|
|
11815
11687
|
setPane("list");
|
|
11816
11688
|
refresh("sent");
|
|
11817
|
-
showNotice(
|
|
11689
|
+
showNotice(acceptedWithWarning ? `邮件已被服务接受,但返回 ${result.value.warnings.length} 条本地记录提示,请勿立即重复发送。` : "邮件已发送。");
|
|
11818
11690
|
};
|
|
11819
|
-
const dirty = to.trim() !== "" || cc.trim() !== "" || subject.trim() !== "" || bodyText.trim() !== "";
|
|
11691
|
+
const dirty = to.trim() !== "" || cc.trim() !== "" || subject.trim() !== "" || bodyText.trim() !== "" || attachments.length > 0;
|
|
11820
11692
|
const cancelCompose = () => {
|
|
11821
11693
|
if (dirty) {
|
|
11822
11694
|
setDiscardOpen(true);
|
|
@@ -11826,6 +11698,39 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11826
11698
|
setPane("list");
|
|
11827
11699
|
};
|
|
11828
11700
|
const selectedSummary = items.find((item) => item.id === selectedId);
|
|
11701
|
+
const attachmentTotalBytes = attachments.reduce((sum, attachment) => sum + attachment.sizeBytes, 0);
|
|
11702
|
+
const downloadAttachment = async (attachment) => {
|
|
11703
|
+
if (message === null || attachmentLimits === null) return;
|
|
11704
|
+
const expected = downloadableMailAttachment(attachment, attachmentLimits.maxBytes);
|
|
11705
|
+
if (expected === void 0 || downloadStates[attachment.index]?.status === "loading") return;
|
|
11706
|
+
const generation = detailGeneration.current;
|
|
11707
|
+
const localMessageId = message.summary.id;
|
|
11708
|
+
setDownloadStates((current) => ({
|
|
11709
|
+
...current,
|
|
11710
|
+
[attachment.index]: { status: "loading" }
|
|
11711
|
+
}));
|
|
11712
|
+
try {
|
|
11713
|
+
if (!await downloadAndSaveMailAttachment(props.downloadMailAttachment, {
|
|
11714
|
+
localMessageId,
|
|
11715
|
+
attachmentIndex: attachment.index
|
|
11716
|
+
}, expected, attachmentLimits.maxBytes, () => generation === detailGeneration.current && message.summary.id === localMessageId)) return;
|
|
11717
|
+
setDownloadStates((current) => {
|
|
11718
|
+
const next = { ...current };
|
|
11719
|
+
delete next[attachment.index];
|
|
11720
|
+
return next;
|
|
11721
|
+
});
|
|
11722
|
+
showNotice(`已开始下载 ${expected.fileName}。`);
|
|
11723
|
+
} catch (error) {
|
|
11724
|
+
if (generation !== detailGeneration.current || message.summary.id !== localMessageId) return;
|
|
11725
|
+
setDownloadStates((current) => ({
|
|
11726
|
+
...current,
|
|
11727
|
+
[attachment.index]: {
|
|
11728
|
+
status: "error",
|
|
11729
|
+
error: error instanceof TypeError ? error.message : "无法保存附件,请重试。"
|
|
11730
|
+
}
|
|
11731
|
+
}));
|
|
11732
|
+
}
|
|
11733
|
+
};
|
|
11829
11734
|
return (0, react_jsx_runtime.jsxs)("div", {
|
|
11830
11735
|
className: _dsh_awiki_css_AwikiMail_module_css_default.mail,
|
|
11831
11736
|
"data-pane": pane,
|
|
@@ -11891,19 +11796,31 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11891
11796
|
children: [
|
|
11892
11797
|
(0, react_jsx_runtime.jsxs)("header", {
|
|
11893
11798
|
className: _dsh_awiki_css_AwikiMail_module_css_default.listHeader,
|
|
11894
|
-
children: [
|
|
11895
|
-
|
|
11896
|
-
|
|
11897
|
-
|
|
11898
|
-
|
|
11899
|
-
|
|
11900
|
-
|
|
11901
|
-
|
|
11902
|
-
|
|
11903
|
-
|
|
11904
|
-
},
|
|
11905
|
-
|
|
11906
|
-
|
|
11799
|
+
children: [
|
|
11800
|
+
(0, react_jsx_runtime.jsx)("button", {
|
|
11801
|
+
type: "button",
|
|
11802
|
+
className: _dsh_awiki_css_AwikiMail_module_css_default.listBack,
|
|
11803
|
+
"aria-label": "返回邮箱导航",
|
|
11804
|
+
onClick: () => {
|
|
11805
|
+
setPane("folders");
|
|
11806
|
+
},
|
|
11807
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronLeftOutline14, { size: 14 })
|
|
11808
|
+
}),
|
|
11809
|
+
(0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("strong", { children: MAIL_FOLDER_COPY[folder].title }), (0, react_jsx_runtime.jsxs)("small", { children: [
|
|
11810
|
+
items.length,
|
|
11811
|
+
" 封邮件",
|
|
11812
|
+
folder === "inbox" && visibleUnreadCount > 0 ? ` · ${visibleUnreadCount} 封未读` : ""
|
|
11813
|
+
] })] }),
|
|
11814
|
+
(0, react_jsx_runtime.jsx)("button", {
|
|
11815
|
+
type: "button",
|
|
11816
|
+
"aria-label": `刷新${MAIL_FOLDER_COPY[folder].title}`,
|
|
11817
|
+
disabled: listLoading,
|
|
11818
|
+
onClick: () => {
|
|
11819
|
+
refresh();
|
|
11820
|
+
},
|
|
11821
|
+
children: listLoading ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconLoadingOutline16, { size: 15 }) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutline14, { size: 15 })
|
|
11822
|
+
})
|
|
11823
|
+
]
|
|
11907
11824
|
}),
|
|
11908
11825
|
listError !== null && (0, react_jsx_runtime.jsxs)("div", {
|
|
11909
11826
|
className: _dsh_awiki_css_AwikiMail_module_css_default.inlineError,
|
|
@@ -11964,7 +11881,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11964
11881
|
"aria-label": `返回${MAIL_FOLDER_COPY[folder].title}`,
|
|
11965
11882
|
onClick: cancelCompose,
|
|
11966
11883
|
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronLeftOutline14, { size: 14 })
|
|
11967
|
-
}), (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("strong", { children: "写邮件" }), (0, react_jsx_runtime.jsx)("small", { children: "
|
|
11884
|
+
}), (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("strong", { children: "写邮件" }), (0, react_jsx_runtime.jsx)("small", { children: "发送纯文本邮件,可添加附件" })] })]
|
|
11968
11885
|
}),
|
|
11969
11886
|
(0, react_jsx_runtime.jsxs)("div", {
|
|
11970
11887
|
className: _dsh_awiki_css_AwikiMail_module_css_default.composeFields,
|
|
@@ -11972,6 +11889,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11972
11889
|
(0, react_jsx_runtime.jsxs)("label", { children: ["收件人", (0, react_jsx_runtime.jsx)("textarea", {
|
|
11973
11890
|
value: to,
|
|
11974
11891
|
rows: 1,
|
|
11892
|
+
disabled: sending,
|
|
11975
11893
|
autoFocus: true,
|
|
11976
11894
|
placeholder: "alice@example.com,可用逗号或换行分隔",
|
|
11977
11895
|
onChange: (event) => {
|
|
@@ -11982,6 +11900,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11982
11900
|
(0, react_jsx_runtime.jsxs)("label", { children: ["抄送", (0, react_jsx_runtime.jsx)("textarea", {
|
|
11983
11901
|
value: cc,
|
|
11984
11902
|
rows: 1,
|
|
11903
|
+
disabled: sending,
|
|
11985
11904
|
placeholder: "选填",
|
|
11986
11905
|
onChange: (event) => {
|
|
11987
11906
|
setCc(event.target.value);
|
|
@@ -11990,6 +11909,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11990
11909
|
})] }),
|
|
11991
11910
|
(0, react_jsx_runtime.jsxs)("label", { children: ["主题", (0, react_jsx_runtime.jsx)("input", {
|
|
11992
11911
|
value: subject,
|
|
11912
|
+
disabled: sending,
|
|
11993
11913
|
placeholder: "邮件主题",
|
|
11994
11914
|
onChange: (event) => {
|
|
11995
11915
|
setSubject(event.target.value);
|
|
@@ -12000,6 +11920,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12000
11920
|
className: _dsh_awiki_css_AwikiMail_module_css_default.bodyField,
|
|
12001
11921
|
children: ["正文", (0, react_jsx_runtime.jsx)("textarea", {
|
|
12002
11922
|
value: bodyText,
|
|
11923
|
+
disabled: sending,
|
|
12003
11924
|
placeholder: "输入纯文本邮件正文",
|
|
12004
11925
|
onChange: (event) => {
|
|
12005
11926
|
setBodyText(event.target.value);
|
|
@@ -12007,6 +11928,65 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12007
11928
|
}
|
|
12008
11929
|
})]
|
|
12009
11930
|
}),
|
|
11931
|
+
(0, react_jsx_runtime.jsxs)("section", {
|
|
11932
|
+
className: _dsh_awiki_css_AwikiMail_module_css_default.composeAttachments,
|
|
11933
|
+
"aria-label": "邮件附件",
|
|
11934
|
+
children: [(0, react_jsx_runtime.jsxs)("div", {
|
|
11935
|
+
className: _dsh_awiki_css_AwikiMail_module_css_default.attachmentPickerRow,
|
|
11936
|
+
children: [
|
|
11937
|
+
(0, react_jsx_runtime.jsxs)("button", {
|
|
11938
|
+
type: "button",
|
|
11939
|
+
className: _dsh_awiki_css_AwikiMail_module_css_default.attachmentPicker,
|
|
11940
|
+
disabled: sending || attachmentLimits === null || attachmentLimits.maxCount === 0,
|
|
11941
|
+
onClick: () => {
|
|
11942
|
+
fileInput.current?.click();
|
|
11943
|
+
},
|
|
11944
|
+
children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPaperclipOutline16, { size: 14 }), "添加附件"]
|
|
11945
|
+
}),
|
|
11946
|
+
(0, react_jsx_runtime.jsx)("input", {
|
|
11947
|
+
ref: fileInput,
|
|
11948
|
+
className: _dsh_awiki_css_AwikiMail_module_css_default.attachmentInput,
|
|
11949
|
+
type: "file",
|
|
11950
|
+
multiple: true,
|
|
11951
|
+
"aria-label": "选择邮件附件",
|
|
11952
|
+
disabled: sending || attachmentLimits === null || attachmentLimits.maxCount === 0,
|
|
11953
|
+
onChange: (event) => {
|
|
11954
|
+
chooseAttachments(event.currentTarget.files);
|
|
11955
|
+
event.currentTarget.value = "";
|
|
11956
|
+
}
|
|
11957
|
+
}),
|
|
11958
|
+
(0, react_jsx_runtime.jsx)("small", { children: attachmentLimits === null ? "附件限制暂不可用" : `最多 ${attachmentLimits.maxCount} 个 · 单个 ${displayBytes(attachmentLimits.maxBytes)} · 总计 ${displayBytes(attachmentLimits.totalMaxBytes)}` })
|
|
11959
|
+
]
|
|
11960
|
+
}), attachments.length > 0 && (0, react_jsx_runtime.jsxs)("div", {
|
|
11961
|
+
className: _dsh_awiki_css_AwikiMail_module_css_default.selectedAttachments,
|
|
11962
|
+
children: [attachments.map((attachment) => (0, react_jsx_runtime.jsxs)("div", { children: [
|
|
11963
|
+
(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPaperclipOutline16, { size: 15 }),
|
|
11964
|
+
(0, react_jsx_runtime.jsxs)("span", { children: [(0, react_jsx_runtime.jsx)("strong", { children: attachment.fileName }), (0, react_jsx_runtime.jsxs)("small", { children: [
|
|
11965
|
+
attachment.contentType,
|
|
11966
|
+
" · ",
|
|
11967
|
+
displayBytes(attachment.sizeBytes)
|
|
11968
|
+
] })] }),
|
|
11969
|
+
(0, react_jsx_runtime.jsx)("button", {
|
|
11970
|
+
type: "button",
|
|
11971
|
+
disabled: sending,
|
|
11972
|
+
"aria-label": `移除附件 ${attachment.fileName}`,
|
|
11973
|
+
onClick: () => {
|
|
11974
|
+
removeAttachment(attachment.id);
|
|
11975
|
+
},
|
|
11976
|
+
children: "移除"
|
|
11977
|
+
})
|
|
11978
|
+
] }, attachment.id)), (0, react_jsx_runtime.jsxs)("p", { children: [
|
|
11979
|
+
attachments.length,
|
|
11980
|
+
" 个附件 · 共 ",
|
|
11981
|
+
displayBytes(attachmentTotalBytes)
|
|
11982
|
+
] })]
|
|
11983
|
+
})]
|
|
11984
|
+
}),
|
|
11985
|
+
attachmentError !== null && (0, react_jsx_runtime.jsx)("p", {
|
|
11986
|
+
className: _dsh_awiki_css_AwikiMail_module_css_default.composeError,
|
|
11987
|
+
role: "alert",
|
|
11988
|
+
children: attachmentError
|
|
11989
|
+
}),
|
|
12010
11990
|
composeError !== null && (0, react_jsx_runtime.jsx)("p", {
|
|
12011
11991
|
className: _dsh_awiki_css_AwikiMail_module_css_default.composeError,
|
|
12012
11992
|
role: "alert",
|
|
@@ -12025,7 +12005,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12025
12005
|
}), (0, react_jsx_runtime.jsxs)("button", {
|
|
12026
12006
|
type: "submit",
|
|
12027
12007
|
className: _dsh_awiki_css_AwikiMail_module_css_default.sendButton,
|
|
12028
|
-
disabled: sending,
|
|
12008
|
+
disabled: sending || attachmentError !== null,
|
|
12029
12009
|
children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconSendOutline16, { size: 15 }), "发送"]
|
|
12030
12010
|
})]
|
|
12031
12011
|
})
|
|
@@ -12050,8 +12030,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12050
12030
|
className: _dsh_awiki_css_AwikiMail_module_css_default.detailBack,
|
|
12051
12031
|
"aria-label": `返回${MAIL_FOLDER_COPY[folder].title}`,
|
|
12052
12032
|
onClick: () => {
|
|
12033
|
+
detailGeneration.current += 1;
|
|
12053
12034
|
setSelectedId(null);
|
|
12054
12035
|
setMessage(null);
|
|
12036
|
+
setDownloadStates({});
|
|
12055
12037
|
setPane("list");
|
|
12056
12038
|
},
|
|
12057
12039
|
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronLeftOutline14, { size: 14 })
|
|
@@ -12107,8 +12089,33 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12107
12089
|
}),
|
|
12108
12090
|
message.attachments.length > 0 && (0, react_jsx_runtime.jsxs)("section", {
|
|
12109
12091
|
className: _dsh_awiki_css_AwikiMail_module_css_default.attachments,
|
|
12110
|
-
"aria-label": "
|
|
12111
|
-
children: [(0, react_jsx_runtime.jsx)("h4", { children: "
|
|
12092
|
+
"aria-label": "邮件附件",
|
|
12093
|
+
children: [(0, react_jsx_runtime.jsx)("h4", { children: "附件" }), message.attachments.map((attachment) => {
|
|
12094
|
+
const downloadable = attachmentLimits === null ? void 0 : downloadableMailAttachment(attachment, attachmentLimits.maxBytes);
|
|
12095
|
+
const state = downloadStates[attachment.index];
|
|
12096
|
+
return (0, react_jsx_runtime.jsxs)("div", { children: [
|
|
12097
|
+
(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPaperclipOutline16, { size: 15 }),
|
|
12098
|
+
(0, react_jsx_runtime.jsxs)("span", { children: [
|
|
12099
|
+
(0, react_jsx_runtime.jsx)("strong", { children: attachment.fileName ?? `附件 ${attachment.index + 1}` }),
|
|
12100
|
+
(0, react_jsx_runtime.jsx)("small", { children: [attachment.contentType, attachment.sizeBytes === void 0 ? void 0 : `${attachment.sizeBytes} bytes`].filter(Boolean).join(" · ") || "暂无更多信息" }),
|
|
12101
|
+
downloadable === void 0 && (0, react_jsx_runtime.jsx)("small", { children: "当前记录缺少完整、可验证的下载元数据。" }),
|
|
12102
|
+
state?.status === "error" && (0, react_jsx_runtime.jsx)("small", {
|
|
12103
|
+
className: _dsh_awiki_css_AwikiMail_module_css_default.attachmentDownloadError,
|
|
12104
|
+
role: "alert",
|
|
12105
|
+
children: state.error
|
|
12106
|
+
})
|
|
12107
|
+
] }),
|
|
12108
|
+
downloadable !== void 0 && (0, react_jsx_runtime.jsx)("button", {
|
|
12109
|
+
type: "button",
|
|
12110
|
+
disabled: state?.status === "loading",
|
|
12111
|
+
"aria-label": `${state?.status === "error" ? "重试下载" : "下载附件"} ${downloadable.fileName}`,
|
|
12112
|
+
onClick: () => {
|
|
12113
|
+
downloadAttachment(attachment);
|
|
12114
|
+
},
|
|
12115
|
+
children: state?.status === "loading" ? "下载中…" : state?.status === "error" ? "重试" : "下载"
|
|
12116
|
+
})
|
|
12117
|
+
] }, attachment.index);
|
|
12118
|
+
})]
|
|
12112
12119
|
})
|
|
12113
12120
|
]
|
|
12114
12121
|
})
|
|
@@ -12161,7 +12168,20 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12161
12168
|
splitAddresses(cc).length,
|
|
12162
12169
|
" 人"
|
|
12163
12170
|
] }),
|
|
12164
|
-
(0, react_jsx_runtime.jsxs)("p", { children: ["主题:", subject.trim()] })
|
|
12171
|
+
(0, react_jsx_runtime.jsxs)("p", { children: ["主题:", subject.trim()] }),
|
|
12172
|
+
(0, react_jsx_runtime.jsxs)("p", { children: [
|
|
12173
|
+
"附件:",
|
|
12174
|
+
attachments.length,
|
|
12175
|
+
" 个 · 共 ",
|
|
12176
|
+
displayBytes(attachmentTotalBytes)
|
|
12177
|
+
] }),
|
|
12178
|
+
attachments.map((attachment) => (0, react_jsx_runtime.jsxs)("p", { children: [
|
|
12179
|
+
attachment.fileName,
|
|
12180
|
+
" · ",
|
|
12181
|
+
attachment.contentType,
|
|
12182
|
+
" · ",
|
|
12183
|
+
displayBytes(attachment.sizeBytes)
|
|
12184
|
+
] }, attachment.id))
|
|
12165
12185
|
]
|
|
12166
12186
|
})
|
|
12167
12187
|
}),
|
|
@@ -12172,7 +12192,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12172
12192
|
},
|
|
12173
12193
|
title: "放弃这封邮件?",
|
|
12174
12194
|
closeLabel: "继续编辑",
|
|
12175
|
-
description: "
|
|
12195
|
+
description: "当前不会保存草稿,放弃后文字和附件选择都会被清空。",
|
|
12176
12196
|
footer: (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
12177
12197
|
type: "button",
|
|
12178
12198
|
variant: "outline",
|
|
@@ -12193,7 +12213,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12193
12213
|
})] }),
|
|
12194
12214
|
children: (0, react_jsx_runtime.jsx)("p", {
|
|
12195
12215
|
className: _dsh_awiki_css_AwikiMail_module_css_default.discardText,
|
|
12196
|
-
children: "
|
|
12216
|
+
children: "收件人、主题、正文和已选择的附件都会丢失。"
|
|
12197
12217
|
})
|
|
12198
12218
|
})
|
|
12199
12219
|
]
|
|
@@ -12840,247 +12860,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12840
12860
|
});
|
|
12841
12861
|
}
|
|
12842
12862
|
//#endregion
|
|
12843
|
-
//#region \0dsh-awiki-css:AwikiDevices.module.css.mjs
|
|
12844
|
-
const css$1 = ".xQ4iKW_page{align-content:start;gap:16px;height:100%;padding:16px;display:grid;overflow:auto}.xQ4iKW_heading{justify-content:space-between;align-items:start;gap:12px;display:flex}.xQ4iKW_heading h3,.xQ4iKW_heading p,.xQ4iKW_page h4,.xQ4iKW_page p{margin:0}.xQ4iKW_heading p,.xQ4iKW_card small{color:var(--dsw-alias-label-secondary)}.xQ4iKW_card{border:1px solid var(--dsw-alias-border-l1);border-radius:10px;gap:8px;margin-top:8px;padding:12px;display:grid}.xQ4iKW_actions{flex-wrap:wrap;gap:8px;display:flex}.xQ4iKW_sas{letter-spacing:.2em;text-align:center;font-variant-numeric:tabular-nums;font-size:30px}.xQ4iKW_error{color:var(--dsw-alias-state-error-primary)}";
|
|
12845
|
-
const tagId$1 = "@awiki/dsh-plugin/AwikiDevices.module.css";
|
|
12846
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
12847
|
-
const tag = document.createElement("style");
|
|
12848
|
-
tag.dataset.plugin = "@awiki/dsh-plugin";
|
|
12849
|
-
tag.dataset.pluginCss = tagId$1;
|
|
12850
|
-
tag.textContent = css$1;
|
|
12851
|
-
document.head.appendChild(tag);
|
|
12852
|
-
}
|
|
12853
|
-
var _dsh_awiki_css_AwikiDevices_module_css_default = {
|
|
12854
|
-
"actions": "xQ4iKW_actions",
|
|
12855
|
-
"card": "xQ4iKW_card",
|
|
12856
|
-
"error": "xQ4iKW_error",
|
|
12857
|
-
"heading": "xQ4iKW_heading",
|
|
12858
|
-
"page": "xQ4iKW_page",
|
|
12859
|
-
"sas": "xQ4iKW_sas"
|
|
12860
|
-
};
|
|
12861
|
-
//#endregion
|
|
12862
|
-
//#region lib/types/client/AwikiDevices.js
|
|
12863
|
-
/** Foreground-only ready-admin device management. SAS remains component-local. */
|
|
12864
|
-
function AwikiDevices(props) {
|
|
12865
|
-
const [snapshot, setSnapshot] = (0, react.useState)(null);
|
|
12866
|
-
const [progress, setProgress] = (0, react.useState)(null);
|
|
12867
|
-
const [enteredSas, setEnteredSas] = (0, react.useState)("");
|
|
12868
|
-
const [approval, setApproval] = (0, react.useState)("");
|
|
12869
|
-
const [revokeRef, setRevokeRef] = (0, react.useState)(null);
|
|
12870
|
-
const [revokeConfirmation, setRevokeConfirmation] = (0, react.useState)("");
|
|
12871
|
-
const [error, setError] = (0, react.useState)(null);
|
|
12872
|
-
const refresh = async () => {
|
|
12873
|
-
const result = await props.refreshDeviceManagement();
|
|
12874
|
-
if (!result.ok) return setError(result.error);
|
|
12875
|
-
setSnapshot(result.value);
|
|
12876
|
-
if (progress !== null && ![
|
|
12877
|
-
"authorized",
|
|
12878
|
-
"cancelled",
|
|
12879
|
-
"rejected",
|
|
12880
|
-
"expired"
|
|
12881
|
-
].includes(progress.phase)) {
|
|
12882
|
-
const advanced = await props.startDeviceJoinVerification({ requestRef: progress.requestRef });
|
|
12883
|
-
if (advanced.ok) setProgress(advanced.value);
|
|
12884
|
-
}
|
|
12885
|
-
setError(null);
|
|
12886
|
-
};
|
|
12887
|
-
(0, react.useEffect)(() => {
|
|
12888
|
-
if (!props.active) return;
|
|
12889
|
-
let alive = true;
|
|
12890
|
-
props.refreshDeviceManagement().then((result) => {
|
|
12891
|
-
if (!alive) return;
|
|
12892
|
-
if (result.ok) setSnapshot(result.value);
|
|
12893
|
-
else setError(result.error);
|
|
12894
|
-
});
|
|
12895
|
-
const timer = setInterval(() => {
|
|
12896
|
-
if (alive) refresh();
|
|
12897
|
-
}, 3e3);
|
|
12898
|
-
return () => {
|
|
12899
|
-
alive = false;
|
|
12900
|
-
clearInterval(timer);
|
|
12901
|
-
};
|
|
12902
|
-
}, [
|
|
12903
|
-
props.active,
|
|
12904
|
-
progress?.phase,
|
|
12905
|
-
progress?.requestRef
|
|
12906
|
-
]);
|
|
12907
|
-
const start = async (requestRef) => {
|
|
12908
|
-
const result = await props.startDeviceJoinVerification({ requestRef });
|
|
12909
|
-
if (!result.ok) return setError(result.error);
|
|
12910
|
-
setProgress(result.value);
|
|
12911
|
-
setError(null);
|
|
12912
|
-
};
|
|
12913
|
-
const approve = async () => {
|
|
12914
|
-
if (progress === null) return;
|
|
12915
|
-
const result = await props.approveDeviceJoin({
|
|
12916
|
-
requestRef: progress.requestRef,
|
|
12917
|
-
enteredSas,
|
|
12918
|
-
confirmation: approval
|
|
12919
|
-
});
|
|
12920
|
-
if (!result.ok) return setError(result.error);
|
|
12921
|
-
setProgress(null);
|
|
12922
|
-
setEnteredSas("");
|
|
12923
|
-
setApproval("");
|
|
12924
|
-
await refresh();
|
|
12925
|
-
};
|
|
12926
|
-
const reject = async (requestRef) => {
|
|
12927
|
-
const result = await props.rejectDeviceJoin({
|
|
12928
|
-
requestRef,
|
|
12929
|
-
reason: "user_rejected"
|
|
12930
|
-
});
|
|
12931
|
-
if (!result.ok) return setError(result.error);
|
|
12932
|
-
setProgress(null);
|
|
12933
|
-
await refresh();
|
|
12934
|
-
};
|
|
12935
|
-
const revoke = async () => {
|
|
12936
|
-
if (revokeRef === null) return;
|
|
12937
|
-
const result = await props.revokeDevice({
|
|
12938
|
-
deviceRef: revokeRef,
|
|
12939
|
-
confirmation: revokeConfirmation
|
|
12940
|
-
});
|
|
12941
|
-
if (!result.ok) return setError(result.error);
|
|
12942
|
-
setSnapshot(result.value);
|
|
12943
|
-
setRevokeRef(null);
|
|
12944
|
-
setRevokeConfirmation("");
|
|
12945
|
-
setError(null);
|
|
12946
|
-
};
|
|
12947
|
-
return (0, react_jsx_runtime.jsxs)("section", {
|
|
12948
|
-
className: _dsh_awiki_css_AwikiDevices_module_css_default.page,
|
|
12949
|
-
"aria-label": "AWiki 设备管理",
|
|
12950
|
-
children: [
|
|
12951
|
-
props.modeTabs,
|
|
12952
|
-
(0, react_jsx_runtime.jsxs)("header", {
|
|
12953
|
-
className: _dsh_awiki_css_AwikiDevices_module_css_default.heading,
|
|
12954
|
-
children: [(0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("h3", { children: "设备" }), (0, react_jsx_runtime.jsx)("p", { children: "只有当前 ready-admin 可以批准或撤销设备。" })] }), (0, react_jsx_runtime.jsx)("button", {
|
|
12955
|
-
type: "button",
|
|
12956
|
-
disabled: props.pending,
|
|
12957
|
-
onClick: () => {
|
|
12958
|
-
refresh();
|
|
12959
|
-
},
|
|
12960
|
-
children: "刷新"
|
|
12961
|
-
})]
|
|
12962
|
-
}),
|
|
12963
|
-
snapshot === null && (0, react_jsx_runtime.jsx)("p", {
|
|
12964
|
-
role: "status",
|
|
12965
|
-
children: "正在读取设备状态…"
|
|
12966
|
-
}),
|
|
12967
|
-
snapshot !== null && !snapshot.canManage && (0, react_jsx_runtime.jsx)("p", { children: "当前设备不是可用的管理设备,不能批准或撤销其他设备。" }),
|
|
12968
|
-
snapshot?.canManage && (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
12969
|
-
(0, react_jsx_runtime.jsxs)("section", { children: [
|
|
12970
|
-
(0, react_jsx_runtime.jsx)("h4", { children: "待加入" }),
|
|
12971
|
-
snapshot.requests.length === 0 && (0, react_jsx_runtime.jsx)("p", { children: "没有待处理请求。" }),
|
|
12972
|
-
snapshot.requests.map((request) => (0, react_jsx_runtime.jsxs)("article", {
|
|
12973
|
-
className: _dsh_awiki_css_AwikiDevices_module_css_default.card,
|
|
12974
|
-
children: [
|
|
12975
|
-
(0, react_jsx_runtime.jsx)("code", { children: request.candidateKeyFingerprint }),
|
|
12976
|
-
(0, react_jsx_runtime.jsxs)("small", { children: [
|
|
12977
|
-
request.state,
|
|
12978
|
-
" · 有效期至 ",
|
|
12979
|
-
request.expiresAt
|
|
12980
|
-
] }),
|
|
12981
|
-
(0, react_jsx_runtime.jsxs)("div", {
|
|
12982
|
-
className: _dsh_awiki_css_AwikiDevices_module_css_default.actions,
|
|
12983
|
-
children: [(0, react_jsx_runtime.jsx)("button", {
|
|
12984
|
-
type: "button",
|
|
12985
|
-
disabled: props.pending || !request.canStartVerification && !request.claimedByCurrentDevice,
|
|
12986
|
-
onClick: () => {
|
|
12987
|
-
start(request.requestRef);
|
|
12988
|
-
},
|
|
12989
|
-
children: "开始验证"
|
|
12990
|
-
}), (0, react_jsx_runtime.jsx)("button", {
|
|
12991
|
-
type: "button",
|
|
12992
|
-
disabled: props.pending,
|
|
12993
|
-
onClick: () => {
|
|
12994
|
-
reject(request.requestRef);
|
|
12995
|
-
},
|
|
12996
|
-
children: "拒绝"
|
|
12997
|
-
})]
|
|
12998
|
-
})
|
|
12999
|
-
]
|
|
13000
|
-
}, request.requestRef))
|
|
13001
|
-
] }),
|
|
13002
|
-
progress?.phase === "sas-ready" && (0, react_jsx_runtime.jsxs)("section", {
|
|
13003
|
-
className: _dsh_awiki_css_AwikiDevices_module_css_default.card,
|
|
13004
|
-
children: [
|
|
13005
|
-
(0, react_jsx_runtime.jsx)("h4", { children: "核对安全码" }),
|
|
13006
|
-
(0, react_jsx_runtime.jsx)("strong", {
|
|
13007
|
-
className: _dsh_awiki_css_AwikiDevices_module_css_default.sas,
|
|
13008
|
-
children: progress.sas
|
|
13009
|
-
}),
|
|
13010
|
-
(0, react_jsx_runtime.jsx)("p", { children: "输入手机显示的 6 位码,并输入 APPROVE。" }),
|
|
13011
|
-
(0, react_jsx_runtime.jsx)("input", {
|
|
13012
|
-
"aria-label": "手机安全码",
|
|
13013
|
-
value: enteredSas,
|
|
13014
|
-
inputMode: "numeric",
|
|
13015
|
-
maxLength: 6,
|
|
13016
|
-
onChange: (event) => {
|
|
13017
|
-
setEnteredSas(event.target.value);
|
|
13018
|
-
}
|
|
13019
|
-
}),
|
|
13020
|
-
(0, react_jsx_runtime.jsx)("input", {
|
|
13021
|
-
"aria-label": "批准确认词",
|
|
13022
|
-
value: approval,
|
|
13023
|
-
autoComplete: "off",
|
|
13024
|
-
onChange: (event) => {
|
|
13025
|
-
setApproval(event.target.value);
|
|
13026
|
-
},
|
|
13027
|
-
placeholder: "APPROVE"
|
|
13028
|
-
}),
|
|
13029
|
-
(0, react_jsx_runtime.jsx)("button", {
|
|
13030
|
-
type: "button",
|
|
13031
|
-
disabled: props.pending || enteredSas.length !== 6 || approval !== "APPROVE",
|
|
13032
|
-
onClick: () => {
|
|
13033
|
-
approve();
|
|
13034
|
-
},
|
|
13035
|
-
children: "批准为 member"
|
|
13036
|
-
})
|
|
13037
|
-
]
|
|
13038
|
-
}),
|
|
13039
|
-
(0, react_jsx_runtime.jsxs)("section", { children: [(0, react_jsx_runtime.jsx)("h4", { children: "已登记设备" }), snapshot.devices.map((device) => (0, react_jsx_runtime.jsxs)("article", {
|
|
13040
|
-
className: _dsh_awiki_css_AwikiDevices_module_css_default.card,
|
|
13041
|
-
children: [(0, react_jsx_runtime.jsxs)("span", { children: [
|
|
13042
|
-
device.isCurrent ? "当前设备" : "其他设备",
|
|
13043
|
-
" · ",
|
|
13044
|
-
device.role,
|
|
13045
|
-
" · ",
|
|
13046
|
-
device.status
|
|
13047
|
-
] }), !device.isCurrent && device.status === "active" && (revokeRef === device.deviceRef ? (0, react_jsx_runtime.jsxs)("div", {
|
|
13048
|
-
className: _dsh_awiki_css_AwikiDevices_module_css_default.actions,
|
|
13049
|
-
children: [(0, react_jsx_runtime.jsx)("input", {
|
|
13050
|
-
"aria-label": "撤销确认词",
|
|
13051
|
-
value: revokeConfirmation,
|
|
13052
|
-
onChange: (event) => {
|
|
13053
|
-
setRevokeConfirmation(event.target.value);
|
|
13054
|
-
},
|
|
13055
|
-
placeholder: "REVOKE"
|
|
13056
|
-
}), (0, react_jsx_runtime.jsx)("button", {
|
|
13057
|
-
type: "button",
|
|
13058
|
-
disabled: props.pending || revokeConfirmation !== "REVOKE",
|
|
13059
|
-
onClick: () => {
|
|
13060
|
-
revoke();
|
|
13061
|
-
},
|
|
13062
|
-
children: "确认撤销"
|
|
13063
|
-
})]
|
|
13064
|
-
}) : (0, react_jsx_runtime.jsx)("button", {
|
|
13065
|
-
type: "button",
|
|
13066
|
-
disabled: props.pending,
|
|
13067
|
-
onClick: () => {
|
|
13068
|
-
setRevokeRef(device.deviceRef);
|
|
13069
|
-
setRevokeConfirmation("");
|
|
13070
|
-
},
|
|
13071
|
-
children: "撤销"
|
|
13072
|
-
}))]
|
|
13073
|
-
}, device.deviceRef))] })
|
|
13074
|
-
] }),
|
|
13075
|
-
error !== null && (0, react_jsx_runtime.jsx)("p", {
|
|
13076
|
-
className: _dsh_awiki_css_AwikiDevices_module_css_default.error,
|
|
13077
|
-
role: "alert",
|
|
13078
|
-
children: error
|
|
13079
|
-
})
|
|
13080
|
-
]
|
|
13081
|
-
});
|
|
13082
|
-
}
|
|
13083
|
-
//#endregion
|
|
13084
12863
|
//#region lib/types/client/AwikiProfileCard.js
|
|
13085
12864
|
const MAX_DISPLAY_NAME = 50;
|
|
13086
12865
|
const MAX_BIO = 100;
|
|
@@ -13549,35 +13328,23 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13549
13328
|
className: _dsh_awiki_css_AwikiOverlay_module_css_default.modeTabs,
|
|
13550
13329
|
role: "tablist",
|
|
13551
13330
|
"aria-label": "AWiki 功能",
|
|
13552
|
-
children: [
|
|
13553
|
-
|
|
13554
|
-
|
|
13555
|
-
|
|
13556
|
-
|
|
13557
|
-
|
|
13558
|
-
|
|
13559
|
-
|
|
13560
|
-
|
|
13561
|
-
|
|
13562
|
-
|
|
13563
|
-
|
|
13564
|
-
|
|
13565
|
-
|
|
13566
|
-
|
|
13567
|
-
|
|
13568
|
-
|
|
13569
|
-
children: ["邮件", props.mailUnreadCount > 0 && (0, react_jsx_runtime.jsx)("small", { children: props.mailUnreadCount > 99 ? "99+" : props.mailUnreadCount })]
|
|
13570
|
-
}),
|
|
13571
|
-
(0, react_jsx_runtime.jsx)("button", {
|
|
13572
|
-
type: "button",
|
|
13573
|
-
role: "tab",
|
|
13574
|
-
"aria-selected": props.mode === "devices",
|
|
13575
|
-
onClick: () => {
|
|
13576
|
-
props.onChange("devices");
|
|
13577
|
-
},
|
|
13578
|
-
children: "设备"
|
|
13579
|
-
})
|
|
13580
|
-
]
|
|
13331
|
+
children: [(0, react_jsx_runtime.jsx)("button", {
|
|
13332
|
+
type: "button",
|
|
13333
|
+
role: "tab",
|
|
13334
|
+
"aria-selected": props.mode === "chat",
|
|
13335
|
+
onClick: () => {
|
|
13336
|
+
props.onChange("chat");
|
|
13337
|
+
},
|
|
13338
|
+
children: "会话"
|
|
13339
|
+
}), (0, react_jsx_runtime.jsxs)("button", {
|
|
13340
|
+
type: "button",
|
|
13341
|
+
role: "tab",
|
|
13342
|
+
"aria-selected": props.mode === "mail",
|
|
13343
|
+
onClick: () => {
|
|
13344
|
+
props.onChange("mail");
|
|
13345
|
+
},
|
|
13346
|
+
children: ["邮件", props.mailUnreadCount > 0 && (0, react_jsx_runtime.jsx)("small", { children: props.mailUnreadCount > 99 ? "99+" : props.mailUnreadCount })]
|
|
13347
|
+
})]
|
|
13581
13348
|
});
|
|
13582
13349
|
}
|
|
13583
13350
|
/** Incoming sender label: WNS display name, then Handle, then DID. */
|
|
@@ -14276,6 +14043,40 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14276
14043
|
}), props.composeMenu]
|
|
14277
14044
|
})]
|
|
14278
14045
|
}),
|
|
14046
|
+
view.groupRecovery !== null && (0, react_jsx_runtime.jsxs)("div", {
|
|
14047
|
+
className: _dsh_awiki_css_AwikiOverlay_module_css_default.groupRecoveryNotice,
|
|
14048
|
+
"data-status": view.groupRecovery.status,
|
|
14049
|
+
role: view.groupRecovery.status === "blocked" ? "alert" : "status",
|
|
14050
|
+
children: [
|
|
14051
|
+
(0, react_jsx_runtime.jsxs)("span", { children: [(0, react_jsx_runtime.jsx)("strong", { children: view.groupRecovery.status === "pending" ? "正在恢复旧群聊身份" : view.groupRecovery.status === "blocked" ? "部分旧群聊需要处理" : "暂时无法检查旧群聊身份" }), (0, react_jsx_runtime.jsx)("small", { children: view.groupRecovery.status === "pending" ? `${view.groupRecovery.pending} 个群聊尚未完成,其他会话不受影响。` : view.groupRecovery.status === "blocked" ? `${view.groupRecovery.blocked} 个群聊未能自动恢复,其他会话不受影响。` : "私聊和新群聊不受影响,可稍后重试。" })] }),
|
|
14052
|
+
(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
14053
|
+
label: "重试群聊身份恢复",
|
|
14054
|
+
side: "right",
|
|
14055
|
+
children: (0, react_jsx_runtime.jsx)("button", {
|
|
14056
|
+
type: "button",
|
|
14057
|
+
"aria-label": "重试群聊身份恢复",
|
|
14058
|
+
disabled: view.pending !== null,
|
|
14059
|
+
onClick: () => {
|
|
14060
|
+
props.retryGroupRebindRecovery();
|
|
14061
|
+
},
|
|
14062
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutline14, { size: 14 })
|
|
14063
|
+
})
|
|
14064
|
+
}),
|
|
14065
|
+
(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
14066
|
+
label: "稍后处理",
|
|
14067
|
+
side: "right",
|
|
14068
|
+
children: (0, react_jsx_runtime.jsx)("button", {
|
|
14069
|
+
type: "button",
|
|
14070
|
+
"aria-label": "关闭旧群聊处理提示",
|
|
14071
|
+
disabled: view.pending !== null,
|
|
14072
|
+
onClick: () => {
|
|
14073
|
+
props.dismissGroupRecoveryNotice();
|
|
14074
|
+
},
|
|
14075
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconCloseOutline16, { size: 14 })
|
|
14076
|
+
})
|
|
14077
|
+
})
|
|
14078
|
+
]
|
|
14079
|
+
}),
|
|
14279
14080
|
(0, react_jsx_runtime.jsxs)("div", {
|
|
14280
14081
|
className: _dsh_awiki_css_AwikiOverlay_module_css_default.conversationList,
|
|
14281
14082
|
children: [view.conversations.map((conversation) => (0, react_jsx_runtime.jsx)(ConversationRow, {
|
|
@@ -15257,113 +15058,95 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15257
15058
|
recoveryOperationId: view.recoveryOperationId,
|
|
15258
15059
|
recoveryProgress: view.recoveryProgress,
|
|
15259
15060
|
pending: view.pending !== null,
|
|
15260
|
-
|
|
15061
|
+
profileName: view.profileName,
|
|
15062
|
+
legacySharedStateDetected: view.legacySharedStateDetected
|
|
15261
15063
|
})
|
|
15262
15064
|
}),
|
|
15263
|
-
view.status === "ready" && view.sessionStatus === "active" && view.identity !== null && (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
15264
|
-
|
|
15265
|
-
|
|
15266
|
-
|
|
15267
|
-
|
|
15268
|
-
|
|
15269
|
-
|
|
15270
|
-
|
|
15271
|
-
view
|
|
15272
|
-
|
|
15273
|
-
|
|
15065
|
+
view.status === "ready" && view.sessionStatus === "active" && view.identity !== null && (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)("div", {
|
|
15066
|
+
className: _dsh_awiki_css_AwikiOverlay_module_css_default.modePanel,
|
|
15067
|
+
"data-active": mode === "chat" || void 0,
|
|
15068
|
+
hidden: mode !== "chat",
|
|
15069
|
+
children: (0, react_jsx_runtime.jsx)(Chat, {
|
|
15070
|
+
...props,
|
|
15071
|
+
selectConversation,
|
|
15072
|
+
view: {
|
|
15073
|
+
...view,
|
|
15074
|
+
identity: view.identity
|
|
15075
|
+
},
|
|
15076
|
+
modeTabs: (0, react_jsx_runtime.jsx)(ModeTabs, {
|
|
15077
|
+
mode,
|
|
15078
|
+
mailUnreadCount,
|
|
15079
|
+
onChange: setMode
|
|
15080
|
+
}),
|
|
15081
|
+
composeMenu: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
|
|
15082
|
+
open: menuOpen,
|
|
15083
|
+
onClose: () => {
|
|
15084
|
+
setMenuOpen(false);
|
|
15274
15085
|
},
|
|
15275
|
-
|
|
15276
|
-
|
|
15277
|
-
|
|
15278
|
-
|
|
15279
|
-
|
|
15280
|
-
|
|
15281
|
-
|
|
15282
|
-
onClose: () => {
|
|
15283
|
-
setMenuOpen(false);
|
|
15086
|
+
align: "end",
|
|
15087
|
+
portal: true,
|
|
15088
|
+
compact: true,
|
|
15089
|
+
items: [
|
|
15090
|
+
{
|
|
15091
|
+
id: "direct",
|
|
15092
|
+
label: "发起私聊"
|
|
15284
15093
|
},
|
|
15285
|
-
|
|
15286
|
-
|
|
15287
|
-
|
|
15288
|
-
items: [
|
|
15289
|
-
{
|
|
15290
|
-
id: "direct",
|
|
15291
|
-
label: "发起私聊"
|
|
15292
|
-
},
|
|
15293
|
-
{
|
|
15294
|
-
id: "group",
|
|
15295
|
-
label: "发起群聊"
|
|
15296
|
-
},
|
|
15297
|
-
{
|
|
15298
|
-
id: "join-group",
|
|
15299
|
-
label: "加入群聊"
|
|
15300
|
-
}
|
|
15301
|
-
],
|
|
15302
|
-
onSelect: (id) => {
|
|
15303
|
-
setMenuOpen(false);
|
|
15304
|
-
if (id === "direct") setComposeDirect(true);
|
|
15305
|
-
if (id === "group") setComposeGroup(true);
|
|
15306
|
-
if (id === "join-group") setJoinGroupOpen(true);
|
|
15094
|
+
{
|
|
15095
|
+
id: "group",
|
|
15096
|
+
label: "发起群聊"
|
|
15307
15097
|
},
|
|
15308
|
-
|
|
15309
|
-
|
|
15310
|
-
|
|
15311
|
-
|
|
15312
|
-
|
|
15313
|
-
|
|
15314
|
-
|
|
15315
|
-
|
|
15316
|
-
|
|
15317
|
-
|
|
15318
|
-
|
|
15098
|
+
{
|
|
15099
|
+
id: "join-group",
|
|
15100
|
+
label: "加入群聊"
|
|
15101
|
+
}
|
|
15102
|
+
],
|
|
15103
|
+
onSelect: (id) => {
|
|
15104
|
+
setMenuOpen(false);
|
|
15105
|
+
if (id === "direct") setComposeDirect(true);
|
|
15106
|
+
if (id === "group") setComposeGroup(true);
|
|
15107
|
+
if (id === "join-group") setJoinGroupOpen(true);
|
|
15108
|
+
},
|
|
15109
|
+
anchor: (0, react_jsx_runtime.jsx)("button", {
|
|
15110
|
+
type: "button",
|
|
15111
|
+
className: _dsh_awiki_css_AwikiOverlay_module_css_default.rosterAction,
|
|
15112
|
+
"aria-label": "发起会话",
|
|
15113
|
+
"aria-expanded": menuOpen,
|
|
15114
|
+
"aria-haspopup": "menu",
|
|
15115
|
+
onClick: () => {
|
|
15116
|
+
setMenuOpen((value) => !value);
|
|
15117
|
+
},
|
|
15118
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPlusOutline16, {})
|
|
15319
15119
|
})
|
|
15320
15120
|
})
|
|
15321
|
-
}),
|
|
15322
|
-
(0, react_jsx_runtime.jsx)("div", {
|
|
15323
|
-
className: _dsh_awiki_css_AwikiOverlay_module_css_default.modePanel,
|
|
15324
|
-
"data-active": mode === "mail" || void 0,
|
|
15325
|
-
hidden: mode !== "mail",
|
|
15326
|
-
children: (0, react_jsx_runtime.jsx)(AwikiMail, {
|
|
15327
|
-
active: mode === "mail",
|
|
15328
|
-
cacheOwner: view.identity.did,
|
|
15329
|
-
identityCard: mode === "mail" ? (0, react_jsx_runtime.jsx)(AwikiProfileCard, {
|
|
15330
|
-
identity: view.identity,
|
|
15331
|
-
profile: view.profile,
|
|
15332
|
-
pending: view.pending !== null,
|
|
15333
|
-
updateProfile: props.updateProfile
|
|
15334
|
-
}) : null,
|
|
15335
|
-
modeTabs: (0, react_jsx_runtime.jsx)(ModeTabs, {
|
|
15336
|
-
mode,
|
|
15337
|
-
mailUnreadCount,
|
|
15338
|
-
onChange: setMode
|
|
15339
|
-
}),
|
|
15340
|
-
onUnreadCountChange: setMailUnreadCount,
|
|
15341
|
-
getMailAccount: props.getMailAccount,
|
|
15342
|
-
listMailInbox: props.listMailInbox,
|
|
15343
|
-
readMail: props.readMail,
|
|
15344
|
-
markMailRead: props.markMailRead,
|
|
15345
|
-
sendMail: props.sendMail
|
|
15346
|
-
}, view.identity.did)
|
|
15347
|
-
}),
|
|
15348
|
-
mode === "devices" && (0, react_jsx_runtime.jsx)("div", {
|
|
15349
|
-
className: _dsh_awiki_css_AwikiOverlay_module_css_default.modePanel,
|
|
15350
|
-
"data-active": true,
|
|
15351
|
-
children: (0, react_jsx_runtime.jsx)(AwikiDevices, {
|
|
15352
|
-
active: true,
|
|
15353
|
-
pending: view.pending !== null,
|
|
15354
|
-
modeTabs: (0, react_jsx_runtime.jsx)(ModeTabs, {
|
|
15355
|
-
mode,
|
|
15356
|
-
mailUnreadCount,
|
|
15357
|
-
onChange: setMode
|
|
15358
|
-
}),
|
|
15359
|
-
refreshDeviceManagement: props.refreshDeviceManagement,
|
|
15360
|
-
startDeviceJoinVerification: props.startDeviceJoinVerification,
|
|
15361
|
-
approveDeviceJoin: props.approveDeviceJoin,
|
|
15362
|
-
rejectDeviceJoin: props.rejectDeviceJoin,
|
|
15363
|
-
revokeDevice: props.revokeDevice
|
|
15364
|
-
})
|
|
15365
15121
|
})
|
|
15366
|
-
|
|
15122
|
+
}), (0, react_jsx_runtime.jsx)("div", {
|
|
15123
|
+
className: _dsh_awiki_css_AwikiOverlay_module_css_default.modePanel,
|
|
15124
|
+
"data-active": mode === "mail" || void 0,
|
|
15125
|
+
hidden: mode !== "mail",
|
|
15126
|
+
children: (0, react_jsx_runtime.jsx)(AwikiMail, {
|
|
15127
|
+
active: mode === "mail",
|
|
15128
|
+
cacheOwner: view.identity.did,
|
|
15129
|
+
identityCard: mode === "mail" ? (0, react_jsx_runtime.jsx)(AwikiProfileCard, {
|
|
15130
|
+
identity: view.identity,
|
|
15131
|
+
profile: view.profile,
|
|
15132
|
+
pending: view.pending !== null,
|
|
15133
|
+
updateProfile: props.updateProfile
|
|
15134
|
+
}) : null,
|
|
15135
|
+
modeTabs: (0, react_jsx_runtime.jsx)(ModeTabs, {
|
|
15136
|
+
mode,
|
|
15137
|
+
mailUnreadCount,
|
|
15138
|
+
onChange: setMode
|
|
15139
|
+
}),
|
|
15140
|
+
onUnreadCountChange: setMailUnreadCount,
|
|
15141
|
+
getConfig: props.getConfig,
|
|
15142
|
+
getMailAccount: props.getMailAccount,
|
|
15143
|
+
listMailInbox: props.listMailInbox,
|
|
15144
|
+
readMail: props.readMail,
|
|
15145
|
+
markMailRead: props.markMailRead,
|
|
15146
|
+
sendMail: props.sendMail,
|
|
15147
|
+
downloadMailAttachment: props.downloadMailAttachment
|
|
15148
|
+
}, view.identity.did)
|
|
15149
|
+
})] }),
|
|
15367
15150
|
composeDirect && (0, react_jsx_runtime.jsx)("div", {
|
|
15368
15151
|
className: _dsh_awiki_css_AwikiOverlay_module_css_default.composeBackdrop,
|
|
15369
15152
|
children: (0, react_jsx_runtime.jsxs)("form", {
|
|
@@ -15951,16 +15734,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15951
15734
|
/** Bilingual copy for the AWiki identity and installation settings page. */
|
|
15952
15735
|
const zh = {
|
|
15953
15736
|
nav: "AWiki",
|
|
15954
|
-
intro: "管理 AWiki
|
|
15955
|
-
domainLabel: "
|
|
15956
|
-
domainDescription: "
|
|
15737
|
+
intro: "管理 AWiki 租户、身份与本地数据设置。",
|
|
15738
|
+
domainLabel: "租户域名",
|
|
15739
|
+
domainDescription: "输入纯域名;重启后 User、Message、Mail 与附件服务都会切换到该域名。",
|
|
15957
15740
|
defaultValue: "默认值:{domain}",
|
|
15958
15741
|
save: "保存",
|
|
15959
15742
|
saving: "保存中…",
|
|
15960
15743
|
reset: "恢复默认值",
|
|
15961
15744
|
saved: "已保存。",
|
|
15962
15745
|
restartNotice: "重启 DeepSeek Harness 后生效。",
|
|
15963
|
-
identityNotice: "
|
|
15746
|
+
identityNotice: "不同域名使用相互隔离的本地身份、消息与身份恢复进度。切回原域名时会恢复该域名原有的本地状态。",
|
|
15964
15747
|
invalidDomain: "请输入有效的域名,例如 awiki.ai。",
|
|
15965
15748
|
saveFailed: "未能保存设置,请刷新后重试。",
|
|
15966
15749
|
loading: "正在读取 AWiki 设置…",
|
|
@@ -15983,16 +15766,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15983
15766
|
};
|
|
15984
15767
|
const en = {
|
|
15985
15768
|
nav: "AWiki",
|
|
15986
|
-
intro: "Manage AWiki
|
|
15987
|
-
domainLabel: "
|
|
15988
|
-
domainDescription: "Enter a bare domain
|
|
15769
|
+
intro: "Manage the AWiki tenant, identity, and local data settings.",
|
|
15770
|
+
domainLabel: "Tenant domain",
|
|
15771
|
+
domainDescription: "Enter a bare domain. After restart, User, Message, Mail, and attachment services all switch to it.",
|
|
15989
15772
|
defaultValue: "Default: {domain}",
|
|
15990
15773
|
save: "Save",
|
|
15991
15774
|
saving: "Saving…",
|
|
15992
15775
|
reset: "Restore default",
|
|
15993
15776
|
saved: "Saved.",
|
|
15994
15777
|
restartNotice: "Restart DeepSeek Harness for the change to take effect.",
|
|
15995
|
-
identityNotice: "
|
|
15778
|
+
identityNotice: "Each domain uses isolated local identity, message, and identity-recovery state. Switching back restores that domain’s previous local state.",
|
|
15996
15779
|
invalidDomain: "Enter a valid domain, such as awiki.ai.",
|
|
15997
15780
|
saveFailed: "The setting could not be saved. Refresh and try again.",
|
|
15998
15781
|
loading: "Loading AWiki settings…",
|
|
@@ -16241,14 +16024,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16241
16024
|
inspectIdentityAccess: (request) => awiki.inspectIdentityAccess(request),
|
|
16242
16025
|
sendRegistrationOtp: (request) => awiki.sendRegistrationOtp(request),
|
|
16243
16026
|
registerIdentity: (request) => awiki.registerIdentity(request),
|
|
16244
|
-
beginDeviceJoin: () => awiki.beginDeviceJoin(),
|
|
16245
|
-
getDeviceJoinStatus: () => awiki.getDeviceJoinStatus(),
|
|
16246
|
-
cancelDeviceJoin: () => awiki.cancelDeviceJoin(),
|
|
16247
|
-
refreshDeviceManagement: () => awiki.refreshDeviceManagement(),
|
|
16248
|
-
startDeviceJoinVerification: (request) => awiki.startDeviceJoinVerification(request),
|
|
16249
|
-
approveDeviceJoin: (request) => awiki.approveDeviceJoin(request),
|
|
16250
|
-
rejectDeviceJoin: (request) => awiki.rejectDeviceJoin(request),
|
|
16251
|
-
revokeDevice: (request) => awiki.revokeDevice(request),
|
|
16252
16027
|
updateDisplayName: (displayName) => awiki.updateDisplayName(displayName),
|
|
16253
16028
|
updateProfile: (request) => awiki.updateProfile(request),
|
|
16254
16029
|
sendRecoveryOtp: (request) => awiki.sendRecoveryOtp(request),
|
|
@@ -16258,6 +16033,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16258
16033
|
resumeRecovery: () => awiki.resumeRecovery(),
|
|
16259
16034
|
discardRecovery: () => awiki.discardRecovery(),
|
|
16260
16035
|
loadMoreConversations: () => awiki.loadMoreConversations(),
|
|
16036
|
+
retryGroupRebindRecovery: () => awiki.retryGroupRebindRecovery(),
|
|
16037
|
+
dismissGroupRecoveryNotice: () => awiki.dismissGroupRecoveryNotice(),
|
|
16261
16038
|
hideConversation: (conversationId) => awiki.hideConversation(conversationId),
|
|
16262
16039
|
restoreConversation: (conversationId) => awiki.restoreConversation(conversationId),
|
|
16263
16040
|
startDirectChat: (handle) => awiki.startDirectChat(handle),
|
|
@@ -16287,11 +16064,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16287
16064
|
value: void 0
|
|
16288
16065
|
} : result;
|
|
16289
16066
|
},
|
|
16067
|
+
getConfig: () => awiki.getConfig(),
|
|
16290
16068
|
getMailAccount: () => awiki.getMailAccount(),
|
|
16291
16069
|
listMailInbox: (request) => awiki.listMailInbox(request),
|
|
16292
16070
|
readMail: (request) => awiki.readMail(request),
|
|
16293
16071
|
markMailRead: (request) => awiki.markMailRead(request),
|
|
16294
|
-
sendMail: (request) => awiki.sendMail(request)
|
|
16072
|
+
sendMail: (request) => awiki.sendMail(request),
|
|
16073
|
+
downloadMailAttachment: (request) => awiki.downloadMailAttachment(request)
|
|
16295
16074
|
})
|
|
16296
16075
|
}, AwikiOverlay);
|
|
16297
16076
|
});
|