清除缓存/清除聊天记录/注销账号确认弹层改为叠加显示,不再是整页路由跳转
这三个"确认"操作原来是独立的hash路由,点击后"设置"整个列表(含标题栏)连同Header一起卸载, 只剩ConfirmSheet的半透明蒙层盖在空白背景上——蒙层本来是设计成衬着被弹出的页面看的,但因为 底下真的没有渲染任何东西,视觉上跟跳转到一个新的空白页面没有区别。 改为SettingsList自己的本地state(sheet: null|'cache'|'history'|'delete'),确认层作为兄弟 节点叠加渲染,列表本身不卸载,不再经过hash导航——照抄group-management-view.jsx的OwnerSelect (选择新群主)已经在用的正确模式。同时清理了tinode-web.jsx两处硬编码视图白名单里对应的 三个route名(不再是独立路由,无需保留)。 contact-management-view.jsx同类的删除好友/拉黑/清空聊天记录确认层核实过不受影响——它的 ConfirmSheet会重新渲染Settings页面作为背景,视觉上本来就是正确的。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
d759f67b11
commit
f688578714
@@ -22,7 +22,7 @@ const navigate = (view, params) => {
|
|||||||
export const PERSONAL_SETTINGS_VIEWS = [
|
export const PERSONAL_SETTINGS_VIEWS = [
|
||||||
'personal-center', 'personal-profile', 'profile-nickname', 'profile-birth-date',
|
'personal-center', 'personal-profile', 'profile-nickname', 'profile-birth-date',
|
||||||
'profile-signature', 'profile-gender', 'profile-region', 'personal-qrcode', 'android-settings',
|
'profile-signature', 'profile-gender', 'profile-region', 'personal-qrcode', 'android-settings',
|
||||||
'cache-clear-confirm', 'clear-history-confirm', 'change-password', 'delete-account-confirm',
|
'change-password',
|
||||||
'app-version', 'privacy-settings', 'friend-discovery-settings',
|
'app-version', 'privacy-settings', 'friend-discovery-settings',
|
||||||
'youth-mode-off', 'youth-mode-on', 'youth-mode-verify',
|
'youth-mode-off', 'youth-mode-on', 'youth-mode-verify',
|
||||||
'notification-permission', 'permission-settings-reminder', 'camera-permission-info',
|
'notification-permission', 'permission-settings-reminder', 'camera-permission-info',
|
||||||
@@ -282,7 +282,7 @@ function PersonalQr({onToast}) {
|
|||||||
|
|
||||||
// docs/images/设置(iOS).png 只有7项,docs/images/设置(安卓).png 多了"青少年模式"/"实名认证"两行状态
|
// docs/images/设置(iOS).png 只有7项,docs/images/设置(安卓).png 多了"青少年模式"/"实名认证"两行状态
|
||||||
// 展示 -- 两个平台业务能力理应一致(文字需求也这么写),采用更完整的安卓版列表,不再区分iOS/安卓两份。
|
// 展示 -- 两个平台业务能力理应一致(文字需求也这么写),采用更完整的安卓版列表,不再区分iOS/安卓两份。
|
||||||
function SettingsList({onToast, onLogout}) {
|
function SettingsList({onToast, onLogout, tinode, chatList, onDeleteAccount}) {
|
||||||
// 'youth-mode' is shared with the YouthMode page's own fetch of the same endpoint; 'me-realname'
|
// 'youth-mode' is shared with the YouthMode page's own fetch of the same endpoint; 'me-realname'
|
||||||
// has no other reader today but gets the same treatment for consistency -- both status badges here
|
// has no other reader today but gets the same treatment for consistency -- both status badges here
|
||||||
// otherwise flash a plausible-but-possibly-wrong value (realnameLabel's own fallback below shows
|
// otherwise flash a plausible-but-possibly-wrong value (realnameLabel's own fallback below shows
|
||||||
@@ -291,6 +291,13 @@ function SettingsList({onToast, onLogout}) {
|
|||||||
// blank one.
|
// blank one.
|
||||||
const [youthSettings, setYouthSettings] = React.useState(() => readCachedData('youth-mode') || null);
|
const [youthSettings, setYouthSettings] = React.useState(() => readCachedData('youth-mode') || null);
|
||||||
const [realname, setRealname] = React.useState(() => readCachedData('me-realname') || null);
|
const [realname, setRealname] = React.useState(() => readCachedData('me-realname') || null);
|
||||||
|
// 清空缓存/清除聊天记录/注销账号三个确认弹层原来是各自独立的 view(hash 路由),route 一跳,
|
||||||
|
// "设置"这个列表整个连同 Header 一起卸载重挂载——ConfirmSheet 的 .personal-sheet-backdrop 本来是
|
||||||
|
// 设计成半透明蒙层盖在被弹出页面上方的(backdrop 4:52 rgba,明显是"衬着底下内容看"的视觉语言),
|
||||||
|
// 但因为底下真的没有任何东西在渲染,视觉上跟直接跳转到一个空白新页面没有区别。改成本组件自己的
|
||||||
|
// 本地 state,弹层作为兄弟节点叠在列表上方,列表本身不卸载——group-management-view.jsx 的
|
||||||
|
// OwnerSelect(选择新群主)已经是这个正确模式,这里照抄,不是发明新写法。
|
||||||
|
const [sheet, setSheet] = React.useState(null); // null | 'cache' | 'history' | 'delete'
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
getYouthMode().then(d => { writeCachedData('youth-mode', d); setYouthSettings(d); }).catch(() => {});
|
getYouthMode().then(d => { writeCachedData('youth-mode', d); setYouthSettings(d); }).catch(() => {});
|
||||||
getRealnameStatus().then(d => { writeCachedData('me-realname', d); setRealname(d); }).catch(() => {});
|
getRealnameStatus().then(d => { writeCachedData('me-realname', d); setRealname(d); }).catch(() => {});
|
||||||
@@ -305,8 +312,8 @@ function SettingsList({onToast, onLogout}) {
|
|||||||
};
|
};
|
||||||
return <div className="personal-page"><Header title="设置" /><main className="android-settings-list">
|
return <div className="personal-page"><Header title="设置" /><main className="android-settings-list">
|
||||||
<section>
|
<section>
|
||||||
<MenuRow icon="delete_sweep" title="清除缓存" route="cache-clear-confirm" />
|
<MenuRow icon="delete_sweep" title="清除缓存" onClick={() => setSheet('cache')} />
|
||||||
<MenuRow icon="mark_chat_read" title="清除所有聊天记录" route="clear-history-confirm" />
|
<MenuRow icon="mark_chat_read" title="清除所有聊天记录" onClick={() => setSheet('history')} />
|
||||||
<MenuRow icon="password" title="修改密码" route="change-password" />
|
<MenuRow icon="password" title="修改密码" route="change-password" />
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
@@ -321,9 +328,13 @@ function SettingsList({onToast, onLogout}) {
|
|||||||
用的是同一套 hash 导航,可以直接指过去。 */}
|
用的是同一套 hash 导航,可以直接指过去。 */}
|
||||||
<MenuRow icon="shield" title="安全教育" route="fraud-risk-warning" />
|
<MenuRow icon="shield" title="安全教育" route="fraud-risk-warning" />
|
||||||
</section>
|
</section>
|
||||||
<section><MenuRow icon="no_accounts" title="注销账号" route="delete-account-confirm" danger /></section>
|
<section><MenuRow icon="no_accounts" title="注销账号" onClick={() => setSheet('delete')} danger /></section>
|
||||||
<button type="button" className="personal-logout" onClick={logout}>退出当前登录</button>
|
<button type="button" className="personal-logout" onClick={logout}>退出当前登录</button>
|
||||||
</main></div>;
|
</main>
|
||||||
|
{sheet === 'cache' ? <CacheClear onToast={onToast} onClose={() => setSheet(null)} /> : null}
|
||||||
|
{sheet === 'history' ? <ClearHistoryConfirm onToast={onToast} tinode={tinode} chatList={chatList} onClose={() => setSheet(null)} /> : null}
|
||||||
|
{sheet === 'delete' ? <DeleteAccountConfirm onToast={onToast} onDeleteAccount={onDeleteAccount} onClose={() => setSheet(null)} /> : null}
|
||||||
|
</div>;
|
||||||
}
|
}
|
||||||
|
|
||||||
function ConfirmSheet({icon, title, body, confirmLabel = '确认', confirmDanger = true, busy, onConfirm, onCancel, children}) {
|
function ConfirmSheet({icon, title, body, confirmLabel = '确认', confirmDanger = true, busy, onConfirm, onCancel, children}) {
|
||||||
@@ -339,7 +350,7 @@ function ConfirmSheet({icon, title, body, confirmLabel = '确认', confirmDanger
|
|||||||
// server/main.go's ~74 routes have nothing for either). Cache clearing empties Cache Storage/IDB;
|
// server/main.go's ~74 routes have nothing for either). Cache clearing empties Cache Storage/IDB;
|
||||||
// clearing all history calls the native Tinode delMessagesAll(false) per open conversation, same
|
// clearing all history calls the native Tinode delMessagesAll(false) per open conversation, same
|
||||||
// method contact-management-view.jsx/group-management-view.jsx already use for single-topic clears.
|
// method contact-management-view.jsx/group-management-view.jsx already use for single-topic clears.
|
||||||
function CacheClear({onToast}) {
|
function CacheClear({onToast, onClose}) {
|
||||||
const [busy, setBusy] = React.useState(false);
|
const [busy, setBusy] = React.useState(false);
|
||||||
const [done, setDone] = React.useState(false);
|
const [done, setDone] = React.useState(false);
|
||||||
const [freed, setFreed] = React.useState(0);
|
const [freed, setFreed] = React.useState(0);
|
||||||
@@ -370,25 +381,25 @@ function CacheClear({onToast}) {
|
|||||||
return <ConfirmSheet icon={done ? 'check_circle' : 'delete_sweep'} title={done ? '缓存已清理' : '清空缓存'}
|
return <ConfirmSheet icon={done ? 'check_circle' : 'delete_sweep'} title={done ? '缓存已清理' : '清空缓存'}
|
||||||
body={done ? `已释放约 ${(freed / (1024 * 1024)).toFixed(1)} MB 存储空间。` : '确定清空本地的缓存数据?将清除缩略图、临时文件和可重新下载的数据,不会删除聊天记录、收藏或登录信息。'}
|
body={done ? `已释放约 ${(freed / (1024 * 1024)).toFixed(1)} MB 存储空间。` : '确定清空本地的缓存数据?将清除缩略图、临时文件和可重新下载的数据,不会删除聊天记录、收藏或登录信息。'}
|
||||||
confirmLabel={done ? '完成' : '确定'} confirmDanger={!done} busy={busy}
|
confirmLabel={done ? '完成' : '确定'} confirmDanger={!done} busy={busy}
|
||||||
onConfirm={done ? () => navigate('android-settings') : confirm} onCancel={() => navigate('android-settings')} />;
|
onConfirm={done ? onClose : confirm} onCancel={onClose} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
function ClearHistoryConfirm({tinode, chatList, onToast}) {
|
function ClearHistoryConfirm({tinode, chatList, onToast, onClose}) {
|
||||||
const [busy, setBusy] = React.useState(false);
|
const [busy, setBusy] = React.useState(false);
|
||||||
const confirm = () => {
|
const confirm = () => {
|
||||||
if (!tinode || !chatList || !chatList.length) { onToast('没有可清除的会话'); navigate('android-settings'); return; }
|
if (!tinode || !chatList || !chatList.length) { onToast('没有可清除的会话'); onClose(); return; }
|
||||||
setBusy(true);
|
setBusy(true);
|
||||||
Promise.all(chatList.map(c => {
|
Promise.all(chatList.map(c => {
|
||||||
const topic = tinode.getTopic(c.name);
|
const topic = tinode.getTopic(c.name);
|
||||||
return topic ? topic.delMessagesAll(false).catch(() => {}) : Promise.resolve();
|
return topic ? topic.delMessagesAll(false).catch(() => {}) : Promise.resolve();
|
||||||
})).then(() => {
|
})).then(() => {
|
||||||
onToast('聊天记录已清空');
|
onToast('聊天记录已清空');
|
||||||
navigate('android-settings');
|
onClose();
|
||||||
}).finally(() => setBusy(false));
|
}).finally(() => setBusy(false));
|
||||||
};
|
};
|
||||||
return <ConfirmSheet icon="mark_chat_read" title="清除所有聊天记录"
|
return <ConfirmSheet icon="mark_chat_read" title="清除所有聊天记录"
|
||||||
body="确定清除所有聊天记录?此操作不可恢复,但不会影响好友/群聊关系和收藏内容。" busy={busy}
|
body="确定清除所有聊天记录?此操作不可恢复,但不会影响好友/群聊关系和收藏内容。" busy={busy}
|
||||||
onConfirm={confirm} onCancel={() => navigate('android-settings')} />;
|
onConfirm={confirm} onCancel={onClose} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Changing password has no REST endpoint -- it's native Tinode {acc} protocol
|
// Changing password has no REST endpoint -- it's native Tinode {acc} protocol
|
||||||
@@ -431,7 +442,7 @@ function ChangePassword({onUpdatePassword, onToast}) {
|
|||||||
// no cooldown/soft-delete and no password re-check (confirmed against server/user.go) -- adding a
|
// no cooldown/soft-delete and no password re-check (confirmed against server/user.go) -- adding a
|
||||||
// password confirmation step here is a deliberate, conservative frontend-only safeguard given how
|
// password confirmation step here is a deliberate, conservative frontend-only safeguard given how
|
||||||
// irreversible and consequential this action is, not something the backend requires.
|
// irreversible and consequential this action is, not something the backend requires.
|
||||||
function DeleteAccountConfirm({onDeleteAccount, onToast}) {
|
function DeleteAccountConfirm({onDeleteAccount, onToast, onClose}) {
|
||||||
const [step, setStep] = React.useState(1);
|
const [step, setStep] = React.useState(1);
|
||||||
const [password, setPassword] = React.useState('');
|
const [password, setPassword] = React.useState('');
|
||||||
const [busy, setBusy] = React.useState(false);
|
const [busy, setBusy] = React.useState(false);
|
||||||
@@ -448,10 +459,10 @@ function DeleteAccountConfirm({onDeleteAccount, onToast}) {
|
|||||||
// to be disclosed here since it's the only place the user sees before confirming.
|
// to be disclosed here since it's the only place the user sees before confirming.
|
||||||
return <ConfirmSheet icon="warning" title="注销账号"
|
return <ConfirmSheet icon="warning" title="注销账号"
|
||||||
body="注销后账号数据将被永久删除且无法恢复,包括聊天记录、好友关系和收藏内容。如果你是某些群的群主,这些群也将被永久解散,其他成员将无法继续使用。确定要继续吗?"
|
body="注销后账号数据将被永久删除且无法恢复,包括聊天记录、好友关系和收藏内容。如果你是某些群的群主,这些群也将被永久解散,其他成员将无法继续使用。确定要继续吗?"
|
||||||
confirmLabel="继续" onConfirm={() => setStep(2)} onCancel={() => navigate('android-settings')} />;
|
confirmLabel="继续" onConfirm={() => setStep(2)} onCancel={onClose} />;
|
||||||
}
|
}
|
||||||
return <ConfirmSheet icon="no_accounts" title="输入密码确认注销" body="请输入登录密码以确认注销账号(该操作立即生效,不可撤销)。"
|
return <ConfirmSheet icon="no_accounts" title="输入密码确认注销" body="请输入登录密码以确认注销账号(该操作立即生效,不可撤销)。"
|
||||||
busy={busy} onConfirm={proceed} onCancel={() => navigate('android-settings')}>
|
busy={busy} onConfirm={proceed} onCancel={onClose}>
|
||||||
<input type="password" autoFocus value={password} onChange={e => setPassword(e.target.value)} placeholder="登录密码" />
|
<input type="password" autoFocus value={password} onChange={e => setPassword(e.target.value)} placeholder="登录密码" />
|
||||||
</ConfirmSheet>;
|
</ConfirmSheet>;
|
||||||
}
|
}
|
||||||
@@ -755,11 +766,8 @@ export default function PersonalSettingsView({view, hashParams, myUserId, tinode
|
|||||||
else if (view === 'profile-gender') content = <GenderEditor onToast={setToast} />;
|
else if (view === 'profile-gender') content = <GenderEditor onToast={setToast} />;
|
||||||
else if (view === 'profile-region') content = <RegionEditor onToast={setToast} />;
|
else if (view === 'profile-region') content = <RegionEditor onToast={setToast} />;
|
||||||
else if (view === 'personal-qrcode') content = <PersonalQr onToast={setToast} />;
|
else if (view === 'personal-qrcode') content = <PersonalQr onToast={setToast} />;
|
||||||
else if (view === 'android-settings') content = <SettingsList onToast={setToast} onLogout={onLogout} />;
|
else if (view === 'android-settings') content = <SettingsList onToast={setToast} onLogout={onLogout} tinode={tinode} chatList={chatList} onDeleteAccount={onDeleteAccount} />;
|
||||||
else if (view === 'cache-clear-confirm') content = <CacheClear onToast={setToast} />;
|
|
||||||
else if (view === 'clear-history-confirm') content = <ClearHistoryConfirm onToast={setToast} tinode={tinode} chatList={chatList} />;
|
|
||||||
else if (view === 'change-password') content = <ChangePassword onToast={setToast} onUpdatePassword={onUpdatePassword} />;
|
else if (view === 'change-password') content = <ChangePassword onToast={setToast} onUpdatePassword={onUpdatePassword} />;
|
||||||
else if (view === 'delete-account-confirm') content = <DeleteAccountConfirm onToast={setToast} onDeleteAccount={onDeleteAccount} />;
|
|
||||||
else if (view === 'app-version') content = <AppVersion onToast={setToast} />;
|
else if (view === 'app-version') content = <AppVersion onToast={setToast} />;
|
||||||
else if (view === 'privacy-settings') content = <PrivacySettings onToast={setToast} />;
|
else if (view === 'privacy-settings') content = <PrivacySettings onToast={setToast} />;
|
||||||
else if (view === 'friend-discovery-settings') content = <FriendDiscoverySettings onToast={setToast} />;
|
else if (view === 'friend-discovery-settings') content = <FriendDiscoverySettings onToast={setToast} />;
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ const SIDE_PANEL_VIEWS = ['acc_general','archive','blocked','contacts','cred','c
|
|||||||
'executive-mailbox','executive-mailbox-notice',
|
'executive-mailbox','executive-mailbox-notice',
|
||||||
'personal-center','personal-profile','profile-nickname','profile-birth-date',
|
'personal-center','personal-profile','profile-nickname','profile-birth-date',
|
||||||
'profile-signature','profile-gender','profile-region','personal-qrcode','android-settings',
|
'profile-signature','profile-gender','profile-region','personal-qrcode','android-settings',
|
||||||
'cache-clear-confirm','clear-history-confirm','change-password','delete-account-confirm',
|
'change-password',
|
||||||
'app-version','privacy-settings','friend-discovery-settings',
|
'app-version','privacy-settings','friend-discovery-settings',
|
||||||
'youth-mode-off','youth-mode-on','youth-mode-verify',
|
'youth-mode-off','youth-mode-on','youth-mode-verify',
|
||||||
'notification-permission','permission-settings-reminder','camera-permission-info',
|
'notification-permission','permission-settings-reminder','camera-permission-info',
|
||||||
@@ -2677,7 +2677,7 @@ class TinodeWeb extends React.Component {
|
|||||||
'monthly-report-detail', 'executive-mailbox', 'executive-mailbox-notice'].includes(activeProductView);
|
'monthly-report-detail', 'executive-mailbox', 'executive-mailbox-notice'].includes(activeProductView);
|
||||||
const personalSettingsActive = ['personal-center', 'personal-profile', 'profile-nickname',
|
const personalSettingsActive = ['personal-center', 'personal-profile', 'profile-nickname',
|
||||||
'profile-birth-date', 'profile-signature', 'profile-gender', 'profile-region', 'personal-qrcode', 'android-settings',
|
'profile-birth-date', 'profile-signature', 'profile-gender', 'profile-region', 'personal-qrcode', 'android-settings',
|
||||||
'cache-clear-confirm', 'clear-history-confirm', 'change-password', 'delete-account-confirm',
|
'change-password',
|
||||||
'app-version', 'privacy-settings',
|
'app-version', 'privacy-settings',
|
||||||
'friend-discovery-settings', 'youth-mode-off', 'youth-mode-on', 'youth-mode-verify',
|
'friend-discovery-settings', 'youth-mode-off', 'youth-mode-on', 'youth-mode-verify',
|
||||||
'notification-permission', 'permission-settings-reminder',
|
'notification-permission', 'permission-settings-reminder',
|
||||||
|
|||||||
+40
-27
@@ -14935,7 +14935,7 @@ const navigate = (view, params) => {
|
|||||||
});
|
});
|
||||||
_lib_navigation_js__WEBPACK_IMPORTED_MODULE_2__["default"].navigateTo(hash);
|
_lib_navigation_js__WEBPACK_IMPORTED_MODULE_2__["default"].navigateTo(hash);
|
||||||
};
|
};
|
||||||
const PERSONAL_SETTINGS_VIEWS = ['personal-center', 'personal-profile', 'profile-nickname', 'profile-birth-date', 'profile-signature', 'profile-gender', 'profile-region', 'personal-qrcode', 'android-settings', 'cache-clear-confirm', 'clear-history-confirm', 'change-password', 'delete-account-confirm', 'app-version', 'privacy-settings', 'friend-discovery-settings', 'youth-mode-off', 'youth-mode-on', 'youth-mode-verify', 'notification-permission', 'permission-settings-reminder', 'camera-permission-info', 'microphone-permission-info'];
|
const PERSONAL_SETTINGS_VIEWS = ['personal-center', 'personal-profile', 'profile-nickname', 'profile-birth-date', 'profile-signature', 'profile-gender', 'profile-region', 'personal-qrcode', 'android-settings', 'change-password', 'app-version', 'privacy-settings', 'friend-discovery-settings', 'youth-mode-off', 'youth-mode-on', 'youth-mode-verify', 'notification-permission', 'permission-settings-reminder', 'camera-permission-info', 'microphone-permission-info'];
|
||||||
function Icon({
|
function Icon({
|
||||||
children
|
children
|
||||||
}) {
|
}) {
|
||||||
@@ -15499,10 +15499,14 @@ function PersonalQr({
|
|||||||
}
|
}
|
||||||
function SettingsList({
|
function SettingsList({
|
||||||
onToast,
|
onToast,
|
||||||
onLogout
|
onLogout,
|
||||||
|
tinode,
|
||||||
|
chatList,
|
||||||
|
onDeleteAccount
|
||||||
}) {
|
}) {
|
||||||
const [youthSettings, setYouthSettings] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(() => (0,_lib_use_cached_data_js__WEBPACK_IMPORTED_MODULE_3__.readCachedData)('youth-mode') || null);
|
const [youthSettings, setYouthSettings] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(() => (0,_lib_use_cached_data_js__WEBPACK_IMPORTED_MODULE_3__.readCachedData)('youth-mode') || null);
|
||||||
const [realname, setRealname] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(() => (0,_lib_use_cached_data_js__WEBPACK_IMPORTED_MODULE_3__.readCachedData)('me-realname') || null);
|
const [realname, setRealname] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(() => (0,_lib_use_cached_data_js__WEBPACK_IMPORTED_MODULE_3__.readCachedData)('me-realname') || null);
|
||||||
|
const [sheet, setSheet] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(null);
|
||||||
react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(() => {
|
react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(() => {
|
||||||
(0,_lib_im_api_js__WEBPACK_IMPORTED_MODULE_6__.getYouthMode)().then(d => {
|
(0,_lib_im_api_js__WEBPACK_IMPORTED_MODULE_6__.getYouthMode)().then(d => {
|
||||||
(0,_lib_use_cached_data_js__WEBPACK_IMPORTED_MODULE_3__.writeCachedData)('youth-mode', d);
|
(0,_lib_use_cached_data_js__WEBPACK_IMPORTED_MODULE_3__.writeCachedData)('youth-mode', d);
|
||||||
@@ -15535,11 +15539,11 @@ function SettingsList({
|
|||||||
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(MenuRow, {
|
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(MenuRow, {
|
||||||
icon: "delete_sweep",
|
icon: "delete_sweep",
|
||||||
title: "清除缓存",
|
title: "清除缓存",
|
||||||
route: "cache-clear-confirm"
|
onClick: () => setSheet('cache')
|
||||||
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(MenuRow, {
|
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(MenuRow, {
|
||||||
icon: "mark_chat_read",
|
icon: "mark_chat_read",
|
||||||
title: "清除所有聊天记录",
|
title: "清除所有聊天记录",
|
||||||
route: "clear-history-confirm"
|
onClick: () => setSheet('history')
|
||||||
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(MenuRow, {
|
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(MenuRow, {
|
||||||
icon: "password",
|
icon: "password",
|
||||||
title: "修改密码",
|
title: "修改密码",
|
||||||
@@ -15573,7 +15577,7 @@ function SettingsList({
|
|||||||
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(MenuRow, {
|
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(MenuRow, {
|
||||||
icon: "no_accounts",
|
icon: "no_accounts",
|
||||||
title: "注销账号",
|
title: "注销账号",
|
||||||
route: "delete-account-confirm",
|
onClick: () => setSheet('delete'),
|
||||||
danger: true
|
danger: true
|
||||||
}, void 0, false)
|
}, void 0, false)
|
||||||
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("button", {
|
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("button", {
|
||||||
@@ -15582,7 +15586,19 @@ function SettingsList({
|
|||||||
onClick: logout,
|
onClick: logout,
|
||||||
children: "退出当前登录"
|
children: "退出当前登录"
|
||||||
}, void 0, false)]
|
}, void 0, false)]
|
||||||
}, void 0, true)]
|
}, void 0, true), sheet === 'cache' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(CacheClear, {
|
||||||
|
onToast: onToast,
|
||||||
|
onClose: () => setSheet(null)
|
||||||
|
}, void 0, false) : null, sheet === 'history' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(ClearHistoryConfirm, {
|
||||||
|
onToast: onToast,
|
||||||
|
tinode: tinode,
|
||||||
|
chatList: chatList,
|
||||||
|
onClose: () => setSheet(null)
|
||||||
|
}, void 0, false) : null, sheet === 'delete' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(DeleteAccountConfirm, {
|
||||||
|
onToast: onToast,
|
||||||
|
onDeleteAccount: onDeleteAccount,
|
||||||
|
onClose: () => setSheet(null)
|
||||||
|
}, void 0, false) : null]
|
||||||
}, void 0, true);
|
}, void 0, true);
|
||||||
}
|
}
|
||||||
function ConfirmSheet({
|
function ConfirmSheet({
|
||||||
@@ -15624,7 +15640,8 @@ function ConfirmSheet({
|
|||||||
}, void 0, false);
|
}, void 0, false);
|
||||||
}
|
}
|
||||||
function CacheClear({
|
function CacheClear({
|
||||||
onToast
|
onToast,
|
||||||
|
onClose
|
||||||
}) {
|
}) {
|
||||||
const [busy, setBusy] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(false);
|
const [busy, setBusy] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(false);
|
||||||
const [done, setDone] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(false);
|
const [done, setDone] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(false);
|
||||||
@@ -15659,20 +15676,21 @@ function CacheClear({
|
|||||||
confirmLabel: done ? '完成' : '确定',
|
confirmLabel: done ? '完成' : '确定',
|
||||||
confirmDanger: !done,
|
confirmDanger: !done,
|
||||||
busy: busy,
|
busy: busy,
|
||||||
onConfirm: done ? () => navigate('android-settings') : confirm,
|
onConfirm: done ? onClose : confirm,
|
||||||
onCancel: () => navigate('android-settings')
|
onCancel: onClose
|
||||||
}, void 0, false);
|
}, void 0, false);
|
||||||
}
|
}
|
||||||
function ClearHistoryConfirm({
|
function ClearHistoryConfirm({
|
||||||
tinode,
|
tinode,
|
||||||
chatList,
|
chatList,
|
||||||
onToast
|
onToast,
|
||||||
|
onClose
|
||||||
}) {
|
}) {
|
||||||
const [busy, setBusy] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(false);
|
const [busy, setBusy] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(false);
|
||||||
const confirm = () => {
|
const confirm = () => {
|
||||||
if (!tinode || !chatList || !chatList.length) {
|
if (!tinode || !chatList || !chatList.length) {
|
||||||
onToast('没有可清除的会话');
|
onToast('没有可清除的会话');
|
||||||
navigate('android-settings');
|
onClose();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setBusy(true);
|
setBusy(true);
|
||||||
@@ -15681,7 +15699,7 @@ function ClearHistoryConfirm({
|
|||||||
return topic ? topic.delMessagesAll(false).catch(() => {}) : Promise.resolve();
|
return topic ? topic.delMessagesAll(false).catch(() => {}) : Promise.resolve();
|
||||||
})).then(() => {
|
})).then(() => {
|
||||||
onToast('聊天记录已清空');
|
onToast('聊天记录已清空');
|
||||||
navigate('android-settings');
|
onClose();
|
||||||
}).finally(() => setBusy(false));
|
}).finally(() => setBusy(false));
|
||||||
};
|
};
|
||||||
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(ConfirmSheet, {
|
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(ConfirmSheet, {
|
||||||
@@ -15690,7 +15708,7 @@ function ClearHistoryConfirm({
|
|||||||
body: "确定清除所有聊天记录?此操作不可恢复,但不会影响好友/群聊关系和收藏内容。",
|
body: "确定清除所有聊天记录?此操作不可恢复,但不会影响好友/群聊关系和收藏内容。",
|
||||||
busy: busy,
|
busy: busy,
|
||||||
onConfirm: confirm,
|
onConfirm: confirm,
|
||||||
onCancel: () => navigate('android-settings')
|
onCancel: onClose
|
||||||
}, void 0, false);
|
}, void 0, false);
|
||||||
}
|
}
|
||||||
function ChangePassword({
|
function ChangePassword({
|
||||||
@@ -15767,7 +15785,8 @@ function ChangePassword({
|
|||||||
}
|
}
|
||||||
function DeleteAccountConfirm({
|
function DeleteAccountConfirm({
|
||||||
onDeleteAccount,
|
onDeleteAccount,
|
||||||
onToast
|
onToast,
|
||||||
|
onClose
|
||||||
}) {
|
}) {
|
||||||
const [step, setStep] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(1);
|
const [step, setStep] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(1);
|
||||||
const [password, setPassword] = react__WEBPACK_IMPORTED_MODULE_0___default().useState('');
|
const [password, setPassword] = react__WEBPACK_IMPORTED_MODULE_0___default().useState('');
|
||||||
@@ -15794,7 +15813,7 @@ function DeleteAccountConfirm({
|
|||||||
body: "注销后账号数据将被永久删除且无法恢复,包括聊天记录、好友关系和收藏内容。如果你是某些群的群主,这些群也将被永久解散,其他成员将无法继续使用。确定要继续吗?",
|
body: "注销后账号数据将被永久删除且无法恢复,包括聊天记录、好友关系和收藏内容。如果你是某些群的群主,这些群也将被永久解散,其他成员将无法继续使用。确定要继续吗?",
|
||||||
confirmLabel: "继续",
|
confirmLabel: "继续",
|
||||||
onConfirm: () => setStep(2),
|
onConfirm: () => setStep(2),
|
||||||
onCancel: () => navigate('android-settings')
|
onCancel: onClose
|
||||||
}, void 0, false);
|
}, void 0, false);
|
||||||
}
|
}
|
||||||
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(ConfirmSheet, {
|
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(ConfirmSheet, {
|
||||||
@@ -15803,7 +15822,7 @@ function DeleteAccountConfirm({
|
|||||||
body: "请输入登录密码以确认注销账号(该操作立即生效,不可撤销)。",
|
body: "请输入登录密码以确认注销账号(该操作立即生效,不可撤销)。",
|
||||||
busy: busy,
|
busy: busy,
|
||||||
onConfirm: proceed,
|
onConfirm: proceed,
|
||||||
onCancel: () => navigate('android-settings'),
|
onCancel: onClose,
|
||||||
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("input", {
|
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("input", {
|
||||||
type: "password",
|
type: "password",
|
||||||
autoFocus: true,
|
autoFocus: true,
|
||||||
@@ -16327,19 +16346,13 @@ function PersonalSettingsView({
|
|||||||
onToast: setToast
|
onToast: setToast
|
||||||
}, void 0, false);else if (view === 'android-settings') content = (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(SettingsList, {
|
}, void 0, false);else if (view === 'android-settings') content = (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(SettingsList, {
|
||||||
onToast: setToast,
|
onToast: setToast,
|
||||||
onLogout: onLogout
|
onLogout: onLogout,
|
||||||
}, void 0, false);else if (view === 'cache-clear-confirm') content = (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(CacheClear, {
|
|
||||||
onToast: setToast
|
|
||||||
}, void 0, false);else if (view === 'clear-history-confirm') content = (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(ClearHistoryConfirm, {
|
|
||||||
onToast: setToast,
|
|
||||||
tinode: tinode,
|
tinode: tinode,
|
||||||
chatList: chatList
|
chatList: chatList,
|
||||||
|
onDeleteAccount: onDeleteAccount
|
||||||
}, void 0, false);else if (view === 'change-password') content = (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(ChangePassword, {
|
}, void 0, false);else if (view === 'change-password') content = (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(ChangePassword, {
|
||||||
onToast: setToast,
|
onToast: setToast,
|
||||||
onUpdatePassword: onUpdatePassword
|
onUpdatePassword: onUpdatePassword
|
||||||
}, void 0, false);else if (view === 'delete-account-confirm') content = (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(DeleteAccountConfirm, {
|
|
||||||
onToast: setToast,
|
|
||||||
onDeleteAccount: onDeleteAccount
|
|
||||||
}, void 0, false);else if (view === 'app-version') content = (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(AppVersion, {
|
}, void 0, false);else if (view === 'app-version') content = (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(AppVersion, {
|
||||||
onToast: setToast
|
onToast: setToast
|
||||||
}, void 0, false);else if (view === 'privacy-settings') content = (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(PrivacySettings, {
|
}, void 0, false);else if (view === 'privacy-settings') content = (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(PrivacySettings, {
|
||||||
@@ -17771,7 +17784,7 @@ const messages = (0,react_intl__WEBPACK_IMPORTED_MODULE_1__.defineMessages)({
|
|||||||
description: 'Placeholder for the country selector'
|
description: 'Placeholder for the country selector'
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const SIDE_PANEL_VIEWS = ['acc_general', 'archive', 'blocked', 'contacts', 'cred', 'crop', 'edit', 'general', 'newtpk', 'notif', 'register', 'reset', 'security', 'settings', 'support', 'wallpapers', 'tenant', 'login', 'enterprise-register', 'enterprise-feedback', 'identity-check', 'realname', 'realname-verified', 'realname-reminder', 'independent-password', 'messages-home', 'messages-offline', 'messages-menu', 'message-actions', 'system-messages', 'chat-inbound-request', 'chat-inbound-message', 'chat-outbound-request', 'chat-status', 'chat-friend', 'chat-media', 'chat-blocked', 'chat-deleted', 'chat-standard', 'chat-attachments', 'chat-mixed', 'chat-contact-card', 'compose-keyboard', 'mentions-select', 'mentions-complete', 'mentions-message', 'emoji-panel', 'emoji-message', 'voice-ready', 'voice-hold', 'voice-recording', 'media-uploading', 'media-gallery', 'media-retry', 'upload-file', 'file-message', 'message-multiselect', 'favorite-success', 'forward-select', 'forward-multiple', 'forward-individual', 'forward-bundle', 'address-book', 'friend-requests', 'add-friend', 'my-friend-qr', 'friend-qr', 'friend-search-result', 'friend-verification', 'friend-profile', 'group-member-profile', 'friend-settings', 'friend-settings-blocked', 'friend-delete-confirm', 'block-list', 'block-confirm', 'clear-chat-confirm', 'group-list', 'group-empty', 'group-invite', 'group-events', 'group-join-requests', 'group-new-request', 'group-announcement', 'group-summary', 'group-announcement-detail', 'group-settings', 'group-profile', 'group-avatar', 'group-nickname', 'group-description', 'group-my-nickname', 'group-members', 'group-role-message', 'group-qr', 'group-governance', 'group-admins', 'group-admin-add', 'group-admin-success', 'group-admin-partial', 'group-admin-removed', 'group-mute-add', 'group-muted', 'group-owner-select', 'group-owner-confirm', 'group-files', 'group-file-upload', 'favorites', 'favorites-mixed', 'favorites-files', 'favorites-text', 'favorites-voice', 'favorites-links', 'favorites-image', 'favorites-video', 'favorites-select', 'favorite-share', 'file-download', 'file-downloading', 'file-downloaded', 'history-search', 'history-files', 'history-links', 'history-images', 'history-videos', 'call-history', 'call-incoming', 'audio-call-ringing', 'audio-call-active', 'audio-call-muted', 'audio-call-speaker', 'video-call-ringing', 'video-call-camera-off', 'video-call-active', 'video-call-peer-camera-off', 'call-minimized', 'workbench', 'organization-directory', 'meeting-organizer', 'meeting-attendee', 'meeting-create', 'meeting-detail', 'daily-report-editor', 'daily-report-mine', 'daily-report-team', 'daily-report-detail', 'monthly-report-editor', 'monthly-report-mine', 'monthly-report-team', 'monthly-report-detail', 'executive-mailbox', 'executive-mailbox-notice', 'personal-center', 'personal-profile', 'profile-nickname', 'profile-birth-date', 'profile-signature', 'profile-gender', 'profile-region', 'personal-qrcode', 'android-settings', 'cache-clear-confirm', 'clear-history-confirm', 'change-password', 'delete-account-confirm', 'app-version', 'privacy-settings', 'friend-discovery-settings', 'youth-mode-off', 'youth-mode-on', 'youth-mode-verify', 'notification-permission', 'permission-settings-reminder', 'camera-permission-info', 'microphone-permission-info', 'fraud-risk-warning', 'fraud-risk-confirmation', 'abuse-report-reasons', 'abuse-report-details', 'user-feedback', ''];
|
const SIDE_PANEL_VIEWS = ['acc_general', 'archive', 'blocked', 'contacts', 'cred', 'crop', 'edit', 'general', 'newtpk', 'notif', 'register', 'reset', 'security', 'settings', 'support', 'wallpapers', 'tenant', 'login', 'enterprise-register', 'enterprise-feedback', 'identity-check', 'realname', 'realname-verified', 'realname-reminder', 'independent-password', 'messages-home', 'messages-offline', 'messages-menu', 'message-actions', 'system-messages', 'chat-inbound-request', 'chat-inbound-message', 'chat-outbound-request', 'chat-status', 'chat-friend', 'chat-media', 'chat-blocked', 'chat-deleted', 'chat-standard', 'chat-attachments', 'chat-mixed', 'chat-contact-card', 'compose-keyboard', 'mentions-select', 'mentions-complete', 'mentions-message', 'emoji-panel', 'emoji-message', 'voice-ready', 'voice-hold', 'voice-recording', 'media-uploading', 'media-gallery', 'media-retry', 'upload-file', 'file-message', 'message-multiselect', 'favorite-success', 'forward-select', 'forward-multiple', 'forward-individual', 'forward-bundle', 'address-book', 'friend-requests', 'add-friend', 'my-friend-qr', 'friend-qr', 'friend-search-result', 'friend-verification', 'friend-profile', 'group-member-profile', 'friend-settings', 'friend-settings-blocked', 'friend-delete-confirm', 'block-list', 'block-confirm', 'clear-chat-confirm', 'group-list', 'group-empty', 'group-invite', 'group-events', 'group-join-requests', 'group-new-request', 'group-announcement', 'group-summary', 'group-announcement-detail', 'group-settings', 'group-profile', 'group-avatar', 'group-nickname', 'group-description', 'group-my-nickname', 'group-members', 'group-role-message', 'group-qr', 'group-governance', 'group-admins', 'group-admin-add', 'group-admin-success', 'group-admin-partial', 'group-admin-removed', 'group-mute-add', 'group-muted', 'group-owner-select', 'group-owner-confirm', 'group-files', 'group-file-upload', 'favorites', 'favorites-mixed', 'favorites-files', 'favorites-text', 'favorites-voice', 'favorites-links', 'favorites-image', 'favorites-video', 'favorites-select', 'favorite-share', 'file-download', 'file-downloading', 'file-downloaded', 'history-search', 'history-files', 'history-links', 'history-images', 'history-videos', 'call-history', 'call-incoming', 'audio-call-ringing', 'audio-call-active', 'audio-call-muted', 'audio-call-speaker', 'video-call-ringing', 'video-call-camera-off', 'video-call-active', 'video-call-peer-camera-off', 'call-minimized', 'workbench', 'organization-directory', 'meeting-organizer', 'meeting-attendee', 'meeting-create', 'meeting-detail', 'daily-report-editor', 'daily-report-mine', 'daily-report-team', 'daily-report-detail', 'monthly-report-editor', 'monthly-report-mine', 'monthly-report-team', 'monthly-report-detail', 'executive-mailbox', 'executive-mailbox-notice', 'personal-center', 'personal-profile', 'profile-nickname', 'profile-birth-date', 'profile-signature', 'profile-gender', 'profile-region', 'personal-qrcode', 'android-settings', 'change-password', 'app-version', 'privacy-settings', 'friend-discovery-settings', 'youth-mode-off', 'youth-mode-on', 'youth-mode-verify', 'notification-permission', 'permission-settings-reminder', 'camera-permission-info', 'microphone-permission-info', 'fraud-risk-warning', 'fraud-risk-confirmation', 'abuse-report-reasons', 'abuse-report-details', 'user-feedback', ''];
|
||||||
const AUTH_FLOW_VIEWS = ['tenant', 'login', 'register', 'reset', 'cred', 'enterprise-register', 'enterprise-feedback'];
|
const AUTH_FLOW_VIEWS = ['tenant', 'login', 'register', 'reset', 'cred', 'enterprise-register', 'enterprise-feedback'];
|
||||||
const CTRL_ERROR_TEXT_CN = {
|
const CTRL_ERROR_TEXT_CN = {
|
||||||
'authentication failed': '账号或密码错误',
|
'authentication failed': '账号或密码错误',
|
||||||
@@ -19879,7 +19892,7 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
|
|||||||
const chapterSevenActive = ['favorites', 'favorites-mixed', 'favorites-files', 'favorites-text', 'favorites-voice', 'favorites-links', 'favorites-image', 'favorites-video', 'favorites-select', 'favorite-share', 'file-download', 'file-downloading', 'file-downloaded', 'history-search', 'history-files', 'history-links', 'history-images', 'history-videos'].includes(activeProductView);
|
const chapterSevenActive = ['favorites', 'favorites-mixed', 'favorites-files', 'favorites-text', 'favorites-voice', 'favorites-links', 'favorites-image', 'favorites-video', 'favorites-select', 'favorite-share', 'file-download', 'file-downloading', 'file-downloaded', 'history-search', 'history-files', 'history-links', 'history-images', 'history-videos'].includes(activeProductView);
|
||||||
const callExperienceActive = ['call-history', 'call-incoming', 'audio-call-ringing', 'audio-call-active', 'audio-call-muted', 'audio-call-speaker', 'video-call-ringing', 'video-call-camera-off', 'video-call-active', 'video-call-peer-camera-off', 'call-minimized'].includes(activeProductView);
|
const callExperienceActive = ['call-history', 'call-incoming', 'audio-call-ringing', 'audio-call-active', 'audio-call-muted', 'audio-call-speaker', 'video-call-ringing', 'video-call-camera-off', 'video-call-active', 'video-call-peer-camera-off', 'call-minimized'].includes(activeProductView);
|
||||||
const workplaceCollaborationActive = ['workbench', 'organization-directory', 'meeting-organizer', 'meeting-attendee', 'meeting-create', 'meeting-detail', 'daily-report-editor', 'daily-report-mine', 'daily-report-team', 'daily-report-detail', 'monthly-report-editor', 'monthly-report-mine', 'monthly-report-team', 'monthly-report-detail', 'executive-mailbox', 'executive-mailbox-notice'].includes(activeProductView);
|
const workplaceCollaborationActive = ['workbench', 'organization-directory', 'meeting-organizer', 'meeting-attendee', 'meeting-create', 'meeting-detail', 'daily-report-editor', 'daily-report-mine', 'daily-report-team', 'daily-report-detail', 'monthly-report-editor', 'monthly-report-mine', 'monthly-report-team', 'monthly-report-detail', 'executive-mailbox', 'executive-mailbox-notice'].includes(activeProductView);
|
||||||
const personalSettingsActive = ['personal-center', 'personal-profile', 'profile-nickname', 'profile-birth-date', 'profile-signature', 'profile-gender', 'profile-region', 'personal-qrcode', 'android-settings', 'cache-clear-confirm', 'clear-history-confirm', 'change-password', 'delete-account-confirm', 'app-version', 'privacy-settings', 'friend-discovery-settings', 'youth-mode-off', 'youth-mode-on', 'youth-mode-verify', 'notification-permission', 'permission-settings-reminder', 'camera-permission-info', 'microphone-permission-info'].includes(activeProductView);
|
const personalSettingsActive = ['personal-center', 'personal-profile', 'profile-nickname', 'profile-birth-date', 'profile-signature', 'profile-gender', 'profile-region', 'personal-qrcode', 'android-settings', 'change-password', 'app-version', 'privacy-settings', 'friend-discovery-settings', 'youth-mode-off', 'youth-mode-on', 'youth-mode-verify', 'notification-permission', 'permission-settings-reminder', 'camera-permission-info', 'microphone-permission-info'].includes(activeProductView);
|
||||||
const securitySupportActive = ['fraud-risk-warning', 'fraud-risk-confirmation', 'abuse-report-reasons', 'abuse-report-details', 'user-feedback'].includes(activeProductView);
|
const securitySupportActive = ['fraud-risk-warning', 'fraud-risk-confirmation', 'abuse-report-reasons', 'abuse-report-details', 'user-feedback'].includes(activeProductView);
|
||||||
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_23__.jsxDEV)("div", {
|
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_23__.jsxDEV)("div", {
|
||||||
id: "app-container",
|
id: "app-container",
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user