refactor(App, navigation): migrate to Expo Router and clean up navigation structure
- Updated App entry point to utilize Expo Router, simplifying the navigation setup. - Removed legacy navigation components and services to streamline the codebase. - Adjusted package.json to reflect the new entry point and updated dependencies for compatibility. - Enhanced overall application structure by consolidating navigation logic and improving maintainability.
This commit is contained in:
@@ -145,8 +145,8 @@ class GroupManager extends CacheBus<GroupManagerSnapshot, GroupManagerEvent> {
|
||||
});
|
||||
}
|
||||
|
||||
async getGroup(groupId: number | string, forceRefresh = false): Promise<GroupResponse> {
|
||||
const id = String(groupId);
|
||||
async getGroup(groupId: string, forceRefresh = false): Promise<GroupResponse> {
|
||||
const id = groupId;
|
||||
const cached = this.groupDetailCache.get(id);
|
||||
if (!forceRefresh && cached && !this.isExpired(cached) && cached.data) {
|
||||
return cached.data;
|
||||
@@ -204,8 +204,8 @@ class GroupManager extends CacheBus<GroupManagerSnapshot, GroupManagerEvent> {
|
||||
});
|
||||
}
|
||||
|
||||
async getMembers(groupId: number | string, page = 1, pageSize = 50, forceRefresh = false): Promise<GroupMemberListResponse> {
|
||||
const id = String(groupId);
|
||||
async getMembers(groupId: string, page = 1, pageSize = 50, forceRefresh = false): Promise<GroupMemberListResponse> {
|
||||
const id = groupId;
|
||||
const key = `${id}:${page}:${pageSize}`;
|
||||
const cached = this.groupMembersCache.get(key);
|
||||
if (!forceRefresh && cached && !this.isExpired(cached)) {
|
||||
|
||||
@@ -15,10 +15,10 @@ export class NetworkCursorGroupMemberListPagedSource implements IGroupMemberList
|
||||
private nextCursor: string | null = null;
|
||||
private hasMoreAfterLastLoad = false;
|
||||
private loadedOnce = false;
|
||||
private readonly groupId: number | string;
|
||||
private readonly groupId: string;
|
||||
private readonly pageSize: number;
|
||||
|
||||
constructor(groupId: number | string, pageSize: number = GROUP_MEMBER_LIST_PAGE_SIZE) {
|
||||
constructor(groupId: string, pageSize: number = GROUP_MEMBER_LIST_PAGE_SIZE) {
|
||||
this.groupId = groupId;
|
||||
this.pageSize = pageSize;
|
||||
}
|
||||
@@ -58,10 +58,10 @@ export class NetworkOffsetGroupMemberListPagedSource implements IGroupMemberList
|
||||
private nextPage = 1;
|
||||
private hasMoreAfterLastLoad = false;
|
||||
private loadedOnce = false;
|
||||
private readonly groupId: number | string;
|
||||
private readonly groupId: string;
|
||||
private readonly pageSize: number;
|
||||
|
||||
constructor(groupId: number | string, pageSize: number = GROUP_MEMBER_LIST_PAGE_SIZE) {
|
||||
constructor(groupId: string, pageSize: number = GROUP_MEMBER_LIST_PAGE_SIZE) {
|
||||
this.groupId = groupId;
|
||||
this.pageSize = pageSize;
|
||||
}
|
||||
@@ -100,7 +100,7 @@ export class NetworkOffsetGroupMemberListPagedSource implements IGroupMemberList
|
||||
|
||||
export function createRemoteGroupMemberListSource(
|
||||
kind: GroupMemberListSourceKind,
|
||||
groupId: number | string,
|
||||
groupId: string,
|
||||
pageSize: number = GROUP_MEMBER_LIST_PAGE_SIZE
|
||||
): IGroupMemberListPagedSource {
|
||||
return kind === 'offset'
|
||||
|
||||
33
src/stores/routePayloadCache.ts
Normal file
33
src/stores/routePayloadCache.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* 不可放入 URL 的路由载荷(系统消息对象、课表课程对象等)的短时缓存。
|
||||
* 深链仅带 id;从通知列表等入口跳转前先 stash,目标屏按 id 读取。
|
||||
*/
|
||||
import type { SystemMessageResponse } from '../types/dto';
|
||||
import type { Course } from '../types/schedule';
|
||||
|
||||
const systemById = new Map<string, SystemMessageResponse>();
|
||||
const courseById = new Map<string, { course: Course; relatedCourses: Course[] }>();
|
||||
|
||||
export const routePayloadCache = {
|
||||
stashSystemMessage(message: SystemMessageResponse): void {
|
||||
systemById.set(message.id, message);
|
||||
},
|
||||
|
||||
getSystemMessage(id: string): SystemMessageResponse | undefined {
|
||||
return systemById.get(id);
|
||||
},
|
||||
|
||||
stashCourseDetail(course: Course, relatedCourses: Course[]): void {
|
||||
courseById.set(String(course.id), { course, relatedCourses });
|
||||
},
|
||||
|
||||
getCourseDetail(id: string): { course: Course; relatedCourses: Course[] } | undefined {
|
||||
return courseById.get(id);
|
||||
},
|
||||
|
||||
takeCourseDetail(id: string): { course: Course; relatedCourses: Course[] } | undefined {
|
||||
const v = courseById.get(id);
|
||||
if (v) courseById.delete(id);
|
||||
return v;
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user