Skip to content

Commit

Permalink
Fix comMojang projects with greet screen
Browse files Browse the repository at this point in the history
  • Loading branch information
outercloudstudio committed May 23, 2024
1 parent e7501ae commit b392b78
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 7 deletions.
6 changes: 4 additions & 2 deletions src/App.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ export class App {
'availableProjectsFileChanged',
'beforeModifiedProject',
'modifiedProject',
'comMojangProjectChanged',
])
public static readonly ready = new Signal<App>()
protected static _instance: Readonly<App>
Expand Down Expand Up @@ -128,8 +129,9 @@ export class App {

get isNoProjectSelected() {
return (
this.projectManager.currentProject === null ||
this.projectManager.currentProject.isVirtualProject
(this.projectManager.currentProject === null ||
this.projectManager.currentProject.isVirtualProject) &&
!this.viewComMojangProject.hasComMojangProjectLoaded
)
}

Expand Down
7 changes: 7 additions & 0 deletions src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,13 @@ export default {
() => (this.isNoProjectSelected = app.isNoProjectSelected)
)
)
this.disposables.push(
App.eventSystem.on(
'comMojangProjectChanged',
() => (this.isNoProjectSelected = app.isNoProjectSelected)
)
)
})
setFullscreenElement(this.$refs.appContainer.$el)
Expand Down
2 changes: 1 addition & 1 deletion src/components/CommandBar/CommandBar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ export default {
this.actions = [
...baseActions,
...(app.isNoProjectSelected
...(app.isNoProjectSelected || app.project.isVirtualProject
? []
: await this.loadFilesFromProject(app.project)),
...extensionActions,
Expand Down
31 changes: 27 additions & 4 deletions src/components/Greet/Greet.vue
Original file line number Diff line number Diff line change
Expand Up @@ -98,14 +98,14 @@
>
<div class="project-icon w-full overflow-hidden">
<img
:src="project.icon"
:src="project.icon ?? project.packs[0].packIcon"
class="w-full aspect-video object-cover"
/>
</div>
<p
class="text-sm text-center mt-auto mb-auto ml-0.5 mr-0.5"
>
{{ project.displayName }}
{{ project.displayName ?? project.name }}
</p>
<v-tooltip color="tooltip" left>
Expand Down Expand Up @@ -220,6 +220,8 @@ import { useTranslations } from '/@/components/Composables/useTranslations'
import { isUsingFileSystemPolyfill } from '/@/components/FileSystem/Polyfill'
import { NotificationStore } from '/@/components/Notifications/state'
import { tasks } from '/@/components/TaskManager/TaskManager'
import { ComMojangProjectLoader } from '/@/components/OutputFolders/ComMojang/ProjectLoader'
import { virtualProjectName } from '../Projects/Project/Project'
const tauri = import.meta.env.VITE_IS_TAURI_APP
Expand Down Expand Up @@ -247,19 +249,31 @@ async function loadFolder() {
const app = await App.getApp()
await app.setupBridgeFolder(bridgeFolderSelected.value)
await app.comMojang.setupComMojang()
}
let disposables: any[] = []
let projects: Ref<any> = ref([])
let comMojangProjectLoader: null | ComMojangProjectLoader = null
async function loadProjects() {
const app = await App.getApp()
projects.value = await app.fileSystem
.readJSON('~local/data/projects.json')
.catch(() => [])
if (comMojangProjectLoader !== null) {
projects.value = projects.value.concat(
(await comMojangProjectLoader.loadProjects()).map((project) => ({
...project,
comMojang: true,
}))
)
}
await sortProjects()
}
Expand All @@ -272,7 +286,7 @@ function sortProjects() {
const revalence = (b.lastOpened ?? 0) - (a.lastOpened ?? 0)
if (revalence !== 0) return revalence
return a.displayName.localeCompare(b.displayName)
return (a.displayName ?? a.name).localeCompare(b.displayName ?? b.name)
})
}
Expand All @@ -285,7 +299,14 @@ async function selectProject(project: any) {
if (!wasSuccessful) return
}
await app.projectManager.selectProject(project.name, true)
if (project.comMojang) {
await app.projectManager.selectProject(virtualProjectName)
app.viewComMojangProject.loadComMojangProject(project)
return
}
await app.projectManager.selectProject(project.name)
}
async function saveProjects() {
Expand Down Expand Up @@ -323,6 +344,8 @@ onMounted(async () => {
bridgeFolderSelected.value = true
}, true)
)
comMojangProjectLoader = new ComMojangProjectLoader(app)
})
onUnmounted(() => {
Expand Down
4 changes: 4 additions & 0 deletions src/components/OutputFolders/ComMojang/Sidebar/ViewProject.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@ export class ViewComMojangProject extends SidebarContent {

this.headerSlot = ProjectHeaderComponent
this.sidebarElement.select()

App.eventSystem.dispatch('comMojangProjectChanged', project)
}
async clearComMojangProject() {
const app = await App.getApp()
Expand All @@ -112,6 +114,8 @@ export class ViewComMojangProject extends SidebarContent {

this.disposables.forEach((d) => d.dispose())
this.disposables = []

App.eventSystem.dispatch('comMojangProjectChanged')

Check failure on line 118 in src/components/OutputFolders/ComMojang/Sidebar/ViewProject.ts

View workflow job for this annotation

GitHub Actions / check

Expected 2 arguments, but got 1.
}

onContentRightClick(event: MouseEvent): void {
Expand Down

0 comments on commit b392b78

Please sign in to comment.