重新构建dev产物(收藏文本折叠/搜索高亮、跳转定位消息两处修复)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
68044fa1bb
commit
ca71667975
+73
-30
@@ -9166,6 +9166,46 @@ function LinkText({
|
||||
}, void 0, false)]
|
||||
}, void 0, true);
|
||||
}
|
||||
function FavoriteText({
|
||||
text,
|
||||
query,
|
||||
onToast
|
||||
}) {
|
||||
const [expanded, setExpanded] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(false);
|
||||
const [overflowing, setOverflowing] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(false);
|
||||
const ref = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(null);
|
||||
react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(() => {
|
||||
const el = ref.current;
|
||||
if (el) setOverflowing(el.scrollHeight - el.clientHeight > 1);
|
||||
}, [text]);
|
||||
const copy = () => {
|
||||
navigator.clipboard.writeText(text || '').then(() => onToast('已复制')).catch(() => onToast('复制失败'));
|
||||
};
|
||||
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("div", {
|
||||
className: "library-text-wrap",
|
||||
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("p", {
|
||||
ref: ref,
|
||||
className: 'library-text-content' + (expanded ? '' : ' clamped'),
|
||||
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(Highlight, {
|
||||
text: text,
|
||||
query: query
|
||||
}, void 0, false)
|
||||
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("div", {
|
||||
className: "library-text-actions",
|
||||
children: [overflowing ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("button", {
|
||||
type: "button",
|
||||
onClick: () => setExpanded(v => !v),
|
||||
children: expanded ? '收起' : '展开'
|
||||
}, void 0, false) : null, (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("button", {
|
||||
type: "button",
|
||||
onClick: copy,
|
||||
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(Icon, {
|
||||
children: "content_copy"
|
||||
}, void 0, false), "复制"]
|
||||
}, void 0, true)]
|
||||
}, void 0, true)]
|
||||
}, void 0, true);
|
||||
}
|
||||
function MediaThumb({
|
||||
url,
|
||||
poster,
|
||||
@@ -9208,7 +9248,9 @@ function FavoriteItem({
|
||||
onOpen,
|
||||
selecting,
|
||||
selected,
|
||||
onSelect
|
||||
onSelect,
|
||||
query,
|
||||
onToast
|
||||
}) {
|
||||
const att = firstAttachment(item.snapshot && item.snapshot.content);
|
||||
const source = item.source_display || item.source && item.source.topic || '';
|
||||
@@ -9231,9 +9273,10 @@ function FavoriteItem({
|
||||
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("em", {
|
||||
children: "文本已失效"
|
||||
}, void 0, false)]
|
||||
}, void 0, true) : (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("p", {
|
||||
className: "library-text-content",
|
||||
children: plainTextOf(item.snapshot && item.snapshot.content, item.snapshot && item.snapshot.text)
|
||||
}, void 0, true) : (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(FavoriteText, {
|
||||
text: plainTextOf(item.snapshot && item.snapshot.content, item.snapshot && item.snapshot.text),
|
||||
query: query,
|
||||
onToast: onToast
|
||||
}, void 0, false) : null, item.type === 'file' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(FileCard, {
|
||||
name: att && att.name,
|
||||
size: att && tinode_sdk__WEBPACK_IMPORTED_MODULE_1__.Drafty.getEntitySize(att),
|
||||
@@ -9408,7 +9451,9 @@ function Favorites({
|
||||
selecting: selecting,
|
||||
selected: selected.includes(item.favorite_id),
|
||||
onSelect: () => toggle(item.favorite_id),
|
||||
onOpen: () => openItem(item)
|
||||
onOpen: () => openItem(item),
|
||||
query: query,
|
||||
onToast: onToast
|
||||
}, item.favorite_id, false)), hasMore ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("button", {
|
||||
type: "button",
|
||||
className: "library-load-more",
|
||||
@@ -13456,7 +13501,7 @@ function MessageHome({
|
||||
const [menuOpen, setMenuOpen] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(view === 'messages-menu');
|
||||
const [toast, setToast] = react__WEBPACK_IMPORTED_MODULE_0___default().useState('');
|
||||
const [bootstrap] = (0,_lib_use_cached_data_js__WEBPACK_IMPORTED_MODULE_6__.useCachedData)(myUserId ? 'bootstrap:' + myUserId : null, _lib_im_api_js__WEBPACK_IMPORTED_MODULE_4__.getBootstrap, [myUserId]);
|
||||
const offline = view === 'messages-offline' || !!myUserId && connected === false;
|
||||
const offline = view === 'messages-offline' || !myUserId || connected === false;
|
||||
const realConversations = normalizeConversations(chatList, myUserId).sort((a, b) => (b.pinned ? 1 : 0) - (a.pinned ? 1 : 0));
|
||||
const conversations = entryConversations(bootstrap).concat(realConversations);
|
||||
const filtered = conversations.filter(item => `${item.title}${item.summary}`.toLowerCase().includes(query.trim().toLowerCase()));
|
||||
@@ -13573,13 +13618,20 @@ function MessageHome({
|
||||
children: "notifications_off"
|
||||
}, void 0, false) : null]
|
||||
}, void 0, true)]
|
||||
}, item.id, true)), filtered.length === 0 ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("div", {
|
||||
}, item.id, true)), filtered.length === 0 ? query.trim() ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("div", {
|
||||
className: "messages-empty",
|
||||
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(Icon, {
|
||||
children: "search_off"
|
||||
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("p", {
|
||||
children: "未找到相关会话"
|
||||
}, void 0, false)]
|
||||
}, void 0, true) : (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("div", {
|
||||
className: "messages-empty",
|
||||
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(Icon, {
|
||||
children: "forum"
|
||||
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("p", {
|
||||
children: "暂无会话"
|
||||
}, void 0, false)]
|
||||
}, void 0, true) : null]
|
||||
}, void 0, true)]
|
||||
}, void 0, true), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(BottomNavigation, {}, void 0, false), menuOpen ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(QuickMenu, {
|
||||
@@ -19841,40 +19893,31 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
|
||||
break;
|
||||
}
|
||||
}
|
||||
handleCallRinging(callTopic, callSeq) {
|
||||
sendCallSignal(callTopic, evt, callSeq, payload) {
|
||||
const topic = this.tinode.getTopic(callTopic);
|
||||
if (!topic) {
|
||||
if (!topic || !this.tinode.isConnected()) {
|
||||
return;
|
||||
}
|
||||
topic.videoCall('ringing', callSeq);
|
||||
try {
|
||||
topic.videoCall(evt, callSeq, payload);
|
||||
} catch (err) {
|
||||
console.warn(`Failed to send call signal '${evt}'`, err);
|
||||
}
|
||||
}
|
||||
handleCallRinging(callTopic, callSeq) {
|
||||
this.sendCallSignal(callTopic, 'ringing', callSeq);
|
||||
}
|
||||
handleCallHangup(callTopic, callSeq) {
|
||||
const topic = this.tinode.getTopic(callTopic);
|
||||
if (!topic) {
|
||||
return;
|
||||
}
|
||||
topic.videoCall('hang-up', callSeq);
|
||||
this.sendCallSignal(callTopic, 'hang-up', callSeq);
|
||||
}
|
||||
handleCallSendOffer(callTopic, callSeq, sdp) {
|
||||
const topic = this.tinode.getTopic(callTopic);
|
||||
if (!topic) {
|
||||
return;
|
||||
}
|
||||
topic.videoCall('offer', callSeq, sdp);
|
||||
this.sendCallSignal(callTopic, 'offer', callSeq, sdp);
|
||||
}
|
||||
handleCallIceCandidate(callTopic, callSeq, candidate) {
|
||||
const topic = this.tinode.getTopic(callTopic);
|
||||
if (!topic) {
|
||||
return;
|
||||
}
|
||||
topic.videoCall('ice-candidate', callSeq, candidate);
|
||||
this.sendCallSignal(callTopic, 'ice-candidate', callSeq, candidate);
|
||||
}
|
||||
handleCallSendAnswer(callTopic, callSeq, sdp) {
|
||||
const topic = this.tinode.getTopic(callTopic);
|
||||
if (!topic) {
|
||||
return;
|
||||
}
|
||||
topic.videoCall('answer', callSeq, sdp);
|
||||
this.sendCallSignal(callTopic, 'answer', callSeq, sdp);
|
||||
}
|
||||
handleCallClose() {
|
||||
if (this.callTimeoutTimer) {
|
||||
|
||||
Reference in New Issue
Block a user