This commit is contained in:
syuilo 2020-09-21 11:24:55 +09:00
parent 4167aac7dd
commit 37b26504e3
6 changed files with 38 additions and 13 deletions

View File

@ -32,11 +32,9 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons'; import { faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons';
import copyToClipboard from '@/scripts/copy-to-clipboard';
//import updateAvatar from '../api/update-avatar';
//import updateBanner from '../api/update-banner';
import XFileThumbnail from './drive-file-thumbnail.vue';
import { faDownload, faLink, faICursor, faTrashAlt } from '@fortawesome/free-solid-svg-icons'; import { faDownload, faLink, faICursor, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
import copyToClipboard from '@/scripts/copy-to-clipboard';
import XFileThumbnail from './drive-file-thumbnail.vue';
import bytes from '../filters/bytes'; import bytes from '../filters/bytes';
import * as os from '@/os'; import * as os from '@/os';
@ -162,11 +160,11 @@ export default defineComponent({
}, },
setAsAvatar() { setAsAvatar() {
updateAvatar(this.$root)(this.file); os.updateAvatar(this.file);
}, },
setAsBanner() { setAsBanner() {
updateBanner(this.$root)(this.file); os.updateBanner(this.file);
}, },
addApp() { addApp() {

View File

@ -1,5 +1,5 @@
<template> <template>
<x-window ref="window" :width="400" :height="450" :no-padding="true" @closed="() => { $emit('closed'); destroyDom(); }" :with-ok-button="true" :ok-button-disabled="false" @ok="ok()" :can-close="false"> <x-window ref="window" :width="400" :height="450" :no-padding="true" @close="$emit('done')" :with-ok-button="true" :ok-button-disabled="false" @ok="ok()" :can-close="false">
<template #header> <template #header>
{{ title }} {{ title }}
</template> </template>
@ -53,6 +53,8 @@ export default defineComponent({
}, },
}, },
emits: ['done'],
data() { data() {
return { return {
values: {} values: {}
@ -61,14 +63,13 @@ export default defineComponent({
created() { created() {
for (const item in this.form) { for (const item in this.form) {
Vue.set(this.values, item, this.form[item].hasOwnProperty('default') ? this.form[item].default : null); this.values[item] = this.form[item].hasOwnProperty('default') ? this.form[item].default : null;
} }
}, },
methods: { methods: {
ok() { ok() {
this.$emit('ok', this.values); this.$emit('done', this.values);
this.$refs.window.close();
}, },
} }
}); });

View File

@ -144,6 +144,27 @@ export function dialog(props: Record<string, any>, opts?: { cancelableByBgClick:
}); });
} }
export function form(title, form, opts?) {
return new PCancelable((resolve, reject, onCancel) => {
const dialog = modal(defineAsyncComponent(() => import('@/components/form-window.vue')), { title, form }, {}, { cancelableByBgClick: opts?.cancelableByBgClick });
dialog.then(result => {
if (result) {
resolve(result);
} else {
resolve({ canceled: true });
}
});
dialog.catch(reject);
onCancel.shouldReject = false;
onCancel(() => {
dialog.cancel();
});
});
}
export async function selectUser() { export async function selectUser() {
const component = await import('@/components/user-select.vue'); const component = await import('@/components/user-select.vue');
return new Promise((res, rej) => { return new Promise((res, rej) => {

View File

@ -37,7 +37,7 @@
<router-link class="_panel _buttonPrimary" to="/my/apps" style="margin: var(--margin) auto;">{{ $t('installedApps') }}</router-link> <router-link class="_panel _buttonPrimary" to="/my/apps" style="margin: var(--margin) auto;">{{ $t('installedApps') }}</router-link>
<button class="_panel _buttonPrimary" @click="$root.signout()" style="margin: var(--margin) auto;">{{ $t('logout') }}</button> <button class="_panel _buttonPrimary" @click="signout()" style="margin: var(--margin) auto;">{{ $t('logout') }}</button>
</div> </div>
</template> </template>
@ -133,6 +133,11 @@ export default defineComponent({
}); });
}); });
}); });
},
signout() {
this.$store.dispatch('logout');
location.href = '/';
} }
} }
}); });

View File

@ -173,7 +173,7 @@ export default defineComponent({
config[key].default = this.selectedPlugin.configData[key]; config[key].default = this.selectedPlugin.configData[key];
} }
const { canceled, result } = await this.$root.form(this.selectedPlugin.name, config); const { canceled, result } = await os.form(this.selectedPlugin.name, config);
if (canceled) return; if (canceled) return;
this.$store.commit('deviceUser/configPlugin', { this.$store.commit('deviceUser/configPlugin', {

View File

@ -51,7 +51,7 @@ export default function <T extends Form>(data: {
for (const item of Object.keys(form)) { for (const item of Object.keys(form)) {
form[item].default = this.props[item]; form[item].default = this.props[item];
} }
const { canceled, result } = await this.$root.form(data.name, form); const { canceled, result } = await os.form(data.name, form);
if (canceled) return; if (canceled) return;
for (const key of Object.keys(result)) { for (const key of Object.keys(result)) {