Skip to content

Commit

Permalink
refactor: fix reactivity bug in ui
Browse files Browse the repository at this point in the history
  • Loading branch information
ci010 committed Jan 5, 2022
1 parent 28f3707 commit 8e5cb19
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 88 deletions.
5 changes: 3 additions & 2 deletions src/renderer/windows/main/components/SearchBar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

<script lang=ts>
import { defineComponent, inject, ref, Ref, nextTick, watch, onMounted } from '@vue/composition-api'
import { useSearch, onSearchToggle } from '/@/windows/main/hooks'
import { useSearch, onSearchToggle, useSearchToggles } from '/@/windows/main/hooks'
function setupDraggable(self: Ref<any>) {
let initialX = 0
Expand Down Expand Up @@ -85,7 +85,8 @@ export default defineComponent({
return true
}
setupDraggable(self)
onSearchToggle(toggleBar)
const { toggles } = useSearchToggles()
toggles.unshift(toggleBar)
return {
show,
focused,
Expand Down
31 changes: 14 additions & 17 deletions src/renderer/windows/main/dialog/BaseJavaWizardDialog.vue
Original file line number Diff line number Diff line change
Expand Up @@ -55,38 +55,35 @@ export default defineComponent({
const data = reactive({
step: 0,
items: [],
status: 'none',
options: [{
options: [reactive({
autofix: true,
title: $t('diagnosis.missingJava.switch', { version: javaIssue.value.version }),
message: $t('diagnosis.missingJava.switch.message', { version: javaIssue.value.version }),
'disabled-message': $t('diagnosis.missingJava.switch.disabled', { version: javaIssue.value.version }),
title: computed(() => $t('diagnosis.missingJava.switch', { version: javaIssue.value.version })),
message: computed(() => $t('diagnosis.missingJava.switch.message', { version: javaIssue.value.version })),
'disabled-message': computed(() => $t('diagnosis.missingJava.switch.disabled', { version: javaIssue.value.version })),
disabled: validJava.value === undefined,
recommended: true,
}, {
}), reactive({
autofix: true,
title: $t('diagnosis.missingJava.autoDownload'),
message: $t('diagnosis.missingJava.autoDownload.message', { version: javaIssue.value.version }),
title: computed(() => $t('diagnosis.missingJava.autoDownload')),
message: computed(() => $t('diagnosis.missingJava.autoDownload.message', { version: javaIssue.value.version })),
disabled: false,
}, {
title: $t('diagnosis.missingJava.selectJava'),
message: $t('diagnosis.missingJava.selectJava.message'),
}), reactive({
autofix: false,
title: computed(() => $t('diagnosis.missingJava.selectJava')),
message: computed(() => $t('diagnosis.missingJava.selectJava.message')),
disabled: false,
}],
})],
})
const missing = computed(() => javaIssue.value.type === 'missing')
const reason = computed(() => (!missing.value ? $t('java.incompatibleJava') : $t('java.missing')))
const hint = computed(() => (!missing.value ? $t('java.incompatibleJavaHint', { version: javaIssue.value.version }) : $t('java.missingHint')))
function refresh() {
data.status = 'resolving'
// data.status = 'resolving'
refreshLocalJava().finally(() => {
if (missing.value) {
data.status = 'error'
// data.status = 'error'
show()
}
})
Expand Down
97 changes: 28 additions & 69 deletions src/renderer/windows/main/pages/ExportDialog.vue
Original file line number Diff line number Diff line change
@@ -1,39 +1,18 @@
<template>
<v-dialog
:value="value"
width="600"
@input="$emit('input', $event)"
>
<v-dialog :value="value" width="600" @input="$emit('input', $event)">
<v-card>
<v-toolbar
dark
tabs
color="green darken"
>
<v-toolbar-title v-if="isCurseforge">
{{ $t('profile.modpack.exportCurseforge') }}
</v-toolbar-title>
<v-toolbar-title v-else>
{{ $t('profile.modpack.export') }}
</v-toolbar-title>
<v-toolbar dark tabs color="green darken">
<v-toolbar-title v-if="isCurseforge">{{ $t('profile.modpack.exportCurseforge') }}</v-toolbar-title>
<v-toolbar-title v-else>{{ $t('profile.modpack.export') }}</v-toolbar-title>

<v-spacer />
<v-btn
icon
@click="$emit('input', false)"
>
<v-btn icon @click="$emit('input', false)">
<v-icon>arrow_drop_down</v-icon>
</v-btn>
</v-toolbar>
<v-container
grid-list-sm
style="overflow: auto; max-height: 450px"
>
<v-container grid-list-sm style="overflow: auto; max-height: 450px">
<v-subheader>{{ $t('profile.modpack.general') }}</v-subheader>
<v-container
grid-list-md
style="padding-top: 0px"
>
<v-container grid-list-md style="padding-top: 0px">
<v-layout row>
<v-flex d-flex>
<v-text-field
Expand Down Expand Up @@ -67,10 +46,7 @@
required
/>
</v-flex>
<v-flex
d-flex
xs6
>
<v-flex d-flex xs6>
<v-select
v-model="gameVersion"
:items="localVersions"
Expand All @@ -82,21 +58,15 @@
/>
</v-flex>
</v-layout>
<v-layout
v-if="!isCurseforge"
row
>
<v-layout v-if="!isCurseforge" row>
<v-flex d-flex>
<v-checkbox
v-model="includeAssets"
:label="$t('profile.modpack.includeAssets')"
hint="abc"
/>
</v-flex>
<v-flex
d-flex
xs6
>
<v-flex d-flex xs6>
<v-checkbox
v-model="includeLibraries"
:label="$t('profile.modpack.includeLibraries')"
Expand All @@ -107,47 +77,30 @@
</v-container>

<v-layout>
<v-subheader v-if="isCurseforge">
{{ $t('profile.modpack.overrides') }}
</v-subheader>
<v-subheader v-else>
{{ $t('profile.modpack.includes') }}
</v-subheader>
<v-subheader v-if="isCurseforge">{{ $t('profile.modpack.overrides') }}</v-subheader>
<v-subheader v-else>{{ $t('profile.modpack.includes') }}</v-subheader>
</v-layout>
<v-layout
row
style="padding: 5px; margin-bottom: 5px"
>
<instance-files
v-model="selected"
:items="files"
/>
<v-layout row style="padding: 5px; margin-bottom: 5px">
<instance-files v-model="selected" :items="files" />
</v-layout>
<v-layout row>
<v-btn
flat
large
@click="cancel"
>
{{ $t('cancel') }}
</v-btn>
<v-btn flat large :disabled="exporting" @click="cancel">{{ $t('cancel') }}</v-btn>
<v-spacer />
<v-btn
flat
color="primary"
large
:loading="exporting"
@click="confirm"
>
{{ $t('profile.modpack.export') }}
</v-btn>
>{{ $t('profile.modpack.export') }}</v-btn>
</v-layout>
</v-container>
</v-card>
</v-dialog>
</template>

<script lang=ts>
import { computed, defineComponent, nextTick, reactive, toRefs, watch } from '@vue/composition-api'
import { computed, defineComponent, nextTick, onMounted, reactive, toRefs, watch } from '@vue/composition-api'
import { useZipFilter } from '/@/windows/main/hooks'
import InstanceFiles from './InstanceFiles.vue'
import { useI18n, useInstance, useInstanceVersion, useLocalVersions, useWindowController, useService } from '/@/hooks'
Expand Down Expand Up @@ -178,10 +131,14 @@ export default defineComponent({
exporting: false,
selected: [] as string[],
files: [] as InstanceFile[],
includeLibraries: true,
includeAssets: true,
includeLibraries: false,
includeAssets: false,
})
function reset() {
data.includeAssets = false
data.includeLibraries = false
data.name = name.value
data.author = author.value
data.selected = []
data.gameVersion = folder.value ? folder.value : ''
}
Expand All @@ -194,6 +151,7 @@ export default defineComponent({
selected = files.filter(p => p.path.startsWith('config') || p.path.startsWith('mods')).map(p => p.path)
} else {
selected = files
.filter(file => !file.path.startsWith('.'))
.filter(file => !file.path.startsWith('logs'))
.filter(file => !file.path.startsWith('resourcepacks'))
.map(file => file.path)
Expand All @@ -206,13 +164,13 @@ export default defineComponent({
context.emit('input', false)
}
async function confirm() {
data.exporting = true
const { filePath } = await showSaveDialog({
title: $t('profile.modpack.export'),
defaultPath: `${data.name}-${data.version}`,
filters: [zipFilter],
})
if (filePath) {
data.exporting = true
if (props.isCurseforge) {
try {
const overrides = data.selected.filter(p => !!data.files.find(f => f.path === p && !f.isDirectory))
Expand All @@ -236,9 +194,10 @@ export default defineComponent({
files,
})
}
data.exporting = false
}
data.exporting = false
context.emit('input', false)
}
watch(() => props.value, () => {
if (props.value) {
Expand Down

0 comments on commit 8e5cb19

Please sign in to comment.