fix(PostImages, CreatePostScreen): adjust image gap for improved layout consistency
Some checks failed
Frontend CI / build-and-push-web (push) Successful in 9m17s
Frontend CI / ota-android (push) Successful in 11m48s
Frontend CI / build-android-apk (push) Successful in 1h12m38s
Frontend CI / ota-android (pull_request) Has been skipped
Frontend CI / build-and-push-web (pull_request) Failing after 37s
Frontend CI / build-android-apk (pull_request) Has been cancelled
Some checks failed
Frontend CI / build-and-push-web (push) Successful in 9m17s
Frontend CI / ota-android (push) Successful in 11m48s
Frontend CI / build-android-apk (push) Successful in 1h12m38s
Frontend CI / ota-android (pull_request) Has been skipped
Frontend CI / build-and-push-web (pull_request) Failing after 37s
Frontend CI / build-android-apk (pull_request) Has been cancelled
- Reduced image gap in PostImages and CreatePostScreen components from 12 to 4 (desktop) and 8 to 2 (mobile) for better spacing. - Updated ImageGrid component to modify grid item widths for enhanced layout. - Refactored PostRepository to improve local caching logic, ensuring non-blocking UI updates during cache writes. - Introduced saveConversationsWithRelatedCache function to streamline conversation, user, and group data saving in the database.
This commit is contained in:
@@ -991,3 +991,53 @@ export const updateConversationCacheUnreadCount = async (
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 批量保存会话列表及其相关数据(用户、群组)
|
||||
* 在单个队列操作中完成,避免多次并发数据库操作导致的 statement 生命周期问题
|
||||
*/
|
||||
export const saveConversationsWithRelatedCache = async (
|
||||
conversations: ConversationResponse[],
|
||||
users?: UserDTO[],
|
||||
groups?: GroupResponse[]
|
||||
): Promise<void> => {
|
||||
if (!conversations || conversations.length === 0) return;
|
||||
|
||||
const now = new Date().toISOString();
|
||||
|
||||
await enqueueWrite(async () => {
|
||||
const database = await getDb();
|
||||
|
||||
// 1. 保存会话列表
|
||||
for (const conversation of conversations) {
|
||||
await database.runAsync(
|
||||
`INSERT OR REPLACE INTO conversation_list_cache (id, data, updatedAt) VALUES (?, ?, ?)`,
|
||||
[
|
||||
String(conversation.id),
|
||||
JSON.stringify(conversation),
|
||||
conversation.updated_at || now,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
// 2. 保存用户
|
||||
if (users && users.length > 0) {
|
||||
for (const user of users) {
|
||||
await database.runAsync(
|
||||
`INSERT OR REPLACE INTO users (id, data, updatedAt) VALUES (?, ?, ?)`,
|
||||
[String(user.id), JSON.stringify(user), now]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 3. 保存群组
|
||||
if (groups && groups.length > 0) {
|
||||
for (const group of groups) {
|
||||
await database.runAsync(
|
||||
`INSERT OR REPLACE INTO groups (id, data, updatedAt) VALUES (?, ?, ?)`,
|
||||
[String(group.id), JSON.stringify(group), now]
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
@@ -25,9 +25,7 @@ import {
|
||||
getConversationCache,
|
||||
getConversationListCache,
|
||||
saveConversationCache,
|
||||
saveConversationsCache,
|
||||
saveGroupsCache,
|
||||
saveUsersCache,
|
||||
saveConversationsWithRelatedCache,
|
||||
updateConversationCacheUnreadCount,
|
||||
} from './database';
|
||||
|
||||
@@ -48,18 +46,14 @@ class MessageService {
|
||||
list: ConversationResponse[]
|
||||
): Promise<void> {
|
||||
if (!list.length) return;
|
||||
await saveConversationsCache(list);
|
||||
await saveUsersCache(
|
||||
list.flatMap(conv => [
|
||||
...(conv.participants || []),
|
||||
...(conv.last_message?.sender ? [conv.last_message.sender] : []),
|
||||
])
|
||||
);
|
||||
await saveGroupsCache(
|
||||
list
|
||||
.map(conv => conv.group)
|
||||
.filter((group): group is NonNullable<typeof group> => Boolean(group))
|
||||
);
|
||||
const users = list.flatMap(conv => [
|
||||
...(conv.participants || []),
|
||||
...(conv.last_message?.sender ? [conv.last_message.sender] : []),
|
||||
]);
|
||||
const groups = list
|
||||
.map(conv => conv.group)
|
||||
.filter((group): group is NonNullable<typeof group> => Boolean(group));
|
||||
await saveConversationsWithRelatedCache(list, users, groups);
|
||||
}
|
||||
|
||||
/** offset 会话列表单页:请求 + 落库 */
|
||||
|
||||
Reference in New Issue
Block a user