refactor(post): consolidate post sync to PostSyncService and remove ProcessPostUseCase
All checks were successful
Frontend CI / build-and-push-web (push) Successful in 3m28s
Frontend CI / ota-android (push) Successful in 10m25s
Frontend CI / build-android-apk (push) Successful in 55m22s

- Replace ProcessPostUseCase with new PostSyncService in src/services/post/
- Add postListStore for state management in src/stores/post/
- Remove deprecated ProcessPostUseCase and ProcessMessageUseCase files
- Delete architecture documentation files (ARCHITECTURE_REFACTOR_PLAN.md, architecture-comparison-report.md)
- Update all consumers (HomeScreen, PostDetailScreen, SearchScreen, useUserProfile, useDifferentialPosts)
- Simplify postService to only contain API layer methods
- Remove unused type exports from message stores

BREAKING CHANGE: ProcessPostUseCase and ProcessMessageUseCase have been removed.
Use postSyncService for post operations instead.
This commit is contained in:
lafay
2026-04-13 00:26:05 +08:00
parent 6610d2f173
commit 2adc9360a5
21 changed files with 679 additions and 2896 deletions

View File

@@ -34,7 +34,7 @@ import type { PostCardAction } from '../../components/business/PostCard';
import { Loading, EmptyState, Text, ImageGallery, ImageGridItem, ResponsiveGrid } from '../../components/common';
import { useResponsive, useResponsiveSpacing } from '../../hooks/useResponsive';
import { useDifferentialPosts } from '../../hooks/useDifferentialPosts';
import { processPostUseCase } from '../../core/usecases/ProcessPostUseCase';
import { postSyncService } from '../../services/post/PostSyncService';
import { SearchScreen } from './SearchScreen';
import { CreatePostScreen } from '../create/CreatePostScreen';
import * as hrefs from '../../navigation/hrefs';
@@ -375,7 +375,7 @@ export const HomeScreen: React.FC = () => {
isLoadingMoreRef.current = true;
const startedAt = Date.now();
try {
await processPostUseCase.loadMorePosts(listKey);
await postSyncService.loadMorePosts(listKey);
console.log('[PostPerf] home loadMore', {
listKey,
costMs: Date.now() - startedAt,
@@ -409,7 +409,7 @@ export const HomeScreen: React.FC = () => {
const refresh = useCallback(async () => {
try {
// 先获取正确类型的帖子
await processPostUseCase.fetchPosts(
await postSyncService.fetchPosts(
{
page: 1,
pageSize: DEFAULT_PAGE_SIZE,
@@ -554,9 +554,9 @@ export const HomeScreen: React.FC = () => {
const handleLike = async (post: Post) => {
try {
if (post.is_liked) {
await processPostUseCase.unlikePost(post.id);
await postSyncService.unlikePost(post.id);
} else {
await processPostUseCase.likePost(post.id);
await postSyncService.likePost(post.id);
}
} catch (error) {
console.error('点赞操作失败:', error);
@@ -567,9 +567,9 @@ export const HomeScreen: React.FC = () => {
const handleBookmark = async (post: Post) => {
try {
if (post.is_favorited) {
await processPostUseCase.unfavoritePost(post.id);
await postSyncService.unfavoritePost(post.id);
} else {
await processPostUseCase.favoritePost(post.id);
await postSyncService.favoritePost(post.id);
}
} catch (error) {
console.error('收藏操作失败:', error);
@@ -582,7 +582,7 @@ export const HomeScreen: React.FC = () => {
try {
const res = await postService.sharePost(post.id, { channel: 'copy_link' });
if (res.ok && res.shares_count != null) {
processPostUseCase.applyShareCountUpdate(post.id, res.shares_count);
postSyncService.applyShareCountUpdate(post.id, res.shares_count);
}
} catch (shareError) {
console.error('上报分享次数失败:', shareError);