summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorAndreas Nedbal <andreas.nedbal@in2code.de>2022-05-03 13:33:40 +0200
committerGitHub <noreply@github.com>2022-05-03 20:33:40 +0900
commit0e26fae3bb5beaa587101f7792b904398f620244 (patch)
treefa26242335462eb9b920210a4705f0d3b300ed87 /packages
parentMerge pull request #8593 from pixeldesu/fix/os-defineasync (diff)
downloadmisskey-0e26fae3bb5beaa587101f7792b904398f620244.tar.gz
misskey-0e26fae3bb5beaa587101f7792b904398f620244.tar.bz2
misskey-0e26fae3bb5beaa587101f7792b904398f620244.zip
refactor(client): refactor settings/accounts to use Composition API (#8604)
Diffstat (limited to 'packages')
-rw-r--r--packages/client/src/pages/settings/accounts.vue139
1 files changed, 69 insertions, 70 deletions
diff --git a/packages/client/src/pages/settings/accounts.vue b/packages/client/src/pages/settings/accounts.vue
index 349c684f7c..ecb2d036f2 100644
--- a/packages/client/src/pages/settings/accounts.vue
+++ b/packages/client/src/pages/settings/accounts.vue
@@ -1,7 +1,7 @@
<template>
<div class="_formRoot">
<FormSuspense :p="init">
- <FormButton primary @click="addAccount"><i class="fas fa-plus"></i> {{ $ts.addAccount }}</FormButton>
+ <FormButton primary @click="addAccount"><i class="fas fa-plus"></i> {{ i18n.ts.addAccount }}</FormButton>
<div v-for="account in accounts" :key="account.id" class="_panel _button lcjjdxlm" @click="menu(account, $event)">
<div class="avatar">
@@ -20,90 +20,89 @@
</div>
</template>
-<script lang="ts">
-import { defineAsyncComponent, defineComponent } from 'vue';
+<script lang="ts" setup>
+import { defineAsyncComponent, defineExpose, ref } from 'vue';
import FormSuspense from '@/components/form/suspense.vue';
import FormButton from '@/components/ui/button.vue';
import * as os from '@/os';
import * as symbols from '@/symbols';
-import { getAccounts, addAccount, login } from '@/account';
+import { getAccounts, addAccount as addAccounts, login, $i } from '@/account';
+import { i18n } from '@/i18n';
-export default defineComponent({
- components: {
- FormSuspense,
- FormButton,
- },
+const storedAccounts = ref<any>(null);
+const accounts = ref<any>(null);
- emits: ['info'],
+const init = async () => {
+ getAccounts().then(accounts => {
+ storedAccounts.value = accounts.filter(x => x.id !== $i!.id);
- data() {
- return {
- [symbols.PAGE_INFO]: {
- title: this.$ts.accounts,
- icon: 'fas fa-users',
- bg: 'var(--bg)',
- },
- storedAccounts: getAccounts().then(accounts => accounts.filter(x => x.id !== this.$i.id)),
- accounts: null,
- init: async () => os.api('users/show', {
- userIds: (await this.storedAccounts).map(x => x.id)
- }).then(accounts => {
- this.accounts = accounts;
- }),
- };
- },
+ console.log(storedAccounts.value);
- methods: {
- menu(account, ev) {
- os.popupMenu([{
- text: this.$ts.switch,
- icon: 'fas fa-exchange-alt',
- action: () => this.switchAccount(account),
- }, {
- text: this.$ts.remove,
- icon: 'fas fa-trash-alt',
- danger: true,
- action: () => this.removeAccount(account),
- }], ev.currentTarget ?? ev.target);
- },
+ return os.api('users/show', {
+ userIds: storedAccounts.value.map(x => x.id)
+ });
+ }).then(response => {
+ accounts.value = response;
+ console.log(accounts.value);
+ });
+}
- addAccount(ev) {
- os.popupMenu([{
- text: this.$ts.existingAccount,
- action: () => { this.addExistingAccount(); },
- }, {
- text: this.$ts.createAccount,
- action: () => { this.createAccount(); },
- }], ev.currentTarget ?? ev.target);
- },
+function menu(account, ev) {
+ os.popupMenu([{
+ text: i18n.ts.switch,
+ icon: 'fas fa-exchange-alt',
+ action: () => switchAccount(account),
+ }, {
+ text: i18n.ts.remove,
+ icon: 'fas fa-trash-alt',
+ danger: true,
+ action: () => removeAccount(account),
+ }], ev.currentTarget ?? ev.target);
+}
- addExistingAccount() {
- os.popup(defineAsyncComponent(() => import('@/components/signin-dialog.vue')), {}, {
- done: res => {
- addAccount(res.id, res.i);
- os.success();
- },
- }, 'closed');
- },
+function addAccount(ev) {
+ os.popupMenu([{
+ text: i18n.ts.existingAccount,
+ action: () => { addExistingAccount(); },
+ }, {
+ text: i18n.ts.createAccount,
+ action: () => { createAccount(); },
+ }], ev.currentTarget ?? ev.target);
+}
- createAccount() {
- os.popup(defineAsyncComponent(() => import('@/components/signup-dialog.vue')), {}, {
- done: res => {
- addAccount(res.id, res.i);
- this.switchAccountWithToken(res.i);
- },
- }, 'closed');
+function addExistingAccount() {
+ os.popup(defineAsyncComponent(() => import('@/components/signin-dialog.vue')), {}, {
+ done: res => {
+ addAccounts(res.id, res.i);
+ os.success();
},
+ }, 'closed');
+}
- async switchAccount(account: any) {
- const storedAccounts = await getAccounts();
- const token = storedAccounts.find(x => x.id === account.id).token;
- this.switchAccountWithToken(token);
+function createAccount() {
+ os.popup(defineAsyncComponent(() => import('@/components/signup-dialog.vue')), {}, {
+ done: res => {
+ addAccounts(res.id, res.i);
+ switchAccountWithToken(res.i);
},
+ }, 'closed');
+}
- switchAccountWithToken(token: string) {
- login(token);
- },
+async function switchAccount(account: any) {
+ const fetchedAccounts: any[] = await getAccounts();
+ const token = fetchedAccounts.find(x => x.id === account.id).token;
+ switchAccountWithToken(token);
+}
+
+function switchAccountWithToken(token: string) {
+ login(token);
+}
+
+defineExpose({
+ [symbols.PAGE_INFO]: {
+ title: i18n.ts.accounts,
+ icon: 'fas fa-users',
+ bg: 'var(--bg)',
}
});
</script>