refactor(stores): unify data sources pattern and extract BaseManager base class
All checks were successful
Frontend CI / build-and-push-web (push) Successful in 3m4s
Frontend CI / ota-android (push) Successful in 11m9s
Frontend CI / build-android-apk (push) Successful in 1h23m57s

- Add BaseManager/CachedManager base classes to eliminate duplicate cache logic
- Add postListSources.ts with IPostListPagedSource interface
- Add groupListSources.ts with IGroupListPagedSource interface
- Refactor postManager to use CachedManager and Sources pattern
- Refactor groupManager to use CachedManager and Sources pattern
- Clean up duplicate methods in groupService.ts
- Fix TypeScript errors and remove mock data
This commit is contained in:
2026-03-26 16:46:22 +08:00
parent b6583e07c8
commit 4b89b50006
13 changed files with 858 additions and 628 deletions

View File

@@ -9,17 +9,10 @@ import AsyncStorage from '@react-native-async-storage/async-storage';
import { showConfirm } from './dialogService';
// 条件导入原生模块(仅在 Android 上可用)
let FileSystem: typeof import('expo-file-system/legacy') | null = null;
let IntentLauncher: typeof import('expo-intent-launcher') | null = null;
if (Platform.OS === 'android') {
try {
FileSystem = require('expo-file-system/legacy');
IntentLauncher = require('expo-intent-launcher');
} catch (e) {
console.warn('Failed to load native modules for APK update:', e);
}
}
// eslint-disable-next-line @typescript-eslint/no-var-requires
const FileSystem = Platform.OS === 'android' ? require('expo-file-system/legacy') : null;
// eslint-disable-next-line @typescript-eslint/no-var-requires
const IntentLauncher = Platform.OS === 'android' ? require('expo-intent-launcher') : null;
// 更新服务器地址
const UPDATES_SERVER_URL = Constants.expoConfig?.extra?.updatesUrl