improve user menu
This commit is contained in:
parent
b82172adf6
commit
6ad7d8d33d
@ -9,9 +9,21 @@
|
|||||||
<SearchForm/>
|
<SearchForm/>
|
||||||
|
|
||||||
<template v-if="username">
|
<template v-if="username">
|
||||||
<b-dropdown variant="link" right :text="username">
|
<b-dropdown variant="link" right no-caret>
|
||||||
|
<template #button-content>
|
||||||
|
<b-avatar variant="secondary">
|
||||||
|
<Icon icon="person-fill"/>
|
||||||
|
</b-avatar>
|
||||||
|
</template>
|
||||||
|
<b-dropdown-text>
|
||||||
|
{{ server }}
|
||||||
|
</b-dropdown-text>
|
||||||
|
<b-dropdown-text>
|
||||||
|
{{ username }}
|
||||||
|
</b-dropdown-text>
|
||||||
|
<b-dropdown-divider/>
|
||||||
<b-dropdown-item-button @click="logout">
|
<b-dropdown-item-button @click="logout">
|
||||||
<Icon icon="box-arrow-right"/> Logout
|
Log out
|
||||||
</b-dropdown-item-button>
|
</b-dropdown-item-button>
|
||||||
</b-dropdown>
|
</b-dropdown>
|
||||||
</template>
|
</template>
|
||||||
@ -27,7 +39,10 @@ import SearchForm from '@/search/SearchForm.vue';
|
|||||||
SearchForm,
|
SearchForm,
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState(["username"])
|
...mapState([
|
||||||
|
"server",
|
||||||
|
"username",
|
||||||
|
])
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations([
|
...mapMutations([
|
||||||
|
@ -51,7 +51,10 @@ export default Vue.extend({
|
|||||||
this.username = await this.$auth.username;
|
this.username = await this.$auth.username;
|
||||||
const success = await this.$auth.autoLogin();
|
const success = await this.$auth.autoLogin();
|
||||||
if (success) {
|
if (success) {
|
||||||
this.$store.commit("setLoginSuccess", { username: this.username});
|
this.$store.commit("setLoginSuccess", {
|
||||||
|
username: this.username,
|
||||||
|
server: this.server,
|
||||||
|
});
|
||||||
this.$router.push(this.returnTo);
|
this.$router.push(this.returnTo);
|
||||||
} else {
|
} else {
|
||||||
this.showModal = true;
|
this.showModal = true;
|
||||||
@ -62,7 +65,10 @@ export default Vue.extend({
|
|||||||
this.busy = true;
|
this.busy = true;
|
||||||
this.$auth.loginWithPassword(this.server, this.username, this.password, this.rememberLogin)
|
this.$auth.loginWithPassword(this.server, this.username, this.password, this.rememberLogin)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.$store.commit("setLoginSuccess", { username: this.username });
|
this.$store.commit("setLoginSuccess", {
|
||||||
|
username: this.username,
|
||||||
|
server: this.server,
|
||||||
|
});
|
||||||
this.$router.push(this.returnTo);
|
this.$router.push(this.returnTo);
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
BIconThreeDotsVertical,
|
BIconThreeDotsVertical,
|
||||||
BIconMusicNoteBeamed,
|
BIconMusicNoteBeamed,
|
||||||
BIconBoxArrowRight,
|
BIconBoxArrowRight,
|
||||||
|
BIconPersonFill,
|
||||||
} from 'bootstrap-vue'
|
} from 'bootstrap-vue'
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
@ -38,6 +39,7 @@
|
|||||||
BIconThreeDotsVertical,
|
BIconThreeDotsVertical,
|
||||||
BIconMusicNoteBeamed,
|
BIconMusicNoteBeamed,
|
||||||
BIconBoxArrowRight,
|
BIconBoxArrowRight,
|
||||||
|
BIconPersonFill,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
icon: { type: String }
|
icon: { type: String }
|
||||||
|
@ -9,6 +9,7 @@ import { API } from './api';
|
|||||||
interface State {
|
interface State {
|
||||||
isLoggedIn: boolean;
|
isLoggedIn: boolean;
|
||||||
username: null | string;
|
username: null | string;
|
||||||
|
server: null | string;
|
||||||
showMenu: boolean;
|
showMenu: boolean;
|
||||||
error: Error | null;
|
error: Error | null;
|
||||||
playlists: any[];
|
playlists: any[];
|
||||||
@ -18,6 +19,7 @@ const setupRootModule = (authService: AuthService, api: API): Module<State, any>
|
|||||||
state: {
|
state: {
|
||||||
isLoggedIn: false,
|
isLoggedIn: false,
|
||||||
username: null,
|
username: null,
|
||||||
|
server: null,
|
||||||
showMenu: false,
|
showMenu: false,
|
||||||
error: null,
|
error: null,
|
||||||
playlists: [],
|
playlists: [],
|
||||||
@ -29,9 +31,10 @@ const setupRootModule = (authService: AuthService, api: API): Module<State, any>
|
|||||||
clearError(state) {
|
clearError(state) {
|
||||||
state.error = null;
|
state.error = null;
|
||||||
},
|
},
|
||||||
setLoginSuccess(state, { username }) {
|
setLoginSuccess(state, { username, server }) {
|
||||||
state.isLoggedIn = true;
|
state.isLoggedIn = true;
|
||||||
state.username = username;
|
state.username = username;
|
||||||
|
state.server = server;
|
||||||
},
|
},
|
||||||
toggleMenu(state) {
|
toggleMenu(state) {
|
||||||
state.showMenu = !state.showMenu;
|
state.showMenu = !state.showMenu;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user