Skip to content

Commit

Permalink
upd: cache com mojang projects
Browse files Browse the repository at this point in the history
This speeds up subsequent project chooser activations significantly.
  • Loading branch information
solvedDev committed Sep 10, 2022
1 parent dd34150 commit ebb1db5
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 7 deletions.
13 changes: 11 additions & 2 deletions src/components/OutputFolders/ComMojang/ProjectLoader.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { compareVersions } from 'bridge-common-utils'
import { AnyDirectoryHandle } from '../../FileSystem/Types'
import { App } from '/@/App'
import { loadAsDataURL, loadHandleAsDataURL } from '/@/utils/loadAsDataUrl'
import { loadHandleAsDataURL } from '/@/utils/loadAsDataUrl'

export interface IComMojangPack {
type: 'behaviorPack' | 'resourcePack'
Expand All @@ -17,6 +17,8 @@ export interface IComMojangProject {
}

export class ComMojangProjectLoader {
protected cachedProjects: IComMojangProject[] | null = null

constructor(protected app: App) {}

get comMojang() {
Expand All @@ -26,7 +28,14 @@ export class ComMojangProjectLoader {
return this.app.comMojang.fileSystem
}

async reload() {
this.cachedProjects = null
await this.loadProjects()
}

async loadProjects() {
if (this.cachedProjects) return this.cachedProjects

if (
!this.comMojang.setup.hasFired ||
!this.comMojang.status.hasComMojang
Expand All @@ -39,7 +48,6 @@ export class ComMojangProjectLoader {
if (behaviorPacks.size === 0) return []
const resourcePacks = await this.loadPacks('development_resource_packs')

console.log(behaviorPacks)
const projects: IComMojangProject[] = []
for (const behaviorPack of behaviorPacks.values()) {
const dependencies = behaviorPack.manifest?.dependencies
Expand All @@ -64,6 +72,7 @@ export class ComMojangProjectLoader {
})
}

this.cachedProjects = projects
return projects
}

Expand Down
9 changes: 5 additions & 4 deletions src/components/Projects/ProjectChooser/ProjectChooser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,15 @@ export class ProjectChooserWindow extends NewBaseWindow {
protected experimentalToggles: (IExperimentalToggle & {
isActive: boolean
})[] = []
protected comMojangProjectLoader

protected state: IProjectChooserState = reactive<any>({
...super.getState(),
showLoadAllButton: false,
currentProject: undefined,
})

constructor() {
constructor(app: App) {
super(ProjectChooserComponent, false, true)

this.state.actions.push(
Expand All @@ -52,6 +53,7 @@ export class ProjectChooserWindow extends NewBaseWindow {
},
})
)
this.comMojangProjectLoader = markRaw(new ComMojangProjectLoader(app))

this.defineWindow()
}
Expand Down Expand Up @@ -114,9 +116,8 @@ export class ProjectChooserWindow extends NewBaseWindow {
)

console.time('Load com.mojang projects')
const comMojangProjects = await new ComMojangProjectLoader(
app
).loadProjects()
const comMojangProjects =
await this.comMojangProjectLoader.loadProjects()
comMojangProjects.forEach((project) =>
this.addProject(`comMojang/${project.name}`, project.name, {
name: project.name,
Expand Down
3 changes: 2 additions & 1 deletion src/components/Windows/Windows.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { CompilerWindow } from '../Compiler/Window/Window'
export class Windows {
settings: SettingsWindow
socialsWindow = new SocialsWindow()
projectChooser = new ProjectChooserWindow()
projectChooser: ProjectChooserWindow
createProject = new CreateProjectWindow()
loadingWindow = new LoadingWindow()
createPreset = new CreatePresetWindow()
Expand All @@ -24,5 +24,6 @@ export class Windows {

constructor(protected app: App) {
this.settings = new SettingsWindow(app)
this.projectChooser = new ProjectChooserWindow(app)
}
}

0 comments on commit ebb1db5

Please sign in to comment.