summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorXeltica <7106976+Xeltica@users.noreply.github.com>2020-02-15 01:33:09 +0900
committerGitHub <noreply@github.com>2020-02-15 01:33:08 +0900
commit4f1981df03c32706eb91ff604b2436621a7dabba (patch)
tree57bc7e53cf3bba35d7efa1f528a85935a87ea8de /src
parentNew Crowdin translations (#5938) (diff)
downloadmisskey-4f1981df03c32706eb91ff604b2436621a7dabba.tar.gz
misskey-4f1981df03c32706eb91ff604b2436621a7dabba.tar.bz2
misskey-4f1981df03c32706eb91ff604b2436621a7dabba.zip
サイドバーメニューからアカウントを作成できるように (#5910)
* メニューからアカウントを作成できるようにした * i18n * Update signup.vue Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
Diffstat (limited to 'src')
-rw-r--r--src/client/app.vue26
-rw-r--r--src/client/components/signup-dialog.vue19
-rw-r--r--src/client/components/signup.vue20
-rw-r--r--src/client/pages/index.welcome.entrance.vue4
4 files changed, 59 insertions, 10 deletions
diff --git a/src/client/app.vue b/src/client/app.vue
index 615f6b9cd3..6a4acfe070 100644
--- a/src/client/app.vue
+++ b/src/client/app.vue
@@ -364,10 +364,15 @@ export default Vue.extend({
icon: faCog,
}, null, {
type: 'item',
- text: this.$t('addAcount'),
icon: faPlus,
+ text: this.$t('addAcount'),
action: () => { this.addAcount() },
- }], ...accountItems],
+ }, {
+ type: 'item',
+ icon: faPlus,
+ text: this.$t('createAccount'),
+ action: () => { this.createAccount() },
+ }, null, ...accountItems, ]],
align: 'left',
fixed: true,
width: 240,
@@ -507,9 +512,20 @@ export default Vue.extend({
});
},
- async switchAccount(account) {
- const token = this.$store.state.device.accounts.find(x => x.id === account.id).token;
- this.$root.api('i', {}, token).then(i => {
+ async createAccount() {
+ this.$root.new(await import('./components/signup-dialog.vue').then(m => m.default)).$once('signup', res => {
+ this.$store.dispatch('addAcount', res);
+ this.switchAccountWithToken(res.i);
+ });
+ },
+
+ async switchAccount(account: any) {
+ const token = this.$store.state.device.accounts.find((x: any) => x.id === account.id).token;
+ this.switchAccountWithToken(token);
+ },
+
+ switchAccountWithToken(token: string) {
+ this.$root.api('i', {}, token).then((i: any) => {
this.$store.dispatch('switchAccount', {
...i,
token: token
diff --git a/src/client/components/signup-dialog.vue b/src/client/components/signup-dialog.vue
index 76421d44ec..10cdf3a567 100644
--- a/src/client/components/signup-dialog.vue
+++ b/src/client/components/signup-dialog.vue
@@ -1,7 +1,7 @@
<template>
-<x-window @closed="() => { $emit('closed'); destroyDom(); }">
+<x-window ref="window" @closed="() => { $emit('closed'); destroyDom(); }">
<template #header>{{ $t('signup') }}</template>
- <x-signup/>
+ <x-signup :auto-set="autoSet" @signup="onSignup"/>
</x-window>
</template>
@@ -18,5 +18,20 @@ export default Vue.extend({
XSignup,
XWindow,
},
+
+ props: {
+ autoSet: {
+ type: Boolean,
+ required: false,
+ default: false,
+ }
+ },
+
+ methods: {
+ onSignup(res) {
+ this.$emit('signup', res);
+ this.$refs.window.close();
+ }
+ }
});
</script>
diff --git a/src/client/components/signup.vue b/src/client/components/signup.vue
index b821af396c..34765a7a26 100644
--- a/src/client/components/signup.vue
+++ b/src/client/components/signup.vue
@@ -84,6 +84,14 @@ export default Vue.extend({
}
},
+ props: {
+ autoSet: {
+ type: Boolean,
+ required: false,
+ default: false,
+ }
+ },
+
computed: {
meta() {
return this.$store.state.instance.meta;
@@ -97,6 +105,15 @@ export default Vue.extend({
}
},
+ created() {
+ if (this.autoSet) {
+ this.$once('signup', res => {
+ localStorage.setItem('i', res.i);
+ location.reload();
+ });
+ }
+ },
+
mounted() {
const head = document.getElementsByTagName('head')[0];
const script = document.createElement('script');
@@ -166,8 +183,7 @@ export default Vue.extend({
username: this.username,
password: this.password
}).then(res => {
- localStorage.setItem('i', res.i);
- location.href = '/';
+ this.$emit('signup', res);
});
}).catch(() => {
this.submitting = false;
diff --git a/src/client/pages/index.welcome.entrance.vue b/src/client/pages/index.welcome.entrance.vue
index f63e0c2c2b..a9343e87cc 100644
--- a/src/client/pages/index.welcome.entrance.vue
+++ b/src/client/pages/index.welcome.entrance.vue
@@ -62,7 +62,9 @@ export default Vue.extend({
},
signup() {
- this.$root.new(XSignupDialog);
+ this.$root.new(XSignupDialog, {
+ autoSet: true
+ });
}
}
});