forked from trent_larson/crowd-funder-for-time-pwa
refactor: defer project loading until MeetingProjectDialog opens
- Move loadProjects() call from created() to handleDialogOpen() - Remove allProjects check from ensureSelectedProjectLoaded() - Projects now load only when dialog is opened, improving initial page load performance - ensureSelectedProjectLoaded() now directly fetches project by handleId when needed
This commit is contained in:
@@ -444,9 +444,6 @@ export default class OnboardMeetingView extends Vue {
|
|||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
this.allMyDids = await (this as any).$getAllAccountDids();
|
this.allMyDids = await (this as any).$getAllAccountDids();
|
||||||
|
|
||||||
// Load projects
|
|
||||||
await this.loadProjects();
|
|
||||||
|
|
||||||
await this.fetchCurrentMeeting();
|
await this.fetchCurrentMeeting();
|
||||||
|
|
||||||
// Ensure selected project is loaded if projectLink exists
|
// Ensure selected project is loaded if projectLink exists
|
||||||
@@ -525,7 +522,6 @@ export default class OnboardMeetingView extends Vue {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Ensure the selected project is loaded if projectLink exists
|
* Ensure the selected project is loaded if projectLink exists
|
||||||
* Checks allProjects first, then fetches if not found
|
|
||||||
*/
|
*/
|
||||||
async ensureSelectedProjectLoaded(): Promise<void> {
|
async ensureSelectedProjectLoaded(): Promise<void> {
|
||||||
const projectLink =
|
const projectLink =
|
||||||
@@ -537,16 +533,6 @@ export default class OnboardMeetingView extends Vue {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if already loaded in allProjects
|
|
||||||
const existingProject = this.allProjects.find(
|
|
||||||
(p) => p.handleId === projectLink,
|
|
||||||
);
|
|
||||||
if (existingProject) {
|
|
||||||
this.selectedProjectData = existingProject;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Not in allProjects, fetch it
|
|
||||||
await this.fetchProjectByHandleId(projectLink);
|
await this.fetchProjectByHandleId(projectLink);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -991,13 +977,18 @@ export default class OnboardMeetingView extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle dialog open event - stop auto-refresh in MembersList
|
* Handle dialog open event - stop auto-refresh in MembersList and load projects
|
||||||
*/
|
*/
|
||||||
handleDialogOpen(): void {
|
async handleDialogOpen(): Promise<void> {
|
||||||
const membersList = this.$refs.membersList as MembersList;
|
const membersList = this.$refs.membersList as MembersList;
|
||||||
if (membersList) {
|
if (membersList) {
|
||||||
membersList.stopAutoRefresh();
|
membersList.stopAutoRefresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Load projects when dialog opens (if not already loaded)
|
||||||
|
if (this.allProjects.length === 0) {
|
||||||
|
await this.loadProjects();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user