@awiki/dsh-plugin 0.3.4 → 0.3.6
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 -51
- package/README.zh.md +51 -43
- package/cordis.patch.yml +7 -21
- package/lib/client.js +785 -1308
- package/lib/client.js.map +1 -1
- package/lib/index.js +715 -1017
- package/lib/provider.js +16 -52
- package/lib/{sdk-adapter-BeJakxLP.mjs → sdk-adapter--trNlr-T.mjs} +38 -143
- package/lib/typert.host.js +139 -414
- package/lib/typert.remote-client.d.ts +5 -19
- package/lib/typert.remote-client.d.ts.map +1 -1
- package/lib/typert.remote-client.js +139 -414
- 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 +3 -4
- package/lib/types/client/AwikiOverlay.js.map +1 -1
- package/lib/types/client/controller.d.ts +11 -20
- package/lib/types/client/controller.d.ts.map +1 -1
- package/lib/types/client/controller.js +48 -53
- 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 +2 -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 +186 -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 +6 -10
- package/lib/types/client/slots.d.ts.map +1 -1
- package/lib/types/index.d.ts +28 -59
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +417 -800
- 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 +78 -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 +36 -100
- package/lib/types/provider-api.d.ts.map +1 -1
- package/lib/types/provider.d.ts +1 -7
- package/lib/types/provider.d.ts.map +1 -1
- package/lib/types/provider.js +15 -53
- package/lib/types/provider.js.map +1 -1
- package/lib/types/sdk-adapter.d.ts +5 -30
- package/lib/types/sdk-adapter.d.ts.map +1 -1
- package/lib/types/sdk-adapter.js +48 -133
- 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 +45 -77
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/types.js.map +1 -1
- package/package.json +4 -6
- 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 -43
- package/lib/types/realtime-supervisor.d.ts.map +0 -1
- package/lib/types/realtime-supervisor.js +0 -166
- package/lib/types/realtime-supervisor.js.map +0 -1
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
/** One explicit create, recover, resume, or replace flow for AWiki identity access. */
|
|
2
|
-
import type {
|
|
2
|
+
import type { AwikiIdentityAccessInspection, AwikiIdentityAccessInspectionRequest, AwikiIdentity, AwikiRecoveryProgress, AwikiRegistrationOtpRequest, AwikiRegistrationOtpResult, AwikiRegistrationRequest, AwikiSession } from '@awiki/dsh-plugin/types';
|
|
3
3
|
import type { AwikiActionResult } from './controller.ts';
|
|
4
4
|
import { type AwikiRecoveryActions } from './AwikiRecoveryForm.tsx';
|
|
5
5
|
export interface AwikiIdentityAccessActions extends AwikiRecoveryActions {
|
|
6
|
+
inspectIdentityAccess: (request: AwikiIdentityAccessInspectionRequest) => Promise<AwikiActionResult<AwikiIdentityAccessInspection>>;
|
|
6
7
|
sendRegistrationOtp: (request: AwikiRegistrationOtpRequest) => Promise<AwikiActionResult<AwikiRegistrationOtpResult>>;
|
|
7
|
-
registerIdentity: (request: AwikiRegistrationRequest) => Promise<AwikiActionResult<
|
|
8
|
-
beginDeviceJoin: () => Promise<AwikiActionResult<AwikiDeviceJoinProgress>>;
|
|
9
|
-
getDeviceJoinStatus: () => Promise<AwikiActionResult<AwikiDeviceJoinProgress | null>>;
|
|
10
|
-
cancelDeviceJoin: () => Promise<AwikiActionResult>;
|
|
8
|
+
registerIdentity: (request: AwikiRegistrationRequest) => Promise<AwikiActionResult<AwikiIdentity>>;
|
|
11
9
|
login: () => Promise<AwikiActionResult<AwikiSession>>;
|
|
12
10
|
clearLocalIdentity: () => Promise<AwikiActionResult>;
|
|
13
11
|
}
|
|
@@ -17,8 +15,9 @@ export interface AwikiIdentityAccessProps extends AwikiIdentityAccessActions {
|
|
|
17
15
|
readonly recoveryOperationId: string | null;
|
|
18
16
|
readonly recoveryProgress: AwikiRecoveryProgress | null;
|
|
19
17
|
readonly pending: boolean;
|
|
18
|
+
readonly profileName?: string | null;
|
|
19
|
+
readonly legacySharedStateDetected?: boolean;
|
|
20
20
|
readonly autoFocusHandle?: boolean;
|
|
21
|
-
readonly handleRecoveryPhoneEnabled: boolean;
|
|
22
21
|
}
|
|
23
22
|
/** Keep phone and OTP values mounted only for the duration of this explicit user flow. */
|
|
24
23
|
export declare function AwikiIdentityAccess(props: AwikiIdentityAccessProps): import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AwikiIdentityAccess.d.ts","sourceRoot":"","sources":["../../../src/client/AwikiIdentityAccess.tsx"],"names":[],"mappings":"AAAA,uFAAuF;AAIvF,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"AwikiIdentityAccess.d.ts","sourceRoot":"","sources":["../../../src/client/AwikiIdentityAccess.tsx"],"names":[],"mappings":"AAAA,uFAAuF;AAIvF,OAAO,KAAK,EACV,6BAA6B,EAC7B,oCAAoC,EACpC,aAAa,EACb,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,YAAY,EACb,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,yBAAyB,CAAA;AAGhC,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,qBAAqB,EAAE,CAAC,OAAO,EAAE,oCAAoC,KAAK,OAAO,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,CAAC,CAAA;IACnI,mBAAmB,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,CAAC,CAAA;IACrH,gBAAgB,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAA;IAClG,KAAK,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAA;IACrD,kBAAkB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;CACrD;AAED,MAAM,WAAW,wBAAyB,SAAQ,0BAA0B;IAC1E,QAAQ,CAAC,aAAa,EAAE,cAAc,GAAG,YAAY,GAAG,mBAAmB,CAAA;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACvD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,CAAA;IAC5C,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CACnC;AAiCD,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,+BAwPlE"}
|
|
@@ -22,8 +22,6 @@ export function AwikiIdentityAccess(props) {
|
|
|
22
22
|
const [signedOutAlternative, setSignedOutAlternative] = useState('none');
|
|
23
23
|
const [replaceConfirmed, setReplaceConfirmed] = useState(false);
|
|
24
24
|
const [loginFailed, setLoginFailed] = useState(false);
|
|
25
|
-
const [joinContext, setJoinContext] = useState(null);
|
|
26
|
-
const [joinProgress, setJoinProgress] = useState(null);
|
|
27
25
|
useEffect(() => {
|
|
28
26
|
if (retryDeadline === null)
|
|
29
27
|
return;
|
|
@@ -65,7 +63,30 @@ export function AwikiIdentityAccess(props) {
|
|
|
65
63
|
setRetrySeconds(cooldownSeconds);
|
|
66
64
|
setNotice(`注册验证码已发送;${cooldownSeconds} 秒后可重新获取。`);
|
|
67
65
|
};
|
|
68
|
-
const requestIdentityOtp =
|
|
66
|
+
const requestIdentityOtp = async () => {
|
|
67
|
+
setError(null);
|
|
68
|
+
setNotice(null);
|
|
69
|
+
const requestedHandle = handle.trim();
|
|
70
|
+
const requestedPhone = phone.trim();
|
|
71
|
+
const inspection = await props.inspectIdentityAccess({ handle: requestedHandle });
|
|
72
|
+
if (!inspection.ok) {
|
|
73
|
+
setError(inspection.error);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (inspection.value.status === 'existing') {
|
|
77
|
+
const factorContext = { fullHandle: inspection.value.fullHandle, phone: requestedPhone };
|
|
78
|
+
setRecoveryFactorContext(factorContext);
|
|
79
|
+
const recovery = await props.sendRecoveryOtp(factorContext);
|
|
80
|
+
if (!recovery.ok) {
|
|
81
|
+
setRecoveryFactorContext(null);
|
|
82
|
+
setError(recovery.error);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
setRecoveryFactorContext({ fullHandle: recovery.value.fullHandle, phone: requestedPhone });
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
await requestRegistrationOtp();
|
|
89
|
+
};
|
|
69
90
|
const completeRegistration = async () => {
|
|
70
91
|
if (!registrationOtpSent)
|
|
71
92
|
return;
|
|
@@ -79,77 +100,10 @@ export function AwikiIdentityAccess(props) {
|
|
|
79
100
|
setError(result.error);
|
|
80
101
|
return;
|
|
81
102
|
}
|
|
82
|
-
if (result.value.status === 'join-required') {
|
|
83
|
-
setOtp('');
|
|
84
|
-
setJoinContext({ fullHandle: result.value.fullHandle, phone: phone.trim() });
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
103
|
setPhone('');
|
|
88
104
|
setHandle('');
|
|
89
105
|
resetIdentityEntry();
|
|
90
106
|
};
|
|
91
|
-
const beginJoin = async () => {
|
|
92
|
-
setError(null);
|
|
93
|
-
const result = await props.beginDeviceJoin();
|
|
94
|
-
if (!result.ok)
|
|
95
|
-
return setError(result.error);
|
|
96
|
-
setJoinProgress(result.value);
|
|
97
|
-
};
|
|
98
|
-
const cancelJoin = async () => {
|
|
99
|
-
setError(null);
|
|
100
|
-
const result = await props.cancelDeviceJoin();
|
|
101
|
-
if (!result.ok)
|
|
102
|
-
return setError(result.error);
|
|
103
|
-
setJoinContext(null);
|
|
104
|
-
setJoinProgress(null);
|
|
105
|
-
resetIdentityEntry();
|
|
106
|
-
};
|
|
107
|
-
const chooseRecovery = async () => {
|
|
108
|
-
if (joinContext === null || !props.handleRecoveryPhoneEnabled)
|
|
109
|
-
return;
|
|
110
|
-
setError(null);
|
|
111
|
-
const discarded = await props.cancelDeviceJoin();
|
|
112
|
-
if (!discarded.ok)
|
|
113
|
-
return setError(discarded.error);
|
|
114
|
-
const recovery = await props.sendRecoveryOtp({
|
|
115
|
-
fullHandle: joinContext.fullHandle,
|
|
116
|
-
phone: joinContext.phone,
|
|
117
|
-
});
|
|
118
|
-
if (!recovery.ok)
|
|
119
|
-
return setError(recovery.error);
|
|
120
|
-
setRecoveryFactorContext({ fullHandle: recovery.value.fullHandle, phone: joinContext.phone });
|
|
121
|
-
setJoinContext(null);
|
|
122
|
-
};
|
|
123
|
-
useEffect(() => {
|
|
124
|
-
if (props.sessionStatus !== 'unregistered'
|
|
125
|
-
|| joinContext !== null
|
|
126
|
-
|| joinProgress !== null
|
|
127
|
-
|| typeof props.getDeviceJoinStatus !== 'function')
|
|
128
|
-
return;
|
|
129
|
-
let active = true;
|
|
130
|
-
void props.getDeviceJoinStatus().then((result) => {
|
|
131
|
-
if (!active)
|
|
132
|
-
return;
|
|
133
|
-
if (!result.ok)
|
|
134
|
-
setError(result.error);
|
|
135
|
-
else if (result.value !== null)
|
|
136
|
-
setJoinProgress(result.value);
|
|
137
|
-
});
|
|
138
|
-
return () => { active = false; };
|
|
139
|
-
}, [props.sessionStatus]);
|
|
140
|
-
useEffect(() => {
|
|
141
|
-
if (joinProgress === null || ['authorized', 'cancelled', 'rejected', 'expired'].includes(joinProgress.phase))
|
|
142
|
-
return;
|
|
143
|
-
const timer = setInterval(() => {
|
|
144
|
-
void props.getDeviceJoinStatus().then((result) => {
|
|
145
|
-
if (!result.ok)
|
|
146
|
-
setError(result.error);
|
|
147
|
-
else if (result.value !== null)
|
|
148
|
-
setJoinProgress(result.value);
|
|
149
|
-
});
|
|
150
|
-
}, 2_000);
|
|
151
|
-
return () => { clearInterval(timer); };
|
|
152
|
-
}, [joinProgress?.phase]);
|
|
153
107
|
const login = async () => {
|
|
154
108
|
setError(null);
|
|
155
109
|
setLoginFailed(false);
|
|
@@ -186,21 +140,6 @@ export function AwikiIdentityAccess(props) {
|
|
|
186
140
|
if (props.sessionStatus === 'recovery-required') {
|
|
187
141
|
return (_jsx(Recovery, { ...props, ...revokedHandle === undefined ? {} : { fixedHandle: revokedHandle }, requestTitle: "\u9700\u8981\u91CD\u65B0\u6062\u590D\u8EAB\u4EFD", requestDescription: "\u8FD9\u4E2A Handle \u5DF2\u5728\u53E6\u4E00\u53F0\u8BBE\u5907\u5B8C\u6210\u4E86\u66F4\u65B0\u6062\u590D\uFF0C\u5F53\u524D\u8BBE\u5907\u7684\u65E7\u51ED\u8BC1\u56E0\u6B64\u5931\u6548\u3002\u9A8C\u8BC1\u7ED1\u5B9A\u624B\u673A\u53F7\u540E\u5373\u53EF\u7EE7\u7EED\u4F7F\u7528\u672C\u673A\u6570\u636E\u3002" }));
|
|
188
142
|
}
|
|
189
|
-
if (props.sessionStatus === 'unregistered' && joinProgress !== null) {
|
|
190
|
-
const terminal = ['cancelled', 'rejected', 'expired'].includes(joinProgress.phase);
|
|
191
|
-
return (_jsx(AwikiIdentityPage, { children: _jsxs("div", { className: css.accessFlow, children: [_jsx("div", { className: css.identityIcon, children: _jsx(IconUserOutline16, { size: 24 }) }), _jsxs("div", { className: css.headingGroup, children: [_jsx("h3", { children: joinProgress.phase === 'sas-ready' ? '核对安全码' : terminal ? '设备加入已结束' : '正在加入设备' }), _jsx("p", { children: joinProgress.phase === 'sas-ready'
|
|
192
|
-
? '请在已有管理设备上核对下面的 6 位安全码;只有两端一致时才批准。'
|
|
193
|
-
: joinProgress.phase === 'rejected'
|
|
194
|
-
? '管理设备拒绝了这次加入。'
|
|
195
|
-
: joinProgress.phase === 'expired'
|
|
196
|
-
? '这次设备加入已过期,请重新验证手机号。'
|
|
197
|
-
: joinProgress.phase === 'cancelled'
|
|
198
|
-
? '这次设备加入已取消。'
|
|
199
|
-
: '请在已有 AWiki Me 或 CLI 管理设备上处理加入请求。' })] }), joinProgress.phase === 'sas-ready' && _jsx("strong", { className: css.sas, children: joinProgress.sas }), !terminal && _jsxs("small", { className: css.notice, role: "status", children: ["\u6709\u6548\u671F\u81F3 ", joinProgress.expiresAt] }), _jsx("button", { type: "button", className: terminal ? css.primary : css.secondary, disabled: props.pending, onClick: () => { void cancelJoin(); }, children: terminal ? '返回身份入口' : '取消加入' }), error !== null && _jsx("small", { className: css.error, role: "alert", children: error })] }) }));
|
|
200
|
-
}
|
|
201
|
-
if (props.sessionStatus === 'unregistered' && joinContext !== null) {
|
|
202
|
-
return (_jsx(AwikiIdentityPage, { children: _jsxs("div", { className: css.accessFlow, children: [_jsx("div", { className: css.identityIcon, children: _jsx(IconUserOutline16, { size: 24 }) }), _jsxs("div", { className: css.headingGroup, children: [_jsx("h3", { children: "\u8FD9\u4E2A Handle \u5DF2\u5B58\u5728" }), _jsx("p", { children: "\u63A8\u8350\u628A\u5F53\u524D DSH \u4F5C\u4E3A\u65B0\u8BBE\u5907\u52A0\u5165\uFF0C\u539F\u8EAB\u4EFD\u548C\u5176\u4ED6\u8BBE\u5907\u4F1A\u7EE7\u7EED\u6709\u6548\u3002" })] }), _jsx("button", { type: "button", className: css.primary, disabled: props.pending, onClick: () => { void beginJoin(); }, children: "\u52A0\u5165\u65B0\u8BBE\u5907\uFF08\u63A8\u8350\uFF09" }), props.handleRecoveryPhoneEnabled && (_jsx("button", { type: "button", className: css.dangerLink, disabled: props.pending, onClick: () => { void chooseRecovery(); }, children: "\u6062\u590D Handle\uFF08\u4F1A\u66FF\u6362 DID\uFF09" })), _jsx("button", { type: "button", className: css.secondary, disabled: props.pending, onClick: () => { void cancelJoin(); }, children: "\u53D6\u6D88" }), error !== null && _jsx("small", { className: css.error, role: "alert", children: error })] }) }));
|
|
203
|
-
}
|
|
204
143
|
if (props.sessionStatus === 'signed-out') {
|
|
205
144
|
if (signedOutAlternative === 'recover') {
|
|
206
145
|
return _jsx(Recovery, { ...props, onExit: returnToSignedOutHome, onExitLabel: "\u8FD4\u56DE\u672C\u673A\u8EAB\u4EFD" });
|
|
@@ -210,8 +149,8 @@ export function AwikiIdentityAccess(props) {
|
|
|
210
149
|
}
|
|
211
150
|
return (_jsx(AwikiIdentityPage, { children: _jsxs("div", { className: css.accessFlow, children: [_jsx("div", { className: css.identityIcon, children: _jsx(IconUserOutline16, { size: 24 }) }), _jsxs("div", { className: css.headingGroup, children: [_jsx("h3", { children: "\u5DF2\u9000\u51FA AWiki" }), _jsx("p", { children: "\u8FD9\u53F0\u8BBE\u5907\u4ECD\u5B89\u5168\u4FDD\u7559\u539F\u8EAB\u4EFD\u548C\u672C\u5730\u6D88\u606F\uFF0C\u91CD\u65B0\u8FDB\u5165\u4E0D\u4F1A\u521B\u5EFA\u65B0\u8EAB\u4EFD\u3002" })] }), _jsxs("div", { className: css.actionStack, children: [_jsx("button", { type: "button", className: css.primary, disabled: props.pending, onClick: () => { void login(); }, children: "\u91CD\u65B0\u8FDB\u5165\u672C\u673A\u8EAB\u4EFD" }), _jsx("button", { type: "button", className: css.dangerLink, disabled: props.pending, onClick: () => { setSignedOutAlternative('replace'); setLoginFailed(false); setError(null); }, children: "\u4F7F\u7528\u5176\u4ED6\u8EAB\u4EFD" })] }), error !== null && _jsx("small", { className: css.error, role: "alert", children: error }), loginFailed && (_jsxs("div", { className: css.recoveryHelp, children: [_jsx("p", { children: "\u5982\u679C\u672C\u673A\u8EAB\u4EFD\u51ED\u8BC1\u5DF2\u7ECF\u635F\u574F\u6216\u4E0D\u53EF\u7528\uFF0C\u53EF\u4EE5\u9A8C\u8BC1\u539F\u7ED1\u5B9A\u624B\u673A\u53F7\u540E\u6062\u590D\u8FD9\u4E2A\u8EAB\u4EFD\u3002" }), _jsx("button", { type: "button", className: css.secondary, disabled: props.pending, onClick: () => { setSignedOutAlternative('recover'); setError(null); }, children: "\u6062\u590D\u672C\u673A\u539F\u6709\u8EAB\u4EFD" })] }))] }) }));
|
|
212
151
|
}
|
|
213
|
-
return (_jsx(AwikiIdentityPage, { ...registrationOtpSent ? { onBack: resetIdentityEntry, backLabel: '修改身份信息' } : {}, backDisabled: props.pending, children: _jsxs("form", { className: css.accessFlow, onSubmit: (event) => { event.preventDefault(); void (registrationOtpSent ? completeRegistration() : requestIdentityOtp()); }, children: [_jsx("div", { className: css.identityIcon, children: _jsx(IconUserOutline16, { size: 24 }) }), _jsxs("div", { className: css.headingGroup, children: [_jsx("h3", { children: registrationOtpSent ? '
|
|
214
|
-
? '
|
|
215
|
-
: '输入 Handle
|
|
152
|
+
return (_jsx(AwikiIdentityPage, { ...registrationOtpSent ? { onBack: resetIdentityEntry, backLabel: '修改身份信息' } : {}, backDisabled: props.pending, children: _jsxs("form", { className: css.accessFlow, onSubmit: (event) => { event.preventDefault(); void (registrationOtpSent ? completeRegistration() : requestIdentityOtp()); }, children: [_jsx("div", { className: css.identityIcon, children: _jsx(IconUserOutline16, { size: 24 }) }), _jsxs("div", { className: css.headingGroup, children: [_jsx("h3", { children: registrationOtpSent ? '创建新身份' : '进入 AWiki' }), _jsx("p", { children: registrationOtpSent
|
|
153
|
+
? '这个 Handle 尚未注册。输入刚收到的验证码以创建身份。'
|
|
154
|
+
: '输入 Handle 和手机号。已有 Handle 会恢复身份,新 Handle 会创建身份。' })] }), props.legacySharedStateDetected === true && props.profileName != null && (_jsxs("div", { className: css.existingNotice, role: "status", children: [_jsx("strong", { children: "\u5DF2\u4E3A\u5F53\u524D Profile \u9694\u79BB AWiki \u6570\u636E" }), _jsxs("p", { children: ["\u68C0\u6D4B\u5230\u65E7\u7248\u5171\u4EAB\u6570\u636E\u3002\u4E3A\u907F\u514D\u591A\u4E2A DSH Profile \u540C\u65F6\u5360\u7528\u6570\u636E\u5E93\uFF0C\u5F53\u524D Profile\u300C", props.profileName, "\u300D\u4F7F\u7528\u72EC\u7ACB\u6570\u636E\u76EE\u5F55\uFF1B\u65E7\u6570\u636E\u672A\u5220\u9664\u6216\u590D\u5236\u3002\u8BF7\u7528\u539F Handle \u548C\u624B\u673A\u53F7\u6062\u590D\u5230\u6B64\u8BBE\u5907\u3002"] })] })), _jsxs("label", { className: css.field, children: ["Handle", _jsx("input", { value: handle, onChange: event => { setHandle(event.target.value); }, readOnly: registrationOtpSent, autoComplete: "username", placeholder: "\u4F8B\u5982 alice", autoFocus: props.autoFocusHandle })] }), _jsxs("label", { className: css.field, children: ["\u624B\u673A\u53F7", _jsx("input", { value: phone, onChange: event => { setPhone(event.target.value); }, readOnly: registrationOtpSent, type: "tel", autoComplete: "tel" })] }), registrationOtpSent && _jsxs("label", { className: css.field, children: ["\u6CE8\u518C\u9A8C\u8BC1\u7801", _jsx("input", { value: otp, onChange: event => { setOtp(event.target.value); }, inputMode: "numeric", autoComplete: "one-time-code", autoFocus: true })] }), _jsx("button", { type: "submit", className: css.primary, disabled: props.pending || handle.trim() === '' || phone.trim() === '' || (registrationOtpSent && otp.trim() === ''), children: registrationOtpSent ? '创建身份' : '获取验证码' }), registrationOtpSent && (_jsx("button", { type: "button", className: css.linkButton, disabled: props.pending || retrySeconds > 0, onClick: () => { void requestRegistrationOtp(); }, children: retrySeconds > 0 ? `${retrySeconds} 秒后重新获取` : '重新获取注册验证码' })), notice !== null && _jsx("small", { className: css.notice, role: "status", children: notice }), error !== null && _jsx("small", { className: css.error, role: "alert", children: error })] }) }));
|
|
216
155
|
}
|
|
217
156
|
//# sourceMappingURL=AwikiIdentityAccess.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AwikiIdentityAccess.js","sourceRoot":"","sources":["../../../src/client/AwikiIdentityAccess.tsx"],"names":[],"mappings":";AAAA,uFAAuF;AAEvF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAYzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAA;AAC3D,OAAO,EACL,iBAAiB,GAGlB,MAAM,wBAAyB,CAAA;AAChC,OAAO,GAAG,MAAM,kCAAkC,CAAA;AAwBlD,SAAS,QAAQ,CAAC,KAOjB;IACC,OAAO,CACL,KAAC,iBAAiB,IAChB,WAAW,EAAE,KAAK,CAAC,mBAAmB,EACtC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,EAChC,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,eAAe,EAAE,KAAK,CAAC,eAAe,EACtC,eAAe,EAAE,KAAK,CAAC,eAAe,EACtC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,EAClD,cAAc,EAAE,KAAK,CAAC,cAAc,EACpC,eAAe,EAAE,KAAK,CAAC,eAAe,KAClC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAC1D,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,KACzE,KAAK,CAAC,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,EAAE,KACpG,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,KACzE,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,KAC5E,KAAK,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE,GAClG,CACH,CAAA;AACH,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACtC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACxC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAClC,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrE,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAoC,IAAI,CAAC,CAAA;IAC3G,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACzD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACvD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACvE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACnD,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAAuB,MAAM,CAAC,CAAA;IAC9F,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAiE,IAAI,CAAC,CAAA;IACpH,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAiC,IAAI,CAAC,CAAA;IAEtF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,aAAa,KAAK,IAAI;YAAE,OAAM;QAClC,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;YAC7E,eAAe,CAAC,SAAS,CAAC,CAAA;YAC1B,IAAI,SAAS,KAAK,CAAC;gBAAE,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAC7C,CAAC,CAAA;QACD,MAAM,EAAE,CAAA;QACR,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACtC,OAAO,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,CAAA;IACvC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;IAEnB,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,MAAM,CAAC,EAAE,CAAC,CAAA;QACV,sBAAsB,CAAC,KAAK,CAAC,CAAA;QAC7B,wBAAwB,CAAC,IAAI,CAAC,CAAA;QAC9B,SAAS,CAAC,IAAI,CAAC,CAAA;QACf,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACtB,eAAe,CAAC,CAAC,CAAC,CAAA;IACpB,CAAC,CAAA;IAED,MAAM,qBAAqB,GAAG,GAAG,EAAE;QACjC,kBAAkB,EAAE,CAAA;QACpB,uBAAuB,CAAC,MAAM,CAAC,CAAA;QAC/B,mBAAmB,CAAC,KAAK,CAAC,CAAA;QAC1B,cAAc,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC,CAAA;IAED,MAAM,sBAAsB,GAAG,KAAK,IAAI,EAAE;QACxC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC9F,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtB,OAAM;QACR,CAAC;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAA;QAC9E,sBAAsB,CAAC,IAAI,CAAC,CAAA;QAC5B,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,GAAG,IAAI,CAAC,CAAA;QACrD,eAAe,CAAC,eAAe,CAAC,CAAA;QAChC,SAAS,CAAC,YAAY,eAAe,WAAW,CAAC,CAAA;IACnD,CAAC,CAAA;IAED,MAAM,kBAAkB,GAAG,sBAAsB,CAAA;IAEjD,MAAM,oBAAoB,GAAG,KAAK,IAAI,EAAE;QACtC,IAAI,CAAC,mBAAmB;YAAE,OAAM;QAChC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC;YAC1C,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;YACnB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;YACrB,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE;SAChB,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtB,OAAM;QACR,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;YAC5C,MAAM,CAAC,EAAE,CAAC,CAAA;YACV,cAAc,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YAC5E,OAAM;QACR,CAAC;QACD,QAAQ,CAAC,EAAE,CAAC,CAAA;QACZ,SAAS,CAAC,EAAE,CAAC,CAAA;QACb,kBAAkB,EAAE,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QAC3B,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE,CAAA;QAC5C,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC7C,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC5B,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAA;QAC7C,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC7C,cAAc,CAAC,IAAI,CAAC,CAAA;QACpB,eAAe,CAAC,IAAI,CAAC,CAAA;QACrB,kBAAkB,EAAE,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;QAChC,IAAI,WAAW,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,0BAA0B;YAAE,OAAM;QACrE,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAA;QAChD,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC;YAC3C,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,KAAK,EAAE,WAAW,CAAC,KAAK;SACzB,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjD,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAA;QAC7F,cAAc,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,aAAa,KAAK,cAAc;eACrC,WAAW,KAAK,IAAI;eACpB,YAAY,KAAK,IAAI;eACrB,OAAO,KAAK,CAAC,mBAAmB,KAAK,UAAU;YAAE,OAAM;QAC5D,IAAI,MAAM,GAAG,IAAI,CAAA;QACjB,KAAK,KAAK,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/C,IAAI,CAAC,MAAM;gBAAE,OAAM;YACnB,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;iBACjC,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI;gBAAE,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;QACF,OAAO,GAAG,EAAE,GAAG,MAAM,GAAG,KAAK,CAAA,CAAC,CAAC,CAAA;IACjC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAA;IAEzB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,YAAY,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;YAAE,OAAM;QACpH,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,KAAK,KAAK,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC/C,IAAI,CAAC,MAAM,CAAC,EAAE;oBAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;qBACjC,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI;oBAAE,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC/D,CAAC,CAAC,CAAA;QACJ,CAAC,EAAE,KAAK,CAAC,CAAA;QACT,OAAO,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,CAAA;IACvC,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAA;IAEzB,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;QACvB,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,cAAc,CAAC,KAAK,CAAC,CAAA;QACrB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QAClC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtB,cAAc,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;QACpC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,kBAAkB,EAAE,CAAA;QAC/C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtB,OAAM;QACR,CAAC;QACD,QAAQ,CAAC,EAAE,CAAC,CAAA;QACZ,SAAS,CAAC,EAAE,CAAC,CAAA;QACb,kBAAkB,EAAE,CAAA;QACpB,mBAAmB,CAAC,KAAK,CAAC,CAAA;QAC1B,cAAc,CAAC,KAAK,CAAC,CAAA;QACrB,uBAAuB,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC,CAAA;IAED,MAAM,qBAAqB,GAAG,KAAK,CAAC,aAAa,KAAK,YAAY,IAAI,oBAAoB,KAAK,SAAS,CAAA;IACxG,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,KAAK,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;IACtG,IAAI,KAAK,CAAC,mBAAmB,KAAK,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACjE,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,KAAK,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAA;QAChG,OAAO,CACL,KAAC,QAAQ,OACH,KAAK,EACT,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,KAAK,CAAC,aAAa,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,KACnE,qBAAqB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,KACrF,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrC,WAAW,EAAE,aAAa;gBAC1B,YAAY,EAAE,UAAU;gBACxB,kBAAkB,EAAE,2DAA2D;aAChF,GACD,CACH,CAAA;IACH,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,KAAK,mBAAmB,EAAE,CAAC;QAChD,OAAO,CACL,KAAC,QAAQ,OACH,KAAK,KACL,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EACrE,YAAY,EAAC,kDAAU,EACvB,kBAAkB,EAAC,gTAA2D,GAC9E,CACH,CAAA;IACH,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,KAAK,cAAc,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QACpE,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAClF,OAAO,CACL,KAAC,iBAAiB,cAChB,eAAK,SAAS,EAAE,GAAG,CAAC,UAAU,aAC5B,cAAK,SAAS,EAAE,GAAG,CAAC,YAAY,YAAE,KAAC,iBAAiB,IAAC,IAAI,EAAE,EAAE,GAAI,GAAM,EACvE,eAAK,SAAS,EAAE,GAAG,CAAC,YAAY,aAC9B,uBAAK,YAAY,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,GAAM,EACzF,sBAAI,YAAY,CAAC,KAAK,KAAK,WAAW;oCACpC,CAAC,CAAC,mCAAmC;oCACrC,CAAC,CAAC,YAAY,CAAC,KAAK,KAAK,UAAU;wCACjC,CAAC,CAAC,cAAc;wCAChB,CAAC,CAAC,YAAY,CAAC,KAAK,KAAK,SAAS;4CAChC,CAAC,CAAC,qBAAqB;4CACvB,CAAC,CAAC,YAAY,CAAC,KAAK,KAAK,WAAW;gDAClC,CAAC,CAAC,YAAY;gDACd,CAAC,CAAC,kCAAkC,GAAK,IAC7C,EACL,YAAY,CAAC,KAAK,KAAK,WAAW,IAAI,iBAAQ,SAAS,EAAE,GAAG,CAAC,GAAG,YAAG,YAAY,CAAC,GAAG,GAAU,EAC7F,CAAC,QAAQ,IAAI,iBAAO,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAC,QAAQ,0CAAO,YAAY,CAAC,SAAS,IAAS,EAC/F,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,UAAU,EAAE,CAAA,CAAC,CAAC,YACnI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GACtB,EACR,KAAK,KAAK,IAAI,IAAI,gBAAO,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,YAAE,KAAK,GAAS,IACxE,GACY,CACrB,CAAA;IACH,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,KAAK,cAAc,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACnE,OAAO,CACL,KAAC,iBAAiB,cAChB,eAAK,SAAS,EAAE,GAAG,CAAC,UAAU,aAC5B,cAAK,SAAS,EAAE,GAAG,CAAC,YAAY,YAAE,KAAC,iBAAiB,IAAC,IAAI,EAAE,EAAE,GAAI,GAAM,EACvE,eAAK,SAAS,EAAE,GAAG,CAAC,YAAY,aAC9B,kEAAsB,EACtB,kMAAuC,IACnC,EACN,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,SAAS,EAAE,CAAA,CAAC,CAAC,uEAAoB,EAC7H,KAAK,CAAC,0BAA0B,IAAI,CACnC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,cAAc,EAAE,CAAA,CAAC,CAAC,sEAA6B,CAChJ,EACD,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,UAAU,EAAE,CAAA,CAAC,CAAC,6BAAa,EACzH,KAAK,KAAK,IAAI,IAAI,gBAAO,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,YAAE,KAAK,GAAS,IACxE,GACY,CACrB,CAAA;IACH,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,KAAK,YAAY,EAAE,CAAC;QACzC,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO,KAAC,QAAQ,OAAK,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,WAAW,EAAC,sCAAQ,GAAG,CAAA;QACpF,CAAC;QACD,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO,CACL,KAAC,iBAAiB,IAAC,MAAM,EAAE,qBAAqB,EAAE,SAAS,EAAC,sCAAQ,EAAC,YAAY,EAAE,KAAK,CAAC,OAAO,YAC9F,eAAK,SAAS,EAAE,GAAG,CAAC,UAAU,aAC5B,cAAK,SAAS,EAAE,GAAG,CAAC,YAAY,YAAE,KAAC,iBAAiB,IAAC,IAAI,EAAE,EAAE,GAAI,GAAM,EACvE,eAAK,SAAS,EAAE,GAAG,CAAC,YAAY,aAC9B,gEAAe,EACf,kLAAsC,IAClC,EACN,eAAK,SAAS,EAAE,GAAG,CAAC,WAAW,aAC7B,sIAAkC,EAClC,6RAAkD,EAClD,iBAAO,SAAS,EAAE,GAAG,CAAC,YAAY,aAChC,gBAAO,IAAI,EAAC,UAAU,EAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,CAAC,CAAC,GAAI,EACtH,kHAA2B,IACrB,IACJ,EACN,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,kBAAkB,EAAE,CAAA,CAAC,CAAC,uEAEpI,EACR,KAAK,KAAK,IAAI,IAAI,gBAAO,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,YAAE,KAAK,GAAS,IACxE,GACY,CACrB,CAAA;QACH,CAAC;QACD,OAAO,CACL,KAAC,iBAAiB,cAChB,eAAK,SAAS,EAAE,GAAG,CAAC,UAAU,aAC5B,cAAK,SAAS,EAAE,GAAG,CAAC,YAAY,YAAE,KAAC,iBAAiB,IAAC,IAAI,EAAE,EAAE,GAAI,GAAM,EACvE,eAAK,SAAS,EAAE,GAAG,CAAC,YAAY,aAC9B,oDAAkB,EAClB,+MAAqC,IACjC,EACN,eAAK,SAAS,EAAE,GAAG,CAAC,WAAW,aAC7B,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,KAAK,EAAE,CAAA,CAAC,CAAC,iEAE7F,EACT,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,qDAE7J,IACL,EACL,KAAK,KAAK,IAAI,IAAI,gBAAO,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,YAAE,KAAK,GAAS,EAC3E,WAAW,IAAI,CACd,eAAK,SAAS,EAAE,GAAG,CAAC,YAAY,aAC9B,6OAA0C,EAC1C,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,iEAErI,IACL,CACP,IACG,GACY,CACrB,CAAA;IACH,CAAC;IAED,OAAO,CACL,KAAC,iBAAiB,OACZ,mBAAmB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAClF,YAAY,EAAE,KAAK,CAAC,OAAO,YAE3B,gBAAM,SAAS,EAAE,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAA,CAAC,CAAC,aAC1J,cAAK,SAAS,EAAE,GAAG,CAAC,YAAY,YAAE,KAAC,iBAAiB,IAAC,IAAI,EAAE,EAAE,GAAI,GAAM,EACvE,eAAK,SAAS,EAAE,GAAG,CAAC,YAAY,aAC9B,uBAAK,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,GAAM,EACpD,sBAAI,mBAAmB;gCACrB,CAAC,CAAC,6CAA6C;gCAC/C,CAAC,CAAC,2BAA2B,GAAK,IAChC,EACN,iBAAO,SAAS,EAAE,GAAG,CAAC,KAAK,uBAAQ,gBAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,YAAY,EAAC,UAAU,EAAC,WAAW,EAAC,oBAAU,EAAC,SAAS,EAAE,KAAK,CAAC,eAAe,GAAI,IAAQ,EACzO,iBAAO,SAAS,EAAE,GAAG,CAAC,KAAK,mCAAK,gBAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAC,KAAK,EAAC,YAAY,EAAC,KAAK,GAAG,IAAQ,EAChL,mBAAmB,IAAI,iBAAO,SAAS,EAAE,GAAG,CAAC,KAAK,+CAAO,gBAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,EAAE,SAAS,EAAC,SAAS,EAAC,YAAY,EAAC,eAAe,EAAC,SAAS,SAAG,IAAQ,EACrM,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,mBAAmB,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,YAC/J,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAC9B,EACR,mBAAmB,IAAI,CACtB,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,IAAI,YAAY,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,sBAAsB,EAAE,CAAA,CAAC,CAAC,YAC3I,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,SAAS,CAAC,CAAC,CAAC,WAAW,GACnD,CACV,EACA,MAAM,KAAK,IAAI,IAAI,gBAAO,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAC,QAAQ,YAAE,MAAM,GAAS,EAC/E,KAAK,KAAK,IAAI,IAAI,gBAAO,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,YAAE,KAAK,GAAS,IACvE,GACW,CACrB,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"AwikiIdentityAccess.js","sourceRoot":"","sources":["../../../src/client/AwikiIdentityAccess.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { type ReactNode } from 'react';
|
|
3
3
|
import type { AwikiDid } from '@awiki/dsh-plugin/types';
|
|
4
4
|
import type { AwikiOverlayProps } from './slots.ts';
|
|
5
|
-
interface AwikiMailProps extends Pick<AwikiOverlayProps, 'getMailAccount' | 'listMailInbox' | 'readMail' | 'markMailRead' | 'sendMail'> {
|
|
5
|
+
interface AwikiMailProps extends Pick<AwikiOverlayProps, 'getConfig' | 'getMailAccount' | 'listMailInbox' | 'readMail' | 'markMailRead' | 'sendMail' | 'downloadMailAttachment'> {
|
|
6
6
|
readonly active: boolean;
|
|
7
7
|
readonly cacheOwner: AwikiDid;
|
|
8
8
|
readonly identityCard: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AwikiMail.d.ts","sourceRoot":"","sources":["../../../src/client/AwikiMail.tsx"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,OAAO,EAAwC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAa5E,OAAO,KAAK,EACV,QAAQ,
|
|
1
|
+
{"version":3,"file":"AwikiMail.d.ts","sourceRoot":"","sources":["../../../src/client/AwikiMail.tsx"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,OAAO,EAAwC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAa5E,OAAO,KAAK,EACV,QAAQ,EAMT,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAkBnD,UAAU,cAAe,SAAQ,IAAI,CAAC,iBAAiB,EACrD,WAAW,GAAG,gBAAgB,GAAG,eAAe,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,wBAAwB,CAAC;IACvH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAA;IAC7B,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACtD;AAgKD,2FAA2F;AAC3F,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BA2mB9C"}
|
|
@@ -3,6 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
3
3
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import { Button, IconChevronLeftOutline14, IconEditOutline16, IconFolderOpenOutline16, IconLoadingOutline16, IconPaperclipOutline16, IconRefreshOutline14, IconSendOutline16, IconWarningOutline16, Modal, } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
5
5
|
import { readMailFolderCache, readMailListCache, writeMailFolderCache, writeMailListCache, } from "./mail-list-cache.js";
|
|
6
|
+
import { downloadableMailAttachment, downloadAndSaveMailAttachment, encodeMailAttachments, selectMailAttachments, } from "./mail-attachment.js";
|
|
6
7
|
import css from './AwikiMail.module.css';
|
|
7
8
|
const MAIL_NOTICE_AUTO_DISMISS_MS = 2_400;
|
|
8
9
|
const MAIL_FOLDER_COPY = {
|
|
@@ -32,6 +33,13 @@ function splitAddresses(raw) {
|
|
|
32
33
|
function utf8Bytes(value) {
|
|
33
34
|
return new TextEncoder().encode(value).byteLength;
|
|
34
35
|
}
|
|
36
|
+
function displayBytes(value) {
|
|
37
|
+
if (value < 1_024)
|
|
38
|
+
return `${value} bytes`;
|
|
39
|
+
if (value < 1_024 * 1_024)
|
|
40
|
+
return `${(value / 1_024).toFixed(value < 10 * 1_024 ? 1 : 0)} KiB`;
|
|
41
|
+
return `${(value / (1_024 * 1_024)).toFixed(value < 10 * 1_024 * 1_024 ? 1 : 0)} MiB`;
|
|
42
|
+
}
|
|
35
43
|
function browserLocalStorage() {
|
|
36
44
|
try {
|
|
37
45
|
return window.localStorage;
|
|
@@ -113,6 +121,10 @@ export function AwikiMail(props) {
|
|
|
113
121
|
const [cc, setCc] = useState('');
|
|
114
122
|
const [subject, setSubject] = useState('');
|
|
115
123
|
const [bodyText, setBodyText] = useState('');
|
|
124
|
+
const [attachmentLimits, setAttachmentLimits] = useState(null);
|
|
125
|
+
const [attachments, setAttachments] = useState([]);
|
|
126
|
+
const [attachmentError, setAttachmentError] = useState(null);
|
|
127
|
+
const [downloadStates, setDownloadStates] = useState({});
|
|
116
128
|
const [composeError, setComposeError] = useState(null);
|
|
117
129
|
const [confirmOpen, setConfirmOpen] = useState(false);
|
|
118
130
|
const [discardOpen, setDiscardOpen] = useState(false);
|
|
@@ -123,6 +135,8 @@ export function AwikiMail(props) {
|
|
|
123
135
|
const loadGeneration = useRef(0);
|
|
124
136
|
const detailGeneration = useRef(0);
|
|
125
137
|
const noticeRevision = useRef(0);
|
|
138
|
+
const attachmentRevision = useRef(0);
|
|
139
|
+
const fileInput = useRef(null);
|
|
126
140
|
const visibleUnreadCount = useMemo(() => items.reduce((total, item) => total + (item.unread ? 1 : 0), 0), [items]);
|
|
127
141
|
useEffect(() => { props.onUnreadCountChange(inboxUnreadCount); }, [props.onUnreadCountChange, inboxUnreadCount]);
|
|
128
142
|
const showNotice = (text) => {
|
|
@@ -170,8 +184,17 @@ export function AwikiMail(props) {
|
|
|
170
184
|
setListError(null);
|
|
171
185
|
setNotice(null);
|
|
172
186
|
const cacheVisible = hydrateListCache(requestedFolder);
|
|
187
|
+
const configRequest = props.getConfig();
|
|
173
188
|
const accountRequest = props.getMailAccount();
|
|
174
189
|
const inboxRequest = props.listMailInbox({ folder: requestedFolder, unreadOnly: false, limit: 20, offset: 0 });
|
|
190
|
+
const configResult = await configRequest;
|
|
191
|
+
if (generation !== loadGeneration.current)
|
|
192
|
+
return;
|
|
193
|
+
setAttachmentLimits(configResult.ok ? {
|
|
194
|
+
maxCount: configResult.value.mailAttachmentMaxCount,
|
|
195
|
+
maxBytes: configResult.value.mailAttachmentMaxBytes,
|
|
196
|
+
totalMaxBytes: configResult.value.mailAttachmentTotalMaxBytes,
|
|
197
|
+
} : null);
|
|
175
198
|
const accountResult = await accountRequest;
|
|
176
199
|
if (generation !== loadGeneration.current)
|
|
177
200
|
return;
|
|
@@ -223,6 +246,7 @@ export function AwikiMail(props) {
|
|
|
223
246
|
setSelectedId(null);
|
|
224
247
|
setMessage(null);
|
|
225
248
|
setDetailError(null);
|
|
249
|
+
setDownloadStates({});
|
|
226
250
|
const cached = hydrateListCache(nextFolder);
|
|
227
251
|
if (!cached)
|
|
228
252
|
applyListPage(nextFolder, { items: [], hasMore: false });
|
|
@@ -234,6 +258,7 @@ export function AwikiMail(props) {
|
|
|
234
258
|
setCompose(false);
|
|
235
259
|
setSelectedId(summary.id);
|
|
236
260
|
setMessage(null);
|
|
261
|
+
setDownloadStates({});
|
|
237
262
|
setDetailLoading(true);
|
|
238
263
|
setDetailError(null);
|
|
239
264
|
setNotice(null);
|
|
@@ -308,6 +333,14 @@ export function AwikiMail(props) {
|
|
|
308
333
|
showNotice(result.value.updated > 0 ? '已标为已读。' : '该邮件已经是已读状态。');
|
|
309
334
|
};
|
|
310
335
|
const requestSend = () => {
|
|
336
|
+
if (attachmentError !== null) {
|
|
337
|
+
setComposeError(attachmentError);
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
if (attachments.length > 0 && attachmentLimits === null) {
|
|
341
|
+
setComposeError('邮件附件限制暂不可用,请稍后刷新邮箱再试。');
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
311
344
|
const validated = validateDraft(to, cc, subject, bodyText);
|
|
312
345
|
if (!validated.ok) {
|
|
313
346
|
setComposeError(validated.error);
|
|
@@ -321,6 +354,35 @@ export function AwikiMail(props) {
|
|
|
321
354
|
setCc('');
|
|
322
355
|
setSubject('');
|
|
323
356
|
setBodyText('');
|
|
357
|
+
setAttachments([]);
|
|
358
|
+
setAttachmentError(null);
|
|
359
|
+
if (fileInput.current !== null)
|
|
360
|
+
fileInput.current.value = '';
|
|
361
|
+
setComposeError(null);
|
|
362
|
+
};
|
|
363
|
+
const chooseAttachments = (files) => {
|
|
364
|
+
if (files === null || files.length === 0)
|
|
365
|
+
return;
|
|
366
|
+
if (attachmentLimits === null) {
|
|
367
|
+
setAttachmentError('邮件附件限制暂不可用,请稍后刷新邮箱再试。');
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
try {
|
|
371
|
+
const next = selectMailAttachments(attachments, files, attachmentLimits, () => {
|
|
372
|
+
attachmentRevision.current += 1;
|
|
373
|
+
return `mail-attachment-${attachmentRevision.current}`;
|
|
374
|
+
});
|
|
375
|
+
setAttachments(next);
|
|
376
|
+
setAttachmentError(null);
|
|
377
|
+
setComposeError(null);
|
|
378
|
+
}
|
|
379
|
+
catch (error) {
|
|
380
|
+
setAttachmentError(error instanceof TypeError ? error.message : '无法选择这些附件。');
|
|
381
|
+
}
|
|
382
|
+
};
|
|
383
|
+
const removeAttachment = (id) => {
|
|
384
|
+
setAttachments(current => current.filter(attachment => attachment.id !== id));
|
|
385
|
+
setAttachmentError(null);
|
|
324
386
|
setComposeError(null);
|
|
325
387
|
};
|
|
326
388
|
const confirmSend = async () => {
|
|
@@ -330,12 +392,30 @@ export function AwikiMail(props) {
|
|
|
330
392
|
setComposeError(validated.error);
|
|
331
393
|
return;
|
|
332
394
|
}
|
|
395
|
+
if (attachmentError !== null || (attachments.length > 0 && attachmentLimits === null)) {
|
|
396
|
+
setConfirmOpen(false);
|
|
397
|
+
setComposeError(attachmentError ?? '邮件附件限制暂不可用,请稍后刷新邮箱再试。');
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
333
400
|
setSending(true);
|
|
401
|
+
let encodedAttachments = [];
|
|
402
|
+
try {
|
|
403
|
+
if (attachments.length > 0) {
|
|
404
|
+
encodedAttachments = await encodeMailAttachments(attachments, attachmentLimits);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
catch (error) {
|
|
408
|
+
setSending(false);
|
|
409
|
+
setConfirmOpen(false);
|
|
410
|
+
setComposeError(error instanceof TypeError ? error.message : '无法读取附件,请重新选择后再试。');
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
334
413
|
const request = {
|
|
335
414
|
to: validated.value.to,
|
|
336
415
|
cc: validated.value.cc,
|
|
337
416
|
subject: validated.value.subject,
|
|
338
417
|
bodyText: validated.value.bodyText,
|
|
418
|
+
...(encodedAttachments.length === 0 ? {} : { attachments: encodedAttachments }),
|
|
339
419
|
};
|
|
340
420
|
const result = await props.sendMail(request);
|
|
341
421
|
setSending(false);
|
|
@@ -348,7 +428,7 @@ export function AwikiMail(props) {
|
|
|
348
428
|
setComposeError('邮件服务没有接受本次发送,请检查内容后重试。');
|
|
349
429
|
return;
|
|
350
430
|
}
|
|
351
|
-
const
|
|
431
|
+
const acceptedWithWarning = result.value.warnings.length > 0;
|
|
352
432
|
clearDraft();
|
|
353
433
|
setFolder('sent');
|
|
354
434
|
const storage = browserLocalStorage();
|
|
@@ -362,9 +442,11 @@ export function AwikiMail(props) {
|
|
|
362
442
|
setCompose(false);
|
|
363
443
|
setPane('list');
|
|
364
444
|
void refresh('sent');
|
|
365
|
-
showNotice(
|
|
445
|
+
showNotice(acceptedWithWarning
|
|
446
|
+
? `邮件已被服务接受,但返回 ${result.value.warnings.length} 条本地记录提示,请勿立即重复发送。`
|
|
447
|
+
: '邮件已发送。');
|
|
366
448
|
};
|
|
367
|
-
const dirty = to.trim() !== '' || cc.trim() !== '' || subject.trim() !== '' || bodyText.trim() !== '';
|
|
449
|
+
const dirty = to.trim() !== '' || cc.trim() !== '' || subject.trim() !== '' || bodyText.trim() !== '' || attachments.length > 0;
|
|
368
450
|
const cancelCompose = () => {
|
|
369
451
|
if (dirty) {
|
|
370
452
|
setDiscardOpen(true);
|
|
@@ -374,11 +456,53 @@ export function AwikiMail(props) {
|
|
|
374
456
|
setPane('list');
|
|
375
457
|
};
|
|
376
458
|
const selectedSummary = items.find(item => item.id === selectedId);
|
|
377
|
-
|
|
459
|
+
const attachmentTotalBytes = attachments.reduce((sum, attachment) => sum + attachment.sizeBytes, 0);
|
|
460
|
+
const downloadAttachment = async (attachment) => {
|
|
461
|
+
if (message === null || attachmentLimits === null)
|
|
462
|
+
return;
|
|
463
|
+
const expected = downloadableMailAttachment(attachment, attachmentLimits.maxBytes);
|
|
464
|
+
if (expected === undefined || downloadStates[attachment.index]?.status === 'loading')
|
|
465
|
+
return;
|
|
466
|
+
const generation = detailGeneration.current;
|
|
467
|
+
const localMessageId = message.summary.id;
|
|
468
|
+
setDownloadStates(current => ({ ...current, [attachment.index]: { status: 'loading' } }));
|
|
469
|
+
try {
|
|
470
|
+
const saved = await downloadAndSaveMailAttachment(props.downloadMailAttachment, { localMessageId, attachmentIndex: attachment.index }, expected, attachmentLimits.maxBytes, () => generation === detailGeneration.current && message.summary.id === localMessageId);
|
|
471
|
+
if (!saved)
|
|
472
|
+
return;
|
|
473
|
+
setDownloadStates(current => {
|
|
474
|
+
const next = { ...current };
|
|
475
|
+
delete next[attachment.index];
|
|
476
|
+
return next;
|
|
477
|
+
});
|
|
478
|
+
showNotice(`已开始下载 ${expected.fileName}。`);
|
|
479
|
+
}
|
|
480
|
+
catch (error) {
|
|
481
|
+
if (generation !== detailGeneration.current || message.summary.id !== localMessageId)
|
|
482
|
+
return;
|
|
483
|
+
setDownloadStates(current => ({
|
|
484
|
+
...current,
|
|
485
|
+
[attachment.index]: {
|
|
486
|
+
status: 'error',
|
|
487
|
+
error: error instanceof TypeError ? error.message : '无法保存附件,请重试。',
|
|
488
|
+
},
|
|
489
|
+
}));
|
|
490
|
+
}
|
|
491
|
+
};
|
|
492
|
+
return (_jsxs("div", { className: css.mail, "data-pane": pane, "data-detail-active": compose || selectedId !== null || undefined, children: [_jsxs("aside", { className: css.sidebar, "aria-label": "\u90AE\u7BB1\u5BFC\u822A", children: [props.identityCard, props.modeTabs, _jsxs("div", { className: css.accountCard, children: [_jsx("small", { children: "\u90AE\u7BB1\u8D26\u53F7" }), _jsx("strong", { children: account?.displayName ?? account?.mailboxAddress ?? (listLoading ? '正在加载…' : '暂不可用') }), account?.mailboxAddress !== undefined && account.displayName !== undefined && _jsx("span", { children: account.mailboxAddress }), account?.status !== undefined && _jsx("span", { className: css.accountStatus, children: account.status })] }), _jsxs("nav", { className: css.folderNav, "aria-label": "\u90AE\u4EF6\u6587\u4EF6\u5939", children: [_jsxs("button", { type: "button", "data-active": folder === 'inbox' || undefined, onClick: () => { selectFolder('inbox'); }, children: [_jsx(IconFolderOpenOutline16, { size: 16 }), _jsx("span", { children: "\u6536\u4EF6\u7BB1" }), inboxUnreadCount > 0 && _jsx("small", { children: inboxUnreadCount > 99 ? '99+' : inboxUnreadCount })] }), _jsxs("div", { className: css.folderRow, "data-active": folder === 'sent' || undefined, children: [_jsxs("button", { type: "button", className: css.folderSelect, onClick: () => { selectFolder('sent'); }, children: [_jsx(IconSendOutline16, { size: 16 }), _jsx("span", { children: "\u53D1\u4EF6\u7BB1" })] }), _jsx("button", { type: "button", className: css.composeIconButton, "aria-label": "\u5199\u90AE\u4EF6", title: "\u5199\u90AE\u4EF6", onClick: startCompose, children: _jsx(IconEditOutline16, { size: 16 }) })] })] })] }), _jsxs("section", { className: css.mailList, "aria-label": MAIL_FOLDER_COPY[folder].title, children: [_jsxs("header", { className: css.listHeader, children: [_jsx("button", { type: "button", className: css.listBack, "aria-label": "\u8FD4\u56DE\u90AE\u7BB1\u5BFC\u822A", onClick: () => { setPane('folders'); }, children: _jsx(IconChevronLeftOutline14, { size: 14 }) }), _jsxs("div", { children: [_jsx("strong", { children: MAIL_FOLDER_COPY[folder].title }), _jsxs("small", { children: [items.length, " \u5C01\u90AE\u4EF6", folder === 'inbox' && visibleUnreadCount > 0 ? ` · ${visibleUnreadCount} 封未读` : ''] })] }), _jsx("button", { type: "button", "aria-label": `刷新${MAIL_FOLDER_COPY[folder].title}`, disabled: listLoading, onClick: () => { void refresh(); }, children: listLoading ? _jsx(IconLoadingOutline16, { size: 15 }) : _jsx(IconRefreshOutline14, { size: 15 }) })] }), listError !== null && _jsxs("div", { className: css.inlineError, role: "alert", children: [listError, _jsx("button", { type: "button", onClick: () => { void refresh(); }, children: "\u91CD\u8BD5" })] }), _jsxs("div", { className: css.rows, children: [items.map(item => (_jsx(MailRow, { summary: item, folder: folder, active: item.id === selectedId, onSelect: () => { void selectMail(item); } }, item.id))), items.length === 0 && !listLoading && listError === null && (_jsxs("div", { className: css.emptyState, children: [_jsx(IconFolderOpenOutline16, { size: 26 }), _jsx("p", { children: MAIL_FOLDER_COPY[folder].empty })] }))] }), listLoading && items.length === 0 && _jsxs("div", { className: css.loadingState, role: "status", children: [_jsx(IconLoadingOutline16, { size: 18 }), "\u6B63\u5728\u52A0\u8F7D\u90AE\u4EF6\u2026"] }), hasMore && _jsx("button", { type: "button", className: css.loadMore, disabled: listLoading, onClick: () => { void loadMore(); }, children: listLoading ? '正在加载…' : '加载更多邮件' })] }), _jsx("section", { className: css.mailDetail, "aria-label": compose ? '写邮件' : '邮件详情', children: compose ? (_jsxs("form", { className: css.composer, onSubmit: (event) => { event.preventDefault(); requestSend(); }, children: [_jsxs("header", { className: css.detailHeader, children: [_jsx("button", { type: "button", className: css.detailBack, "aria-label": `返回${MAIL_FOLDER_COPY[folder].title}`, onClick: cancelCompose, children: _jsx(IconChevronLeftOutline14, { size: 14 }) }), _jsxs("div", { children: [_jsx("strong", { children: "\u5199\u90AE\u4EF6" }), _jsx("small", { children: "\u53D1\u9001\u7EAF\u6587\u672C\u90AE\u4EF6\uFF0C\u53EF\u6DFB\u52A0\u9644\u4EF6" })] })] }), _jsxs("div", { className: css.composeFields, children: [_jsxs("label", { children: ["\u6536\u4EF6\u4EBA", _jsx("textarea", { value: to, rows: 1, disabled: sending, autoFocus: true, placeholder: "alice@example.com\uFF0C\u53EF\u7528\u9017\u53F7\u6216\u6362\u884C\u5206\u9694", onChange: (event) => { setTo(event.target.value); setComposeError(null); } })] }), _jsxs("label", { children: ["\u6284\u9001", _jsx("textarea", { value: cc, rows: 1, disabled: sending, placeholder: "\u9009\u586B", onChange: (event) => { setCc(event.target.value); setComposeError(null); } })] }), _jsxs("label", { children: ["\u4E3B\u9898", _jsx("input", { value: subject, disabled: sending, placeholder: "\u90AE\u4EF6\u4E3B\u9898", onChange: (event) => { setSubject(event.target.value); setComposeError(null); } })] }), _jsxs("label", { className: css.bodyField, children: ["\u6B63\u6587", _jsx("textarea", { value: bodyText, disabled: sending, placeholder: "\u8F93\u5165\u7EAF\u6587\u672C\u90AE\u4EF6\u6B63\u6587", onChange: (event) => { setBodyText(event.target.value); setComposeError(null); } })] }), _jsxs("section", { className: css.composeAttachments, "aria-label": "\u90AE\u4EF6\u9644\u4EF6", children: [_jsxs("div", { className: css.attachmentPickerRow, children: [_jsxs("button", { type: "button", className: css.attachmentPicker, disabled: sending || attachmentLimits === null || attachmentLimits.maxCount === 0, onClick: () => { fileInput.current?.click(); }, children: [_jsx(IconPaperclipOutline16, { size: 14 }), "\u6DFB\u52A0\u9644\u4EF6"] }), _jsx("input", { ref: fileInput, className: css.attachmentInput, type: "file", multiple: true, "aria-label": "\u9009\u62E9\u90AE\u4EF6\u9644\u4EF6", disabled: sending || attachmentLimits === null || attachmentLimits.maxCount === 0, onChange: (event) => {
|
|
493
|
+
chooseAttachments(event.currentTarget.files);
|
|
494
|
+
event.currentTarget.value = '';
|
|
495
|
+
} }), _jsx("small", { children: attachmentLimits === null
|
|
496
|
+
? '附件限制暂不可用'
|
|
497
|
+
: `最多 ${attachmentLimits.maxCount} 个 · 单个 ${displayBytes(attachmentLimits.maxBytes)} · 总计 ${displayBytes(attachmentLimits.totalMaxBytes)}` })] }), attachments.length > 0 && (_jsxs("div", { className: css.selectedAttachments, children: [attachments.map(attachment => (_jsxs("div", { children: [_jsx(IconPaperclipOutline16, { size: 15 }), _jsxs("span", { children: [_jsx("strong", { children: attachment.fileName }), _jsxs("small", { children: [attachment.contentType, " \u00B7 ", displayBytes(attachment.sizeBytes)] })] }), _jsx("button", { type: "button", disabled: sending, "aria-label": `移除附件 ${attachment.fileName}`, onClick: () => { removeAttachment(attachment.id); }, children: "\u79FB\u9664" })] }, attachment.id))), _jsxs("p", { children: [attachments.length, " \u4E2A\u9644\u4EF6 \u00B7 \u5171 ", displayBytes(attachmentTotalBytes)] })] }))] }), attachmentError !== null && _jsx("p", { className: css.composeError, role: "alert", children: attachmentError }), composeError !== null && _jsx("p", { className: css.composeError, role: "alert", children: composeError })] }), _jsxs("footer", { className: css.composeFooter, children: [_jsx("button", { type: "button", className: css.cancelButton, disabled: sending, onClick: cancelCompose, children: "\u53D6\u6D88" }), _jsxs("button", { type: "submit", className: css.sendButton, disabled: sending || attachmentError !== null, children: [_jsx(IconSendOutline16, { size: 15 }), "\u53D1\u9001"] })] })] })) : selectedId === null ? (_jsxs("div", { className: css.detailEmpty, children: [_jsx(IconFolderOpenOutline16, { size: 32 }), _jsx("p", { children: "\u9009\u62E9\u4E00\u5C01\u90AE\u4EF6\u67E5\u770B\u5185\u5BB9\u3002" }), _jsx("button", { type: "button", onClick: startCompose, children: "\u5199\u90AE\u4EF6" })] })) : (_jsxs(_Fragment, { children: [_jsxs("header", { className: css.detailHeader, children: [_jsx("button", { type: "button", className: css.detailBack, "aria-label": `返回${MAIL_FOLDER_COPY[folder].title}`, onClick: () => { detailGeneration.current += 1; setSelectedId(null); setMessage(null); setDownloadStates({}); setPane('list'); }, children: _jsx(IconChevronLeftOutline14, { size: 14 }) }), _jsxs("div", { children: [_jsx("strong", { children: selectedSummary?.subject ?? '邮件详情' }), _jsx("small", { children: selectedSummary === undefined ? '' : folder === 'inbox' ? participant(selectedSummary.from, '未知发件人') : participant(selectedSummary.to, '未知收件人') })] }), folder === 'inbox' && message?.summary.unread === true && _jsx("button", { type: "button", className: css.markReadButton, disabled: markingRead, onClick: () => { void markRead(); }, children: markingRead ? '处理中…' : '标为已读' })] }), detailLoading && _jsxs("div", { className: css.loadingState, role: "status", children: [_jsx(IconLoadingOutline16, { size: 18 }), "\u6B63\u5728\u8BFB\u53D6\u90AE\u4EF6\u2026"] }), detailError !== null && _jsx("div", { className: css.detailError, role: "alert", children: detailError }), message !== null && (_jsxs("article", { className: css.messageBody, children: [_jsxs("div", { className: css.messageMeta, children: [_jsx("h3", { children: message.summary.subject || '(无主题)' }), _jsx("time", { children: mailTime(folder === 'inbox'
|
|
378
498
|
? message.summary.receivedAt ?? message.summary.sentAt
|
|
379
|
-
: message.summary.sentAt ?? message.summary.receivedAt) }), _jsxs("dl", { children: [_jsxs("div", { children: [_jsx("dt", { children: "\u53D1\u4EF6\u4EBA" }), _jsx("dd", { children: participant(message.summary.from, '未知发件人') })] }), _jsxs("div", { children: [_jsx("dt", { children: "\u6536\u4EF6\u4EBA" }), _jsx("dd", { children: recipient(message.summary, folder, account) })] }), message.summary.cc.length > 0 && _jsxs("div", { children: [_jsx("dt", { children: "\u6284\u9001" }), _jsx("dd", { children: participant(message.summary.cc, '') })] })] })] }), _jsxs("div", { className: css.untrustedNotice, children: [_jsx(IconWarningOutline16, { size: 15 }), folder === 'inbox' ? '邮件内容来自外部,仅按纯文本显示。' : '已发送邮件仅按纯文本显示。'] }), _jsx("div", { className: css.plainBody, children: message.bodyText ?? (message.hasHtmlBody ? '这封邮件仅包含 HTML 内容,出于安全原因未直接显示。' : '这封邮件没有可显示的纯文本正文。') }), message.bodyTruncated && _jsx("p", { className: css.truncatedNotice, children: "\u6B63\u6587\u5185\u5BB9\u5DF2\u7531\u670D\u52A1\u7AEF\u622A\u65AD\u3002" }), message.attachments.length > 0 && (_jsxs("section", { className: css.attachments, "aria-label": "\
|
|
499
|
+
: message.summary.sentAt ?? message.summary.receivedAt) }), _jsxs("dl", { children: [_jsxs("div", { children: [_jsx("dt", { children: "\u53D1\u4EF6\u4EBA" }), _jsx("dd", { children: participant(message.summary.from, '未知发件人') })] }), _jsxs("div", { children: [_jsx("dt", { children: "\u6536\u4EF6\u4EBA" }), _jsx("dd", { children: recipient(message.summary, folder, account) })] }), message.summary.cc.length > 0 && _jsxs("div", { children: [_jsx("dt", { children: "\u6284\u9001" }), _jsx("dd", { children: participant(message.summary.cc, '') })] })] })] }), _jsxs("div", { className: css.untrustedNotice, children: [_jsx(IconWarningOutline16, { size: 15 }), folder === 'inbox' ? '邮件内容来自外部,仅按纯文本显示。' : '已发送邮件仅按纯文本显示。'] }), _jsx("div", { className: css.plainBody, children: message.bodyText ?? (message.hasHtmlBody ? '这封邮件仅包含 HTML 内容,出于安全原因未直接显示。' : '这封邮件没有可显示的纯文本正文。') }), message.bodyTruncated && _jsx("p", { className: css.truncatedNotice, children: "\u6B63\u6587\u5185\u5BB9\u5DF2\u7531\u670D\u52A1\u7AEF\u622A\u65AD\u3002" }), message.attachments.length > 0 && (_jsxs("section", { className: css.attachments, "aria-label": "\u90AE\u4EF6\u9644\u4EF6", children: [_jsx("h4", { children: "\u9644\u4EF6" }), message.attachments.map(attachment => {
|
|
500
|
+
const downloadable = attachmentLimits === null ? undefined : downloadableMailAttachment(attachment, attachmentLimits.maxBytes);
|
|
501
|
+
const state = downloadStates[attachment.index];
|
|
502
|
+
return (_jsxs("div", { children: [_jsx(IconPaperclipOutline16, { size: 15 }), _jsxs("span", { children: [_jsx("strong", { children: attachment.fileName ?? `附件 ${attachment.index + 1}` }), _jsx("small", { children: [attachment.contentType, attachment.sizeBytes === undefined ? undefined : `${attachment.sizeBytes} bytes`].filter(Boolean).join(' · ') || '暂无更多信息' }), downloadable === undefined && _jsx("small", { children: "\u5F53\u524D\u8BB0\u5F55\u7F3A\u5C11\u5B8C\u6574\u3001\u53EF\u9A8C\u8BC1\u7684\u4E0B\u8F7D\u5143\u6570\u636E\u3002" }), state?.status === 'error' && _jsx("small", { className: css.attachmentDownloadError, role: "alert", children: state.error })] }), downloadable !== undefined && (_jsx("button", { type: "button", disabled: state?.status === 'loading', "aria-label": `${state?.status === 'error' ? '重试下载' : '下载附件'} ${downloadable.fileName}`, onClick: () => { void downloadAttachment(attachment); }, children: state?.status === 'loading' ? '下载中…' : state?.status === 'error' ? '重试' : '下载' }))] }, attachment.index));
|
|
503
|
+
})] }))] }))] })) }), notice !== null && (_jsx("div", { className: css.notice, role: "status", "aria-live": "polite", "aria-atomic": "true", onAnimationEnd: () => {
|
|
380
504
|
setNotice(current => current?.id === notice.id ? null : current);
|
|
381
505
|
}, children: notice.text }, notice.id)), _jsx(Modal, { open: confirmOpen, onClose: () => { if (!sending)
|
|
382
|
-
setConfirmOpen(false); }, title: "\u786E\u8BA4\u53D1\u9001\u90AE\u4EF6", closeLabel: "\u53D6\u6D88", description: "\u90AE\u4EF6\u5C06\u901A\u8FC7\u5F53\u524D AWiki \u8EAB\u4EFD\u53D1\u9001\u4E00\u6B21\uFF0C\u5931\u8D25\u540E\u4E0D\u4F1A\u81EA\u52A8\u91CD\u8BD5\u3002", footer: _jsxs(_Fragment, { children: [_jsx(Button, { type: "button", variant: "outline", disabled: sending, onClick: () => { setConfirmOpen(false); }, children: "\u8FD4\u56DE\u4FEE\u6539" }), _jsx(Button, { type: "button", disabled: sending, onClick: () => { void confirmSend(); }, children: sending ? '正在发送…' : '确认发送' })] }), children: _jsxs("div", { className: css.confirmSummary, children: [_jsxs("p", { children: ["\u6536\u4EF6\u4EBA\uFF1A", splitAddresses(to).length, " \u4EBA"] }), _jsxs("p", { children: ["\u6284\u9001\uFF1A", splitAddresses(cc).length, " \u4EBA"] }), _jsxs("p", { children: ["\u4E3B\u9898\uFF1A", subject.trim()] })] }) }), _jsx(Modal, { open: discardOpen, onClose: () => { setDiscardOpen(false); }, title: "\u653E\u5F03\u8FD9\u5C01\u90AE\u4EF6\uFF1F", closeLabel: "\u7EE7\u7EED\u7F16\u8F91", description: "\
|
|
506
|
+
setConfirmOpen(false); }, title: "\u786E\u8BA4\u53D1\u9001\u90AE\u4EF6", closeLabel: "\u53D6\u6D88", description: "\u90AE\u4EF6\u5C06\u901A\u8FC7\u5F53\u524D AWiki \u8EAB\u4EFD\u53D1\u9001\u4E00\u6B21\uFF0C\u5931\u8D25\u540E\u4E0D\u4F1A\u81EA\u52A8\u91CD\u8BD5\u3002", footer: _jsxs(_Fragment, { children: [_jsx(Button, { type: "button", variant: "outline", disabled: sending, onClick: () => { setConfirmOpen(false); }, children: "\u8FD4\u56DE\u4FEE\u6539" }), _jsx(Button, { type: "button", disabled: sending, onClick: () => { void confirmSend(); }, children: sending ? '正在发送…' : '确认发送' })] }), children: _jsxs("div", { className: css.confirmSummary, children: [_jsxs("p", { children: ["\u6536\u4EF6\u4EBA\uFF1A", splitAddresses(to).length, " \u4EBA"] }), _jsxs("p", { children: ["\u6284\u9001\uFF1A", splitAddresses(cc).length, " \u4EBA"] }), _jsxs("p", { children: ["\u4E3B\u9898\uFF1A", subject.trim()] }), _jsxs("p", { children: ["\u9644\u4EF6\uFF1A", attachments.length, " \u4E2A \u00B7 \u5171 ", displayBytes(attachmentTotalBytes)] }), attachments.map(attachment => _jsxs("p", { children: [attachment.fileName, " \u00B7 ", attachment.contentType, " \u00B7 ", displayBytes(attachment.sizeBytes)] }, attachment.id))] }) }), _jsx(Modal, { open: discardOpen, onClose: () => { setDiscardOpen(false); }, title: "\u653E\u5F03\u8FD9\u5C01\u90AE\u4EF6\uFF1F", closeLabel: "\u7EE7\u7EED\u7F16\u8F91", description: "\u5F53\u524D\u4E0D\u4F1A\u4FDD\u5B58\u8349\u7A3F\uFF0C\u653E\u5F03\u540E\u6587\u5B57\u548C\u9644\u4EF6\u9009\u62E9\u90FD\u4F1A\u88AB\u6E05\u7A7A\u3002", footer: _jsxs(_Fragment, { children: [_jsx(Button, { type: "button", variant: "outline", onClick: () => { setDiscardOpen(false); }, children: "\u7EE7\u7EED\u7F16\u8F91" }), _jsx(Button, { type: "button", variant: "outline", onClick: () => { setDiscardOpen(false); clearDraft(); setCompose(false); setPane('list'); }, children: "\u786E\u8BA4\u653E\u5F03" })] }), children: _jsx("p", { className: css.discardText, children: "\u6536\u4EF6\u4EBA\u3001\u4E3B\u9898\u3001\u6B63\u6587\u548C\u5DF2\u9009\u62E9\u7684\u9644\u4EF6\u90FD\u4F1A\u4E22\u5931\u3002" }) })] }));
|
|
383
507
|
}
|
|
384
508
|
//# sourceMappingURL=AwikiMail.js.map
|